最近はエンジニアの採用面接をする機会が多く、自分より若い人たちとエンジニアのキャリアについて話すことも増えました。
そこで、せっかくなので自分のキャリアについて振り返りつつ、思ったこと・わかったことなどを書いてみたいと思います。
一エンジニアの個人的な経験をもとにした話ですが、転職したいけど迷っている・今後のキャリアパスについて悩んでいる・自分のキャリアについてどう考えたらよいかわからない…といった方の参考になればと思います。
私の簡単な経歴
経歴:大学(情報系)→メーカー系の大手SIerで8年ほど勤務→paiza(ギノ)に来て3年半ぐらい
自分が経験した理想のキャリアとのギャップ
まず、私がなぜこのようなキャリアになっているかを書きます。
新卒で就活をしていたときの企業選びは下記4点を重視していました。
1.ワンストップで要件定義からリリース、運用・保守までができること(なんか幅広く経験できたほうが将来役に立ちそうだと思っていたので)
2.さまざまな業種の顧客がいること(これも、幅広い知見を得られたほうが将来役に立ちそうだと思っていたので)
3.開発をし続けられること
4.技術者を大切にする会社であること
では実際に就職してみてどうだったのか、という話ですが、1と2は非常にマッチしていたと思います。
実際に、ウォーターフォール開発におけるすべての工程、ほかにもインフラ周りやサーバ開発を経験し、またさまざまな顧客の案件を担当することで、幅広い知見を得ることができました。
ついでに言うと、あまり会社のよいところではないですが、大小さまざまなプロジェクトが常に炎上していたので(…)、そこに率先して助っ人として飛び込んでいったことで、自分を成長させることができたと思います。
ちなみに炎上プロジェクトの助っ人に行っていたときの具体的な話はこちらの記事に書いてあります。
ただ、3と4についてはギャップがありました。
前職ではPG→SE→PL→PMというキャリアパスが絶対的なものでした。
企業側は最終形態となるPMを求め、用意されたキャリアパスもどうやってPMを育てるかに焦点が当たっています。なぜそんなにPMが必要かというと、どうやってよいシステムを効率よく作るかではなく「下請けにどうやって開発させるか」が重要になっちゃうようなビジネス構造だったからです。
もちろん、自分はPMになりたい、そういう仕事が好きでやりたい、という人にはとてもよい環境だと思いますが、ずっと情報系の勉強をしてきて、今後もずっと開発をしていたい私にとっては「技術者よりもPMが求められる」という状況にギャップがありました。(個人的にはPMは技術者ではないと思っています)
業界的な背景
PMが求められる背景について、もう少し詳しく説明します。
日本のSIerのほとんどは、多重下請け構造と呼ばれるピラミッド型のビジネス構造をしています。この構造では、大きなシステムを開発をする(=たくさんの人員を抱え込む)ほど、より大きな売上をあげることができます。(人月商売ですね)
この人月商売のビジネスモデルは、一次請け一人に対し、複数人の二次請け・三次請け…n次請けのプログラマーをつけることで利益を増やす、ピラミッド構造となっています。
そのため、一次請けの企業がより大きな利益を得るには、いかにたくさんの人を下につけられるかが重要となります。たくさんの人をまとめあげて、QCDを守れるPMが重宝されるわけです。
もちろん、誰もが優秀なPMになれるわけではありませんから、一次請けである大手SIerは、とにかくPMをたくさん育成しようとします。
このようなビジネスモデルの場合、たとえば技術者として優秀で、一人で要件定義からインフラ構築、アプリ開発からテスト・運用保守までこなせるような人は、スキルを発揮しづらいと思います。
生産性が高くて優秀な人は、作業が早く終わる。作業が早く終われば、余力があると思われて、ほかの仕事をやらなければならなくなる。
たとえば、100個のパーツにわかれたシステムを5人で作るときに、5人がきっちり20ずつ分担して作るかというとそんなことはなく、デキる人が60を担当して、あとの4人は10ずつしかやらない…みたいな状況は非常によくあります。
これで、60の人がちゃんと60の分だけ評価されるかというと、残念ながらそんなことはありません。
時間換算の人月商売では、早く効率よく(=安く)成果物ができあがってしまったら、利益が下がって困るので。いいように重宝はされても、優遇されたり正当な評価を受けるのは難しいと感じます。
しかし、技術の勉強をして生産性を上げても、楽にならないどころか仕事が増えるばかりの環境にいると、どんな人でも自分の技術を向上させるモチベーションを保てなくなってしまいます。
そもそも技術者として開発をし続けたいのであれば、むしろ生産性を上げること、勉強してスキルを向上させることをよしとするチームに身を置いたほうがハッピーでしょう。
ちなみに、私はPM的な業務が嫌いというわけではないのですが、やはり技術屋として開発をしていたいという思いがあります。特に、新しい技術を取り入れて、今まで面倒だったものが楽になったり、早く効率よく品質のよいものを作ってユーザに喜んでもらえることは、この仕事をしていてすごくやりがいを感じるポイントです。
今後のIT業界を見据えたキャリアの考え方
今後この業界、この仕事はどうなっていくのでしょうか。開発業務の種類としては、大きくわけて以下の3つが存在すると思います。
1.前述のようなピラミッド構造でおこなわれる基幹システムの構築・エンハンス・リプレース
2.パッケージなどの製品開発
3.ITを使った新しいサービスを提供するためのシステム開発
1は、今と変わらず大手SIerの得意分野です。ウォーターフォール型の大規模開発が適したシステム開発で、公共系や金融系などの大きなシステム開発・リプレース案件を取り扱います。
2は、企業が独自に開発したアプリケーションソフトなどのパッケージを販売するビジネスで、単純に考えると一度作ったら売れば売るほど利益になります。実際には、売り続ける(利益を得続ける)ためには顧客のニーズに合わせた改善を続けていく必要があるでしょう。
3は、まだこの世に存在しないようなサービスや、既存の課題を解決できるようなサービスを開発して、その利益料などで利益を上げていくビジネスです。
かつては、IT業界といえば1の割合が非常に多かったですが、今後は2や3のような開発も増えていくし、システム開発と言えばそのようなビジネスが主流、という流れになっていくのではないかと思います。
1の場合、最初からやりたいことがある程度固まっているため(固まっていない場合もありますが、一応これを作りましょうという契約が締結されてから走り出すわけなので)、ウォーターフォール型開発で、計画を立ててその通りに遂行することが重要視されます。
しかし2や3では、何よりもパッケージやサービス自体が持っている価値が重要となります。この場合、最初から要件が固まっているわけでもなければ、リリースしてみないとどこの誰がユーザーになってくれるかもわかりません。また、リリース後もその価値を高めていくための改善が必要となります。
2や3のような開発を実行するには、コピペでなんとなく動くものを作るとか、本当にプログラミングの基礎の基礎だけ知ってるみたいな表面的な知識だけでは足りません。
私見ですが、少なくとも
- ユーザーがどうすればもっと便利になるか、どんな機能が必要か、考えて提案できる
- 実際にそのサービスを提供するシステムの土台(OS・ミドル・ネットワークなどなど)を構築できる
- さらにその土台にのせるプログラムが書ける
- ただ書くのではなく、改修が必要になったときにすぐ対応できるようなプログラムアーキテクチャを保ちつつプログラミングができる
- さらにシステムが運用に必要な機能(冗長化やバックアップ&リストア、アクセス解析などなど)も開発時に盛り込める
…などといった能力が必要になるかと思います。
ITエンジニアにとって大切なのは、「どこの会社で働くか」ではなくて「何を作るか」だと思います。
今の会社にとらわれるのではなく、一度これから自分がどんな仕事をしたいか、どんなものを作りたいかという観点でキャリアパスを考えてみるのもよいのではないでしょうか。
まとめ
前述した通り、自分の社会人人生を振り返ってみると、よかったところもあれば、ギャップに思うところもありました。
大きな組織や構造を自分の力だけで変えるのは難しいですが、転職やキャリアのように、自分の行動で変えたり改善したりできる部分は、どんどんやっていきたいと思います。
別に転職をすすめているわけではないですが(考えなき転職は失敗を招きます)、みなさんもぜひ
- 自分は今後どのようなエンジニアになりたいのか?
- どんなシステムやサービス、技術にかかわっていきたいのか?
- そのようなエンジニアになるにはどうすればよいか?今の自分には何が足りないのか?
などについて考えてみてください。
ちなみにpaiza転職は、エンジニアの技術力がきちんと評価されて、スキルを生かせる企業が探せるプラットフォームです。
paiza転職では、自分のプログラミング力が他社で通用するか腕試しができるエンジニアのための転職サービスです。プログラミングスキルチェック(コーディングのテスト)を受けて、スコアが一定基準を超えれば、書類選考なしで複数の会社へ応募ができます。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら