これまでのエンジニアのキャリアと、これから。
はてなブログタグのお題に「#エンジニアのキャリア」なるものがあるんだってさ。僕も一応、エンジニアではあるので書く権利はあるのだろう。しかしまぁ、僕はエンジニアとは言えど、中小企業の社内SEもどきのプログラマであり、他のつよつよプログラマの様なカッコいい話は書けない事は必至である。そこんところを何とかごまかしごまかしやってきたのが僕のキャリアの全てであり、たいした将来性も無さそうなのが今の悩みである。
一応ですね、僕は地方のとある業界でwebシステムの開発をずっとやってきているから、そういうweb開発での仕事のやり方の手順は分かってる。一から社内の入力システムも含めて、webシステムを3個ばかし設計から1から一人で作り上げた事はある。弱小中小企業の社内SEではあるあるかもしれないが、僕は体系づけられたチーム開発というのを経験したことがない。一応、一度だけ派遣社員をやってみて大規模ウォーターフォールでの開発に参加した事もあるが、基本的には一人で仕様の聞き取り、設計、コーディング、保守まで全部やるという「一人アジャイル」で現場を回してきた。
ある意味では僕はフルスタックエンジニアではないか?と思うのだが、フルスタックエンジニアというのは、フロントエンドやらバックエンド関係なしに全ての仕事を一人でぶん回しながら社内のIT仕事全般をやっちゃう人という事だから、やっぱこれは社内SEの都合のいい言い換えだよね。
フルスタックエンジニアとは、システム開発やウェブ開発などのエンジニアリング業務において設計から開発・運用まで全ての行程を手掛けることができるエンジニアを指します。
通常は担当毎にパートを分けてチームで開発するような複数の技術分野を一人で担当できるためマルチエンジニアと呼ばれることもあります。
さて、この条件で言うならば自分はフルスタックエンジニアだよ。web開発がメインのスキルだけど、サーバ保守もやったことあるし、最近はスマホアプリの開発をやってる。基本的に上司から「やれ!」と言われれば、全部、気合と根性とググり力で現場に飛び込み、無理やりOJTで形になるまで仕事を体で覚えるという方法で今まで生きてきた。
匿名文化圏の住人だし、身バレが嫌なので、具体的な今までの実績などを書くことができないけど、プログラマとしてのキャリアは15年ぐらいはありますね。元々新卒の時から中小企業の社内SEだったし、その時の仕事も、社内で使われてるPCの保守管理から、自分でDebian Linuxをインストールする所から含めてLAMPシステムの構築やったりとか、PhotoShopでwebデザインを無理やりでっち上げたりとか、XOOPSをカスタマイズしてwebシステムを構築したりとか、そんな感じで仕事をやってきている。
「一人アジャイル」というのは僕の造語なんだけど、一人で営業などと殴り合いながら要件を聞き取りシステムの仕様を決めて、一人でDBやら画面遷移やらの設計をでっち上げて責任者と交渉して予算やら工数の見積もりを付けて、一人でフロントエンドもバックエンドも関係なく全部コーディングして、完成したらそのシステムの担当者として客からのクレーム対応も含めて保守管理をするという開発スタイルである。中小企業でのシステム開発というのはほとんどこのスタイルじゃないかと思う。今まで、3か所ばかり中小企業を渡り歩いて来たけど、スクラムとかTDDとか現代的なチーム開発をしている現場とは巡り合った事がない。もうそろそろ、30代後半でジョブホッパーもできない年齢になってるから、この現場で身を埋めようかとも考えているけど、今の現場もこういう「一人アジャイル」のスタイルで仕事をやっている。
これから将来的にどうしよう?と言うのは今の悩みですね。ひとまず、現時点で非正規なので、マネジメントとか管理職方面にチェンジするのは無理筋だと思っているので、技術をひたすら勉強してスペシャリストとして自分の立ち位置を作って行くしかない。
「プログラマは一生勉強である」とは何度も繰り返し主張してきた事であり、こちらの方で個別にエントリーにしてある。
新たな新技術を勉強したところで陳腐化してしまうと役に立たないので、古くならないアルゴリズムやコンピュータサイエンスの知識を中心に勉強していくのが良いかもしれないね。情報処理技術者試験が馬鹿にできないなと思うところがここで、あれをちゃんと勉強して資格取得しておくと業務でも使うコンピュータサイエンスの知識を身に着けることができるのである。
僕のこれからのキャリアで必要になりそうなのは、陳腐化しない知識であると思うので、上記のリンク先の知識を中心に勉強した方が良さそうだ。