こんにちは。最近は、閑話休題的に気分に任せていろいろなジャンルの記事を書いていますが、今日はキャリアについてです。
私は、新卒で日本の大手独立系SIerにアプリケーションのエンジニアとして入社しました。そして、6年ちょっと勤めた後、いろいろと思うところありアメリカのクラウドの会社に転職しました。
その経験も踏まえつつ、本日は私が思うSIerで働いて良かったこと/苦しんだことをまとめつつ、どんな人に向いているのかをまとめてみたいと思います。あくまで一般論ではなく私個人の経験に基づいた情報として、とらえていただければと思います。
思いつきでいったんざざっと書き並べてみましたが、今後時間があるときにもう少し文章推敲します、、
Contents
私のバックグラウンド
以下、箇条書きですが、私のバックグラウンドです。
- 旧帝の大学院卒
- 専攻は材料科学。IT技術は必須授業で習ったのと、研究でシミュレーションプログラムを動かすためにC言語のプログラミングをちらっとくらい。
- 就活当初IT業界に特別興味があったわけではない。鉄道やガス・商社など、広く社会のインフラをよくしていくことに興味を持っていて、ITもその中の一つで考えていた。
- 新卒入社を決めた会社は、国内最大手SIerの1つ。いわゆる一次受けのSIerです。
- エンジニアのロールとしてはITインフラの設計・開発・運用を専門とするテクニカルエンジニアと、アプリケーションの設計・開発・運用を専門とするアプリケーションエンジニアの2つがあったが、私はアプリケーションエンジニアとして入社。
SIerの(アプリケーション)エンジニアとして働いて良かったと思うこと
以下に私が新卒から6年間SIerのアプリケーションエンジニアとして働いてよかったと感じる点をまとめました。
若くからシステムの上流設計に携わることができる
これぞ、SIerの最高の醍醐味なのかなと思います。
SIerで働くアプリケーションエンジニアの業務の中心はシステム開発における上流工程(要件定義や概要・基本設計、品質を保証するための総合テストやユーザ受入テストの計画など)になっていきます。
お客様のビジネスの目標のために、どういうシステムがあるべきか、どういう機能があるべきかを考えるわけです。そのため、お客様のビジネスの目線から物事を考える姿勢が強く養われました。
また、これを若いうちから(早ければ2年目頃から)経験できるのはキャリアの大きな財産になると感じました。
転職して会社の外に出てみると、ITエンジニアとしてこうした技術目線とビジネス目線とのバランス感覚のある方は意外に多くないことに気づきましたので、自信を持って良いと感じました。
大規模でミッションクリティカルなシステムの開発・運用に携わることができる
SIerでは、様々なお客様の大規模なミッションクリティカルなシステムの開発・運用に携わることができます。
ミッションクリティカルで高い性能・可用性が求められるシステムほど、難しい開発になってしんどいときもありますが、それに反比例して得られる実用的な知見は多くなっていくと感じます。
こうした知見が設計スキルの向上に役立ちました。
また、このようなシステムは大規模がゆえに、大人数で開発を行っていることが多いため、多くの開発メンバーを束ねてゴールを達成するためのプロジェクトマネジメント能力も身に付きます。
お客様と直接会話できる機会が多い
上記と関連しますが、お客様と直接会う機会が多いため、ユーザであるお客様と対話して要件をヒアリングしながらシステム設計を進められたことで、これまたお客様のビジネスの目線にたった設計のスキルや、顧客折衝の力が養われました。
なお、お客様と対話できる機会の多さは、担当するシステムの性質などによっても変わったりしました。
例えば、多くのユーザ企業が共同で利用して、かつ大規模なシステムだったりすると開発部隊が各ユーザ企業から個別に要件をヒアリングするよりも、社内で顧客業務を熟知した営業部隊が設置され、そうした部隊が要件のヒアリング、とりまとめと取捨選択を行うようなケースもあるかと思います。こうした場合には、開発部隊は社内の営業部隊と会話するようになったりします。(社会人3年目くらいまでは、そうでした)
が、個社向けに開発するシステムだったりすると、開発部隊が直接お客様と対話しながらシステムの改善を行っていく場合もあるため、会話の機会は増えたりします。私の場合、4年目以降でこうした機会を得ることができました。
その気になればいろいろな業界のお客様の案件に携われる
SIerは、さまざまな業種のさまざまなお客様のシステム開発を請負います。
なので、その気になれば、部署異動等を通して興味のある業界のシステム開発に携わることもできる点は魅力だと思います。
ただ、「その気になれば」と書いたのは、特に何も行動しないと1つのシステムを長期間(5~10年ほど)担当していくキャリアを歩むことにもなりやすいという点です。この点において積極的に行動できる方は、会社全体としてみると幅広い知見とお客様をもっているSIerの利点を最大限引き出すことができると思います。
給与が良い
きれいな話ばかり書いてもあれなので、最後に現実的な点についても。
大手のSIerとなると、ITエンジニアの中でも高額の給与をもらえると思います。特に、私が勤めていた会社は、若いうちから大きな仕事を任せてもらえる分若いうちの給与増加曲線の傾きがなかなか大きかったと感じます。
なので、転職する際には、20代後半とキャリアの若いうちでも転職先での提示年収のベースが高くなりやすい利点があると感じました。
SIerのエンジニアとして働いて苦しんだこと
以下の悩みがきっかけで、私は転職する決意をしました。
技術力に自信がある、と言えない
自分にとってこれが一番大きな悩みでした。はい、根本的には自分の技術指向が強かったことが一番のギャップにつながったわけです。
アプリケーションエンジニアはビジネスアナリスト的要素が強くなっていく
そもそもアプリケーションエンジニアは、キャリアを積むにつれて、お客様のビジネスを理解して、その目的を達成するために必要なシステムや機能の提案を行う、ビジネスアナリスト的な要素が強くなっていくと感じました。
ので、顧客業務理解や要件定義スキルなどはぞんぶんに伸ばしていくことができると思いますが(これはこれで非常に価値の高い重要なスキルなんですが)、技術観点(新技術導入、アプリケーションが動作しているインフラ環境の知見、インフラ構成のアーキテクト的な知見、ソフトウェアエンジニアリング的な知見)での検討機会は多くないです。
少し補足します。
新技術導入・アーキテクチャデザインの経験
所属する部署や案件によってピンキリだということは言添えておきますが、SIerでは、就活で華々しく宣伝されているような全く新規のシステム構築や新技術導入に携われる機会は多くないと感じました。
多くのリソースは、過去に構築した巨大なシステムの維持・保守開発に割り当てられます。そのような場合は、アーキテクトの設計や技術選定を自ら行うことがなく、既存のシステムの思想に沿っていかに新機能を載せるか、という観点での設計を行うことが多いです。
ので、業務を通して新しい技術やアーキテクチャについて真剣な検討をする機会はほとんどないと感じました。
ソフトウェアエンジニアリングの経験
アプリケーションエンジニアの場合、コーディングは1年目に、研修や工程理解のために半年間ほど経験する機会がありますが、2年目以降は業務でコーディングすることはほぼなくなりました。
どちらかというと、設計書やテスト計画を書いたり、コードやテスト結果のレビューをしたりといったことが中心になっていきます。
また、部署の規模や段階にもよるかと思います。立ち上がり直後の小規模な部署だったりすると、自分でより多くの工程を担当してコーディングをする機会もあるでしょうが、規模が大きくなって高度で生産性が追求された組織になっていると、コーディングはオフショアなどで実施するために、コーディングの機会はほとんどないでしょう。
インフラエンジニアの場合、人によっては運用自動化やPoCのためにコードを書きまくっている同期もいましたので、そちらの方がコーディングの機会は多いかもしれません。
と、こんな感じの業務だったわけですが、私は20代の頃は、
- エンジニアたるものまずは技術に明るくありたい!
- 色んな技術をどうビジネスに活かしていけそうかが見えていて、お客様を技術の観点からもリードしていける人になりたい!
- 将来自分が起業したり、ベンチャー企業などで新しいサービスの開発をまかされたときに、アーキテクチャデザインを書いて示せるなど、技術力での存在感を
と思っていましたので、ここに自分の目指したい方向性と実際業務との大きなギャップを感じました。もちろん、技術がちゃんとわかった上で、こうした上流工程に携われるととても楽しいだろうなと思いましたが、そうした土台のないまま最初から上流工程ばかりを担当していることに違和感がありました。
なぜそんなエンジニアとしての技術的な土台がすっぽり抜けた(と私だけ感じていたのかもしれないですが)状態でのキャリアの歩み方になってるのか。
これは単に仮説ですが、上司の若手時代との環境の違いもあるのかなぁと感じていました。
上司の時代では、いまほど分業も進んでおらず、また今動いているシステムを一から作っていた頃ということもあり、若手のうちは自らがバリバリと手を動かして開発していたと仰る人も多く、そのため技術も語れてビジネスも語れるスーパーマンが多いと感じました。
一方で我々の世代では、既に分業も進んで高度な開発体制となっている中で、先人が築き上げて既に成熟したシステムの開発を引き継いで、いきなり上位設計&開発のマネージメントという役割からスタートするため、システムの思想や、技術を自分のものとして語れるようになることが難しい環境だと感じました。
はい、というわけで、結局のところ私は「技術に自信を持てた気がしない!」という悩みを払拭しきることができず、転職を検討するようになりました。
もちろん、そこを補うために、独学で書籍を買って勉強したり、スクールに通ったりはするわけですが、本業で日々ハードな課題と向き合っているエンジニアの方たちがいることを考えると、どうにも彼らとも肩を並べて語れる!という自信が持てませんでした。
じゃあSIerに入ると技術に明るくなるチャンスがないのかというと決してそうではなく、例えばテクニカルエンジニアのキャリアを選択する、といった方向性もありえるのかなと思います。
大半の方が進むPMキャリア路線を魅力的に感じられなかった
これは、上に書いた、「技術に自信がない」状態だったからこそだとは思います。
SIerの場合、多くのエンジニアは、キャリアを積むにつれて、より大規模なプロジェクトのリーダー(プロジェクトマネージャー)の役割を任されることが多くなってくるかと思います。
自分の場合、土台と考えていた技術力に自信が持てない状況で、プロジェクトマネージャーとしてのスキルを高めていくばかりの将来を魅力的に思うことができませんでした。
自分の中で何か自信を持てる武器(私の場合は技術)があったうえで、より大規模なプロジェクトを成功に導くために尽力することは、大いにやりがいを感じられたんだろうなと思いますが・・
SIerの(アプリケーション)エンジニアに向いている人
ということで、ここまでの話を踏まえると、私は指向性のような人がSIerの(アプリケーション)エンジニアに向いているのかなと感じます。
- 技術のスペシャリストよりもビジネスアナリストとしての方向性に魅力を感じる人(技術のスペシャリストになりたい、という方はアプリケーションエンジニアではなく、テクニカルエンジニアなら良い選択になりうると思います)
- 自分で手を動かしてモノをつくるより、大きなモノをつくるためにいかに組織・チームを動かしていくかに燃えれる人
例えば、将来的には上記のような大きなビジネスを大きなチームで動かしたいと考えていて、ただ直近はその土台になるような技術・業務の専門性を身に付けたい!と考えるような人であれば、最初の会社としては選ばない方が良いのかもしれません。例えば、技術力であればソフトウェアエンジニアや、ビジネスであれば事業会社の業務部門などで経験を積んだ方が力が付きやすいと思います。
こうした場所で経験を積んで自分の言葉で技術・ビジネスを語れるようになった上で、改めてSIerに転職すると、より大きなチームで、多くの顧客の支援ができて、とても楽しめる環境なのかなと感じます。
転職後記
現在、転職して約2年になります。ズバリ、転職は正解だったと感じるか?
・・・
めちゃめちゃよかったと感じます。後悔はありません!
そもそも自分は、「技術力の強みを作りたい」(=新しい技術、例えば機械学習に明るくて、この技術を使うとこんなビジネスの問題を解決できる可能性がありますよと言える、とか、新しくアプリケーションを開発するとなったときに、インフラやアプリのアーキテクチャの絵を描ける、など)と思って、クラウドの会社にエンジニアとして転職しました。
2年を経て、まだまだ勉強することだらけですが、クラウドが提供する最新の技術を常にキャッチアップして学びつづけることができていて、この自信は大きくついてきていると感じています。
一方で、SIerのエンジニアで良かったと思うことで列挙した経験もとても活きていて、SIerのエンジニアとしてキャリアを経たことの後悔もありません。(悩んだままもっと長い期間在籍していたら後悔もありえたかと思いますが)
SIerへの就職・転職を考えられている方の参考に、少しでもなれば幸いです!
おしまい
私の例ですが、年次ごとにこんな経験をしました。2年目からは基本的にリーダで、海外の開発チームなどをとりまとめていきます。