負け犬プログラマーの歩み

負け組だった人間が今一度PGとして人生の飛躍を模索するも加齢と共に閉ざされる未来に直面しているブログ。

ベンチャー系行ったらレベルが高すぎて辛い。

今の職場で働きだして少し経つが、既にエンジニアとしての自信を割と失っている。

俺は自分のことを少なくとも「そこそこのエンジニア」と思っていた。でも今の職場では、俺は下から数えた方が早い。「技術は有るが人間的にはクソ」と自負していた俺は今「技術者としても人間としてもクソ」となりかねない事態に陥っている。

言い訳の材料はある。周囲のレベルが高いのだ。

自分で言うのもなんだか経歴は豪華な人が集まっている。コアメンバーは最高学府(あえて誤用)卒はザラだし、某世界時価総額トップとか某金融会社とか某大手ゲーム会社に居たとか、某ソシャゲーの幹部とか、あのフリマサービスを作ったとか、別会社の元CTOでしたとかはたまた現役CTOやってますとか集えば、下流エンジニアも皇帝、四天王、10傑(俺含まない)などの超一流だ。

文系で有名企業どころか正社員歴すらなく、名のしれた商品やサービスに協力会社の人間としても一度も携わったことのない俺のようなカスが少し場違いになるような感じの面子が揃っている。もちろん最終的には人は学歴や経歴ではなくて中身だけれど、俺はその中身で完敗しており、それが今日に至るまでの学歴や経歴に反映されているのだろう。

俺はスキルシート的には悪くない。C#JavaScriptRubyVB(アルファベット順)なら割といける。そこにJavaPerlPythonPHPの実務経験も有る。C/C++ScalaやGoも個人で書いている。フロントもDBも平均的なスキルは有るし、インフラの経験は積んできている。有名OSSにたまにコミットしてchange logに名前が載ったりとかもある。準フルスタックエンジニアぐらいは名乗ってもいいだろう。

この程度のスキルが有ると、SIerの人間や転職エージェントからは「随分といろいろな経験をされてますね」と言われるし、実際にこれまでの現場で自分より仕事ができる人に(キャリア初期以外は)出会ったことはなかった。

しかし、このレベルでベンチャーだと、凡庸すぎて埋没するレベル。はっきりいって並以下だ。

過去にSIerからWeb系(個人的にはこの曖昧な言葉が嫌いで、実態としてはベンチャーとか少数精鋭受託企業の方が近いのでは)に移って似たような経験をした人は珍しくないようであるが、想定したよりもずっとレベル格差が有った。

「できるエンジニア」というのを久しぶりに(つーか初めて?)目の当たりにして思ったことは…

とにかくコーディングが早い。

GitHubのグラフは残酷だ。同時期に参加した同僚にコミット数もコード量も1.5~倍の差をつけられてしまった。コミット数に関しては俺はrebase厨で、むしろ対しては「コミット漏れ。。。。」みたいなクソコミットをoriginに残すなと言いたくなるのだが、コード量は言い訳できない。

別にSIerの低スキルエンジニアみたいにコピペ厨や「ステップ数が多ければ多いほどいい」という考えの奴がいるわけじゃない。普通に書いていて俺と1.5倍の差がつくのだ。はたからみれば2倍以上に見えてると思う。

そしてコードも丁寧だ。「動けばいいんだ」みたいな拙速主義は見られない。普通に良いコードを即日仕上げてくる。

とにかく仕様把握が広くて早い

「●●に□□したらどうなるだろう?」という風にアプリやサービス全体に対する影響を教えてと言われても、俺は正直、自分が過去に書いた部分、もしくは自分が深く調べた部分しか自信をもって瞬時に答えられない。

ところが、俺と同時期に参加した同僚はいつの間にか既存コードの解析を終えていて即答できるようになっている。だから最近は何か重要な変更を任せるときは、俺ではなくてその同僚に振られる事が増えてきた。その判断は実に妥当で正しい以上、俺は何も言えず、妬むことすらできない。

とにかく経験・知見豊富

俺は自分のことを「準フルスタックエンジニア」と言ったが、知らんことの方が全然多い。そもそもこの世界は膨大で日々変遷しているから、全てを知っている奴なんていない訳だが、この職場に入ってからは、自分がいかに無知なのかを痛感する事が増えてきて、準をつけてもフルスタックなど到底名乗れない事に気づいた。

例えばGitHubに連携するCIサービスを選定するとき、「どれがいい?」と訊かれても俺はTravis CIぐらいしか知らないから、とても人に推薦なんてできない。が、周囲はCodeshipがあーだのCircleCIがあーだの、はたまた名前すら聞いたことのないサービスがどーだので盛り上がる。

その年齡でどんだけのプロジェクトを掛け持ちすればそんな知見が貯まるのかと呆れるぐらい物を知っている。

とにかく関わる

「ここからここまでが自分の担当領域」と線引きする事は大事だ。特に保身の観点から見れば、余計なことに首を突っ込んでも何か問題が起きたら厄介な事になる。しかし、本当に優秀な人というのは、他人の仕事にも敢えて首を突っ込むものなのかもしれない。自分の知識と能力で助言を与えられるならば。

例えば、slackでメインじゃないチャンネル、自分は#webがメインなところ、あくまでログを追う程度の#appにて「βの最新版がリリースされました」と告知されたとき、ソースコードをビルドしてインストールする人はどれぐらいいるんだろう。少なくとも俺は余裕がないとき以外はやらないし、ましてiOSアプリは専門外だから尚更。

しかし同僚はいつの間にかやっていて、いつしかUIについて口出しするようになってしまった。


…で、俺はどうしたら彼らのレベルに到達できるのだろう。時が解決してくれるという希望的観測もできる。なんせ俺はプログラミングを始めて5.5年程度だから、文系新卒でエンジニアになった人間に換算したら27歳前後だ。若くもないが、エンジニアとしてはまだ少し未熟で経験不足かもしれない。

しかし同時に「モノが違う」という諦めもまた出てきてる。恐らく彼らとは、仕事に対する情熱、プログラミングに掛ける愛情、ソフトウェアのものづくりに注ぐ想いの量が全然違うんだろう。実際、俺はもうプライベートではあまりプログラミングはしなくなってきている。これでは差を埋めるのは難しいと思う。

「好きこそものの上手なれ」という格言があるように、やはり人は「好き」を力に変えられると強い。俺は大学は単純に名前と偏差値で選んだし、卒業後にエンジニアになるまでは専攻と無関係の適当な異業種で口糊を凌ぎつつ、資格試験を受けていたりした。そんな人間が理工学部を出て、卒業してから一貫とIT業界で働いてる人に勝つには、彼らが今まで注いできた愛情以上に俺がプログラミングを愛する必要があったんだ。


「技術で生きる」という事の意味を知りたければエンジニアはベンチャー系に行くべきだろう。

ただベンチャー系も正直ピンキリで、企業規模も小さいし、オフィスも小さくて狭いし、口約束だけで発注書をくれないとかもあるし、中心人物も身内で固めてるから社長がクソならまぁ会社もほぼ間違いなくクソだろうし、ベンチャー系だからこそ地雷を回避する必要もありそうだ。

給与も高いとは限らない。昨年あるベンチャー系企業の面談で落とされたとき、俺が持つより遥かに高いスキルを求められた訳だけど、単価は月額税込65万だった。仲介エージェントが3割ぐらいとってるから人月100万いかないぐらいか。これならSIerでも出そうと思えば出せる金額だ。

いつ首を切られるか分からない不安な気持ちで切磋琢磨しながら働くよりも、低く安定して稼げるSIerで働くという道を選ぶエンジニアがいる理由はそこにあるのだろう。