SIer退社しました。

2013/12/31を以って、某SIerを退社しました。
SIerには2010/4/1に新卒として入社して以来、3年9か月お世話になりました。
2014/1/1より、Web系企業に入社しプログラマとして働きます。

このタイミングで転職を決意した理由と未練を記載しておきます。
※以下、退社した某SIerを"A社"、新たに入社したWeb系企業を"X社"と記載します。
※一部、話を簡潔にするために事実を単純化している箇所があります。

転職理由

プロジェクトマネージャではなくプログラマになりたい。

 A社に入社した当時(社会人1年目)は、プログラマ(以下、PG)はさっさと卒業してプロジェクトマネージャ(以下、PM)になりたいと真剣に考えていました。その当時はPMがスケジュールを立てて、そのスケジュール通りにPGが実装するというイメージを持っていたと思います。しかし、実際に働いてみるとスケジュールを立てたれるのはPMではなくPGだとわかりました。
 A社では一貫してPGの肩書で働いてきましたが、スケジュール管理、スコープ管理、アサイン管理、要件管理、チーム管理、新人教育などなど、様々な事を経験させていただきました。この経験を通して実装を理解できるPGがプロジェクトに関わるすべてのことを管理できる状態がベストだと考えるようになりました。
 この結果、PMを目指すのではなく、いろんな事ができるPGになろうと考えるようになりました。 

もっと開発したい。

 いろんな事ができるPGになるために、まずは「一人前のPG」にならなければなりません。PGとしてのしっかりとしてスキルを身に付ける前に幅を広げてしまうと、すべてのスキルが中途半端なままになってしまいます。それはエンジニアのキャリアを考えた場合にハイリスクだと考えました。
 会社の方針もありA社ではPGとして半人前なままでもPMへの階段を歩み始めていました。

一人前のプログラマとは?

 現段階では「保守性・拡張性に優れたシステムを構築できる。」プログラマが「一人前のPG」だと考えています。世間一般では「システムアーキテクト」と呼ばれる役割だと思います。

Linux等のOSSを使う機会が少ない。

 転職活動を通じて、LinuxなどのOSSの経験が募集要項の必須要件の中に記載されている割合が非常に多かったです。全体の9割位だと思います。ただ、若い内は必須要件を満たしていなくてもチャレンジ精神をアピールすることで選考を通過することができます。私の場合、そのようなケースが多かったです。もちろんプライベートでOSSに取り組むこともできます。しかし、ワーク・ライフ・バランスの観点から、業務でOSSを使う事も大切だと考えています。
 また、備忘のために必須要件に書かれていた割合が多かったと思う要件TOP3を記載しておきます。
 1.Linux経験
 2.Java経験
 3.PHP経験

アジャイルな開発がしたい。

 日々、業務をこなす中で「アジャイルではないな」といろいろなところで感じる事がありました。その中でも一番そう感じていた点は「イテレーティブではなくインクリメンタルに開発していた点」です。
 具体的には、10個の機能が必要なシステムを構築するプロジェクトで、10個の機能が実装できるまでお客様に見せないということです。
 「イテレーティブな開発」を「インクリメンタルな開発」変えるためには、SIerだけではなく、お客様の仕事の進め方も変えなければならず、大変なのは確かです。しかし、インクリメンタルに開発を進めてしまうと、お客様からのフィードバックがなかなかもらえずに見当違いで自己満足で無駄な実装が増えてしまいます。

システムの評価が難しい。

 A社では「この機能追加はお客さまにとってどれ程の価値があるのだろう。」「もし、価値がないのであれば引き受けるべきではないのではないだろうか。」と考える事がよくありました。
 私が所属したチームが担当するシステムはほとんどが社内システムでした。社内システムは企業のメイン業務を支えるシステムのため、ROIなどの定量的な指標で評価することは非常に難しいです。一方、Web系企業ではそのシステムが企業の競争優位性を生むのでROIなどの定量的な評価指標はいろいろあります。このように定量的な評価を行えるシステムの開発を行いたいと考えるようになりました。

エンジニアにとって他社パッケージベンダーはハッピーではないかもしれない。

 私が所属したチームは他社パッケージを扱うチームでした。他社パッケージベンダーとして目指すべきはそのパッケージの機能に合わせて業務を変えていき、出来るだけパッケージの拡張開発は行わないことです。
 しかし、日本の企業はなかなか業務を変えようとしません。その結果、パッケージの機能をあまり使わずに多くの機能を拡張開発で実装してしまいます。
 この点はお客様のコスト面で課題なのは明らかですが、パッケージベンダーの人材教育面でも課題になります。
 パッケージの拡張開発は、パッケージ特有のスキルが求められます。このスキルは非常に奥深いものですが、汎用性は非常に少ないです。社内ではパッケージ特有のスキル向上が求められますがそのスキルを高めてもほとんど市場価値が上がりません。
 変化が多いこの時代では、このような環境に優秀なエンジニアを定着させることは非常に難しいと思います。

未練

SIerで働きたい。

 SIerはお客様と協力してシステムを作り上げていきます。お客様はシステム開発の事を理解していないことが多く、お互いのことを理解し、協力関係を築きあげることは大変です。ただ、大変だからこそお客様とシステムを作り上げていく過程は非常に楽しいですし、良い関係を作りよりシステムを作り上げた時の満足度は非常に大きいです。社会に与えるインパクトもWeb系よりも大きいかもしれません。
 明確な理由はありませんが、私はSIerとして社会により良い影響を与えるシステム開発を行うほうがカッコイイし誇り高い事だと感じています。しかし、SIerには過去の慣習やビジネス、契約などの問題で理想を実現するには難しい環境です。
 私はSIerから逃げたのかもしれませんが、今回の判断は間違ってないと確信していますし、またSIerに戻るかもしれません。

最後に

その他細々としたものもありますが、書き留めておきたいものはこの程度です。
結果としてA社を退職することになりましたが、A社ではやりたい事をやりたいようにやらせて頂けたと思いますし、良い上司・先輩・後輩とも出会えたと思いますし、非常に感謝しております。

未練のところでも記載しましたが、SIerでまたやりたいという気持ちもあります。
将来、SIerに戻ることになれば良いご縁があれば幸いと思っています。