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

負け組だった人間が今一度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で働くという道を選ぶエンジニアがいる理由はそこにあるのだろう。

エンジニアから見たSIerがクソな理由

少なくとも90%以上のSIerはクソだと思っている。

もちろん、これはポジショントークだ。SIerの中の人なら「SIerは最高だ」と言うだろうし、エンジニアをWeb系に売り込んで紹介料を稼ぐ転職エージェントなら「SIerはクソだ!Web系こそ至高!」と言うだろう。そして中立的な第三者であれば、一歩引いて日本にとってSIerは必要悪なのかどうかという視点で語るかもしれない。

しかし俺はエンジニアであり個人事業主だ。その上「技術的にはそこそこかもしれないが、人間としてはクソ」という特徴を持つ。だからこんな世渡りが下手な人間にとって便益があるかどうかという狭い視点でしか語れない。これが一般的な観点と言われれば否かもしれない。

それを前提で書かせてもらうと、よほど未熟でもない限り、エンジニアがSIerで働くのは時間の無駄だ。

なぜなら、SIerとはエンジニアの為の組織ではないからだ。

SIerの主役は言うまでなく正社員のSE、リーダー、マネージャー勢である。実際にコードを書くエンジニアは外部から連れてきた人間であり、SIerのプロパーには「コードを全然書けない or 読めない人間」というのは珍しくない。金を稼いで仕事をする題材がたまたまITだっただけで、特にプログラミングが好きでもない。

だから彼らは別にゼネコンでも商社でも良かった訳だ。要は企業の中に割り入ってピンハネできる構造、一部の人達の上に立って搾取できる力が欲しかっただけで、SIerに流れ着いたのはただの成り行き。特に業界の事なんて考えてないし、自分達にとって「養分」的な立場のエンジニアなんて更にどうでもいいと思っている。

仮にエンジニアがSIerにとって社外の人間であっても、互いがウィンウィンの関係で有ればいい。しかし実際のところ、エンジニアがSIerで働いて利を為すことは極めて限られている。よほどの低スキルならともかく、「SIerで働いてキャリアの無駄だった」というケースは当人の能力に加速的に比例して増えていくのだ。

そんなSIerを項目ごとにエンジニア視点で見てみよう。

SIerの技術水準

低い。実際にプログラミングをする側の人間の立場で考えることができないし、とにかく安全重視だから、「枯れたもの」「過去に実績のあるもの」を使いたがる。もちろん「コードも書けて技術アンテナも鋭くてエンジニアの視点で語れるSE」も確かにいることはいるが、残念な事に絶滅危惧種だ。

なぜSIerはエクセル方眼紙を愛するのか。今時ドキュメントを作るにしてもより効率のいいものが「探せば」有るのにだ。それは、探すのが面倒くさいし、誰にでもExcelは扱うことができるし、古来よりExcelを使い続けてきたという歴史と実績があるからだ。

なぜSIerにはテストコードやCIを導入する職場が少なくテスト項目をExcelに書いて手動で実施するのか。それは、テストコードは実装に強く依存してるからエンジニアにしか書けないし、テストコードがない以上CIを入れるメリットもないし、画面触ってエクセルを弄るのは誰にでも出来るからだ。

単純な技術レベルが低い事に加えて、SIerで作るシステムやサービスは、作る題材や内容的にもおもしろくない。SIerB2BやB2Gが中心なので「良いもの・新しいもの・斬新なもの・凝ったもの」を作っても貰える金は増えない。最初に契約した金額から基本的に動かないので、むしろ頑張ることに意義などなく、いかに手抜きをするかが大事なのだ。その手抜きには「エンジニアに払う金を減らす」というのも当然含まれる。

エンジニアとはプログラミングにおける「スキル」「センス」「経験」で勝負するものであるが、SIerはプログラミングをしないのでスキルやセンスなど磨きようがないし、トレンドに対するキャッチアップもできない。ゆえにSIerは「経験」のみで勝負する傾向が強い。それが「前例踏襲」「旧態依然」「陳腐」「周回遅れ」「退嬰」と言ったSIerの特徴となる。

エンジニアというのは技術を養ってなんぼだ。「給料は安いが技術を研鑽できる職場」というのも選択肢としては大いに有りだが、それだからこそ逆に技術を磨けないSIerは回避しないといけない。

SIerから貰える給料

残業もそれなりにあるという事情からSIerの正社員が貰える給与は低くない。30代で1000万超えも普通にいる。

ただ、エンジニアがSIerから貰える給与は高くない。SIerにとってエンジニアというのは「外部の人間」であり、有限契約だから育てる意味などない(その癖「できるだけ長期で働いて欲しい」とかほざくが)。エンジニアに対する給与などただのコストに他ならないので最優先削減対象だ。

しかし、給与が低い最大の理由はSIerで与えられる仕事の程度が低い事だ。SE達のレベルに合わせないといけないし、エンジニアをいつクビにして別の人間に入れ替えても済むように「その人にしかできない仕事」はあまり作らないからである。誰にでも出来る仕事というのは当然なことに高い給与は貰いにくいのだ。

SIerは「技術」を評価して買ってるのではない。自分達が掌握できる程度の仕事を忠実に正確にやってくれそうな「セーフな人材」を買っているのだ。そこに勤怠がよくて月に最低40時間、長くて80時間残業もできれば尚良しとなる。技術力など二の次、三の次である。

具体的な数値を挙げると、俺がSIerで働いていた時の年収は192万、240万、480万、520万のいずれかだったが、今は桁が1つ違う。もちろん派遣社員から自営業化して厚生年金が無くなったとか、給与所得控除がないからサラリーマンに比べたら少し税金が高いとかは考慮しないといけないが、SIerでこの金額を貰うには毎月400時間は働く必要はある。

また俺は1つの現場に1年以上、最長3年いたこともあるが、1度たりとも昇給を受けたことはない。高い給与を貰えていたならともかく、時給2150円という平均的な派遣エンジニアより低い賃金だったのに1年働いたあとに昇給を要求しても断られた。それで現場のレベルも低いことだし、辞めたいと告げたら「そこをなんとか!」と半年無理やり半年も延長させられたりな。

社会人というのは金を稼いでなんぼだ。「技術はつかないが給料は高い職場」というのも選択肢としては大いに有りだが、それだからこそ逆に金をくれないSIerは回避しないといけない。

SIerの環境

SIerは技術レベルが低いので、開発言語、フレームワーク、ライブラリー、外部サービスなどが周回遅れのものを採用しているのは言うまでもないが、それ以外での環境面も劣る部分がある。

「社員ひとりひとりが快適に働ける環境を作って、個人の生産性を上げよう」というのは何処の会社も考える事で、SIerも決して例外ではない。しかし、SIerにとってエンジニアは「社員」ではないし、むしろ自分たちが首根っこを掴んで働かせている人間だ。殆どが直ぐ辞めるし、自分たちもあっさりクビにできる。だからエンジニアに用意する環境は良くない。

例えば、協力会社の社員が本番サーバーにアクセスするにはISDNのクソ回線、もしくは踏み台サーバーを何重も経由とかいう制限を与えたり。一部のサイトを閲覧禁止など(SNS含む)を行うが、その癖FacebookTwitter APIを使えとかほざきやがる。Gmailも使用禁止なのに代替SMTPサーバー用意しないとか。

開発機材も渋い。OSも基本的にWindows固定だが、2015年になっても1280x768のメモリ4GBのノートパソコンで仕事をさせるとか普通。少しでもできる現場ならMacBookに外部ディスプレーが最も多いのだが、SIeriOS開発をしない限りOSXなんて使わない。サーバーすらWindowsなことも。別にWindowsが駄目とは言わんが、世の中のプログラミングはLinux/Unix中心で回っていて、Windowsは後から移植されるプラットフォームなのだ。

またスマホタブレット対応をするのに備品として購入するのを拒み私物のもので確認させるSIerもある。担当者どころか、現場のエンジニアが誰もiPadを持ってないのに「この画面を今月のリリースでiPad対応しろ」と言ってくる現場があったから、近くのソフトバンクショップに行って展示品のiPadで泣く泣く確認したり。

服装は大体30%ぐらいのSIerが「男はスーツ。女は自由」というルールを設けている。GLAYTakuroみたいな顔をした50過ぎのババアが金髪ミニスカハイヒールで香水プンプンさせてもお咎めなしだが、男は清潔感命で、茶髪もピアスも駄目なんだって。

致命的なのは「常駐」だ。最近は毎日でなくてもリモートで勤務ができる会社が増えているし、現に今はフルリモートだ。SIerは仮にリモートを認めても正社員のみ、雇われのエンジニアは完全常駐強制だ(しかもこれは実は違法になるケースが多い)。他人の職場に間借りする以上、窮屈な思いをしないといけない。

常駐先も異様にルールが厳しい所もある。たとえばトイレが混んでいるからって自席のある階以外のトイレを利用したら減点というルールが有った。たとえ、会議室用の階で自分達もたまにミーティングで利用していても(そうでなければそもそも階に入れない)容赦無くNG。最終的に俺はその減点が5点だか貯まって現場から退場(解雇)となった。

SIer達の人格

SIerには傲慢不遜で実力の癖には自己評価の高い奴が多い。

「ITはこんなもの」という狭い世界感で積み重ねた納入実績が無駄にあるから、そこで思考が停止して進歩することが難しくなっており、見識の底も浅い。知識もない癖に何でも自分たちの掌中に収めようとする傾向があるため、要らぬ制限や負の遺産となる判断ミスを現場に持ち込み、そして学習能力がないからそれを繰り返す。

極めて利己的であり、表向きは「クライアントは神様」と謳いつつも、実は神様のように考えてるのは自分達のことだけ。聞こえない所でのクライアントに対する愚痴だけは一丁前。雇ったエンジニアの事なんて完全に「下級労働者」として見下している。

我々は本来は「外部から招聘された専門家」であり、むしろ我々が「お客様」としてSE達から三顧の礼で迎えられるべき側なのであるが、先に述べたように、SIerは技術ではなく人を買うレベルにまでシステム開発を矮小化させているため、我々は専門家どころか、ただの単純作業を遂行する土方程度の立場でしかない。

愛社精神とプロジェクトに対する献身はすごいものがあるが、それを自己犠牲の範疇に留めるならともかく、「会社やプロジェクトの為ならエンジニアが犠牲になっても仕方ない」と平気で考えている所に寒気を覚える。同じ人間同士なのに、片や大義名分を振りかざして来るのだから。

それでもエンジニアに対して露骨に粗暴な物言いをするSIerは1割未満。でも酷いところは本当に酷い。日●も酷かったが、まだ契約が残っているのに、月末の21時に「明日から来なくていいよ」と言い出し、「お前の端末データとか消しておくから」と言って入館証も取り上げて追い出すような会社も。建築業界と変わらんだろう。

でもたとえ態度は丁重でも、ごく自然無垢にエンジニアの事を下に見ている人たちが一番質が悪い。

例えば、技術レベルが低く、給与も低く、労働環境の悪い●C●Kという会社で働いていたとき、愛想を尽かして「もう辞めたい」と言ったら、「(来年4月には新入社員が入るし、年度末の査定があるから)3月までは続けて欲しい」と無理強いされた。

こういう「お前に幾らメリットがなくても、俺たちのために犠牲になってくれ」とナチュラルに言える所に、SIerとエンジニアは決して分かり合えないものだと絶望したものだ。

SIerでの人間関係

SE

エンジニア

という縦の関係については言うまでもない。エンジニアの平身低頭だ。

しかし「横の関係」、つまり共に雇われた同僚エンジニア達とは結束して仲良くなれることも多い。たとえ所属会社が違う一期一会の関係であっても、同じ「下級労働者」同士の連帯感があるからか時には同僚以上の関係になることも。

ただ、正直SIerで働いてるエンジニアには劣等生も多い。たとえ才能に恵まれなくとも技術やセンスを養うという意欲すら欠けており、そもそもプログラミングが好きじゃなく、平均以下の能力しか持ててないので、結果的にスキルの問われにくいSIerで働いてるという向きがやや目立つ。

実際、俺はSIerで同僚に感化された試しがない。キャリアの初期ならともかく(いや初期でも「それは違うだろ」ってのは多かったが)、中期からは俺よりプログラミングができる人間にSIerで巡り合った事は一度もない。これは決して(断じて)俺が優れてるからとか自己を過信してるからというより、単にSIerで働くエンジニアの技術水準がそんだけ低いってことだ。俺自体は精々中より上程度だ。

俺という人間を客観的に捉えると「技術的にはそこそこだが、人間としてはクソ」となる。人間としてクソな部分を技術力で挽回できてないから、こんなに人生で苦労してるのだ。ところがSIerで働いているエンジニアはただでさえ技術的には平均未満なのに、性格的にも肯定しにくい奴らがいる。

ストレスが溜まる現場で安い給与で働いてるので、そりゃ性格も捻じくれよう。しかしそれを考慮してもなお、実力の割には無駄に自尊心や自己評価が高くて、明らかな瑕疵・改善点があるのに「これを修正してくれ」と言われても不機嫌になったり、他責癖があって自分が混ぜ込んだバグを人のせいにするような奴が目立つ。

思うにアルゴリズムの着想とかよりも、コードの貼り合わせや他人の世界観(フレームワーク)に頼る事が多い実務プログラミングにおいて、成長というのは、「問題解決能力」「言語、APIの知識」だけでなく、「如何に他人の価値観を認めて自分に取り入れていくか」という姿勢でもあるんだと思う。彼らにはそれが欠けていたから、エンジニアとしても人としても成長できなかったのではないか。

子は親の鏡と言うが、SE達の下で働くようなエンジニアはSEも似る運命に在る。結局、純粋な技術や能力で勝負することができなかった以上、「プログラミングなんてこんなもの」という諦観を持たざるを得ないのだろう。

また、SIerで幾ら働いて「その職場限り」の友達や知り合いを作ってもそこからキャリアの発展はしにくいと思う。彼らはエコシステムに貢献しておらず、エンジニア同士の知り合いや友達が多い訳ではない。いわゆる「知人のつてを使って転職」というパターンは望みにくい。

長老

SIerのプロジェクトには必ず一人ぐらい「年齢と自尊心とそのプロジェクトでの参画期間だけは高い」エンジニアがいる。彼らは、他人に完全には共有されていないプロジェクトの仕様や過去の歴史について詳しいので、SE達からも一目置かれる存在であり、時には客先にSIerの社員として名刺まで渡されて打ち合わせに向かう。本人もそれを知ってか態度がややでかい。

ざっくらばんに言えば、クソコードを大量に書き散らして現在進行系で負の遺産を作り上げてるのが長老。もし当人にしかメンテが出来ないように敢えてクソにしているなら策士であるが、単価も俺たちと比べて精々月10万高い程度なのでそれもなかろう。

で、俺はいつもこいつらと折り合いが悪い。露骨に喧嘩をしたことこそないが、この長老どもは基本的に技術力が低いし、俺達の足をいつも引っ張っている。SIerで一つのプロジェクトに何年も参画している時点でお察しなのであるが、長老に与えられる権限と本人の力量が釣り合ったケースなど一つもない。

SIerでのやり甲斐

仕事のレベルが低い以上、やり甲斐など少ない。ここに加えて更に致命的な問題がある。

どの職場にも起こり得る事だが、特にSIerはタスク配分が下手くそなので「仕様が固まるまで待ち」という状況がよく発生し、すごく暇なことがある(その癖、納期は動かないから後で残業地獄)ウォーターフォール式だから、SE様がお仕事を終わらせない限り、我々はなかなか仕事を巻き取れない。ゆえに時期によっては本当に仕事がない。

しかし、SIerというのは常駐強制で、また私的なネット閲覧、スマホ使用などを禁止する事のみならず、プロジェクトとは無関係なコーディングも禁止されている。ソフト●ンクとかは実際に協力会社の社員のHDDを監視して数時間で通報するシステムがあり、実際にそれでクビになった事がある。

出社する以上、早退する訳にもいかない。よって「仕事がないのに一日中定時まで席に座っている」という状況が発生するのがSIerであり、更に悪いことに、その頻度は本人の能力にまさに比例する訳だ。要領が良くて技術力にも優れてる人間なほど、さっさと仕事を終わらせてしまって、仕事がなくなってしまう事になる。

これは、もう「時間の切り売り」に等しい。我々は多少のお金を貰えるからって無駄に窮屈で退屈な時間を時間を過ごせと言われてるのだ。刺身の上にタンポポを載せていた方がまだ生産的だろう。

しかしエンジニアには権限も裁量も理解も少ないから仕事を増やせない。仕様はお客とSEが決めるものでエンジニアから「こんな機能どうですか?」という提案はできない。これがB2Cならまだ下からの意見を掬う風通しはあるかもしれないが、B2BとかB2Gのプロジェクトにそれは到底期待できない。

では技術面で仕事を増やすのはどうだろう。SIerのプロジェクトはレベルが低いからこそ大きな伸びしろもあるというものだが、仮に「ほぼ完全互換なんだからバージョンアップしましょうよ」とか「こんなライブラリを追加しましょう」とか「CIを導入しましょう」とかエンジニアが提案しても聞いてくれることはなかった。

技術力のある人間ほど空虚な時間を過ごすというのを目の当たりにすれば、もう我々は技術を買われてる訳ではなく単に飼われているだけに過ぎないと分かる。

SIerの良いところ

とまあここまでボロクソに書いたが(まぁクソをありのままに書いても「これはクソです」にしかならないが)、どんな人間にも良いところは探せばある。SIerもまた然り。SIerが嫌いで「SIerはクソ」という結論有りきで書いてると言われても仕方ない俺でも、多少の塩ぐらいは送ることはできる。何故なら俺はSIer育ちだからだ。

平均未満のエンジニアには向いている

SIerというのは作業レベルが低く、個人の裁量権もあまり与えられない。作業の大半がgrepとコピペ、あとはエクセル方眼紙を片手にした単調作業という事が多く、能力がある人間ほど辛い思いをする醜悪な場というのは先に述べた。

しかし、これは逆に言えば能力の低いエンジニアはSIerで働いてもいいってことだ。別にプログラミングが好きな訳でもないし、プライベートで勉強して技術を磨く訳でもない。適当に既存コードやググって1番目に出てきたページからコピペして貼り付けて動けばそれでいい。ある意味気楽ではないか。

またSIer以外の企業にとってもこれは有り難い事だ。SIerは有名な「人/月単価」という頭数払いをしてるので、とにかく送り込めば金が取れる。結構あっさりクビにはしてくるものの、プログラミング未経験の人間を経歴偽造して送ればそれなりの金が手に入るチャンスがあるのだ。

この業界に多重請負が多いのは、SIerが技術不問とは言わずとも技術軽視で人を飼うからであり、IT企業の外面をしながら実態は派遣会社な零細企業が本当に多い。だからIT業界で正社員になるのは非常に簡単だ。俺ですら幾度も断っているし、たとえ待遇面や収入面が非正規以下だとしても、「正社員」という肩書の信仰は根強いから、それを喜んで受ける人もいるんだろう。

結局、人の雇用を支えてるのは中小零細企業な訳で、そういう意味ではSIerは社会に資するものではある。全体的に見れば害悪かもしれんが。

テストやリリースには割と慎重かもね

SIerは極めて保守的であり、バグや障害に対してはすごく神経質だ。そのバグや障害が起きた終局的な原因はお前らが技術軽視で負の遺産を積み上げていったからだろと思う事も多いのだが、この姿勢は素直に評価してもいいと思う。

在るWebサービスに関わっていたとき、動作自体は書き連ねたテストコードで一応担保してるものの、「おいお前それ本当にリリースしていいのか?」と思うことがあった。参画しているエンジニアのレベルが高くて信頼して頂いてる事こそ、ここまで気軽にリリースしてしまってるのだろうが、たまに障害を引き起こしてるのを見ると、どうかなあと思うことがある。まぁ、そのサービスは俺のせいでトップページに障害発生のお知らせを掲載したんだが。

SIerはあまりにも慎重かつ原始的過ぎて「既存コードのリファクタリング禁止」とか、テストは毎回検証を手動で全パターンで行う(ページネーションを手動で実装してやがるクソプロジェクトがあって、ガラケー3機種で全リンク踏まされたことがある)とか動作の担保方法がクソ過ぎるのだが、テストコードやCIに対する信奉もそれはそれで良くないと思うのだ。

良いSIerもあるかもしれない

俺がこれまで経験してきたSIerの中で「働く価値があった」と言えたのは1社だけ。そこは技術レベルは比較的高かったし、俺のエンジニアとしての成長に大きく関与してくれて今でも非常に感謝している。が、そこすらも給料が安いという致命的な欠陥があった。だから本当は全滅と言ってもいいのだが、SIerも数あるし、部署も色々だし、中には良い職場もあるかもしれないので冒頭で「90%」のSIerはクソとした。

SIerを批判すると、やたらと「SIer vs Web系」という対立構図になる事があるのだが(某転職エージェントが理由か)、個人的にはこの「Web系」という定義そのものが曖昧なので、対立概念に用いるには不毛だと思う。SIerで一般消費者向けのサイトを作っていようが大概クソだし、自社でゲームやサービスを展開していてもクソな所はあるだろう。反面、零細受託開発企業でも少人数で自社開発しているところはなかなか良いのもある。

でも一つ確かなのは、大抵のSIerは俺にとってはクソということだ。

gitの良さがいまだに分からない

ここ2年ぐらいで俺が働いた現場はみんなgitを採用している。就職エージェントと面談するときもgit経験の有無をよく訊かれるし、今ではVSSやCVSどころか、SVNですら時代遅れになってきて、SVNを使っている現場は「レベルが低い」「保守的・旧態依然」という雰囲気すら感じる。

俺としては4-5年前からgit(GitHub)を使っているし、gitを使うこと自体に抵抗はない。一通りの基本操作はできるし、人並みにはできると言っても差し支えはない。

…が、正直gitの良さがあまり見えてこない。

もし俺が中規模以上のプロジェクトのリリースを本格的に管理する側であれば全然違った感想を持ったかもしれない。でも一人の開発者として、せいぜい10人程度のプロジェクトで利用する限り、「gitで良かった」という状況があまり思い当たらない。

ではgitの何が気に食わないのか書いていきたい。

①gitは馬鹿には難しい

もっと丁寧な言葉で言うと「gitは学習コストが高い」となる。

このブログを読んだ奴から「gitの良さを理解できないのはお前が馬鹿だから」という意見が出てもそれは分かる。卑屈ではなくて、それは素直に事実だと思う。でもこの業界には、俺より頭の悪い人、俺以上にgitを理解しておらず、理解しようともしない人がザラにいるのだ。

プロジェクトのメンバーで「gitの経験は有ります!」と豪語していた奴から翌日「Permission denied (publickey).fatal: The remote end hung up unexpectedlyと出ます。教えてください。。。」というメールが来るなど、導入障壁からして低くないようであるが、そもそも「分散リポジトリ」という仕組み自体が完璧には受け入れられていないように思う。

ある日、同僚が社内チャットで突然こんなメッセージを残した(原文ママ)。

馬鹿マージリクエストを出したらちゃんと最後まで面倒みてよ。。。
馬鹿放置したままにすんなよ
唐突過ぎて意味が分からなかった。あとで訊くと別のメンバーも同じ感想だったらしい。

この同僚は技術力もないのに仕事を抱え込んではイライラを表に出していて、できるだけ関わりたくなかったが、当時奴が作業しているリポジトリにマージリクエストを出していたのはメンバーで俺だけだったので、嫌々ながらも話しかけることにした。

何の話ですか?

馬鹿からは返事が来なかった。よってその場は、謎のまま終わった。

しかし、その後、全員が集まるミーティングの場で彼は俺に対して直接要求してきた。

なんとこの馬鹿は、俺のブランチから出して放置されてるマージリクエストが、奴のブランチから出したマージリクエストとコンフリクトしているため、俺の方を取り下げろと言っているのだ。あり得ないほど幼稚な勘違いにクラクラした。

そもそも自分の無知蒙昧からの勘違いで社内チャットで乱暴な台詞を吐いた挙句、説明を求めても無視するとはなんて奴だとは思ったが、俺は奴に比べたら大人なので、その場でやんわりと丁寧に説明し、解決方法も提案したところ「あ、そうなの?」とは言っていた。

この馬鹿は謝罪もしなかったが、それは別に必要ではなく次からは少しだけgitの仕様を理解してくれさえすれば良かった。しかし、残念なことにその後も全く成長せず自分の思い通りにいかないと直ぐ人になすりつけてきた。

例えば、彼は自分のコミットがコンフリクトしたまま無理やり俺と共用しているリモートブランチにpushした挙句、少し経ってから俺に言ってきた。

馬鹿この<<<<<<< HEADとかいうの入っちゃまずいんじゃないの?
まずいんじゃないですかね。
馬鹿あんたが入れたんじゃないの?

どうやらコミットログの読み方すらも分からないらしい。

再び丁寧に「123abcで入ってるから、そちらのコミットで入ったんですよ」と教えてあげたが、知能に問題があるのかそれともプライドが高いのか、その後反応がなくなった。仕方ないので俺がわざわざ解消してやった。

彼は齢にして30代中盤らしくあまり技術的なセンスは感じなかったし精神的には無論子供だったが、エンジニアとしてある程度の経験と実績があるようで、その職場でも俺よりも勤務経験は長くて、俺よりも全然信頼されて大きなタスクを任せられていた。単価は月100万程度は有ったんだろう。このレベルの中堅技術者であってもgitは難しいのだ。

正直、俺のgitに対する悪印象の40%ぐらいはこの馬鹿のせいだと思う。

②コードレビューが常に必要になる

gitを採用する職場は猫も杓子もgit-flowに倣うので必然的にコードレビューを採用する。反面、SVNではそれほど多くはない。

コードレビュー自体を否定する訳ではない。その目的は「成果物の品質を担保する」「プロジェクト内でコードベースを共有する」などが挙げられる。

しかし、コードレビューのとにかく時間が掛かるという負の側面は本当に深刻な問題だ。実際、1つのマージリクエストのマージに数週間掛かるのはザラだし、下手すれば数ヶ月とか永久にマージされないという事も普通にあり得る。どうしても必要であれば催促すれば話は別だが、しかし常識的に全てのマージリクエストに催促できるはずもない。

どうしてレビューに時間が掛かるのか。概して他人が書いたコードを読むのは苦痛なのだ。また「マージは正社員のみが行える」と定めている現場も意外に多い。これ自体は形式的にも正社員にプロジェクトの責任を負わせたいという矜持溢れたポリシーだが、全ての正社員がコードを読める訳ではない。よってマージは遅れる。

はっきり言うとしっかりとした人間を採用していればコードレビューは大体が不要とすら思っている。エンジニアに信頼が有れば、コードレビューなんか「斜め読み」程度に留めて、よほど一目瞭然の間違いが無い限りは、さっさとマージした方がいい。最終的な動作の担保はテストフェーズなどで確保できるからだ。

にも関わらずコードレビューが有用(必要)となるのは、下記の1)、2)、3)のような状態である。

1) プロジェクトメンバーの中にとんでもないゴミがいて、誰かが監視しない限りクソコードをコミットされ放題になる。

2) プロジェクトメンバーが少数精鋭でレベルが高く、自分の担当外の分野に対しても積極的に踏み込んでお互いを高め合っていける。

3) 以下の全てとは言わずとも大半を満たす人がプロジェクト内に存在する。

  • レビューに時間を割ける
  • 「その実装が要件を満たしてるかどうか」を判定できるだけの仕様に対する理解が有る
  • マージリクエストから(数日以内とは言わずとも)記憶が新しいうちにレビューを行える
  • 言語やフレームワークに対して他人に指導できるぐらいの知識とセンスが有る
  • その実装が短期的ではなく中・長期的にプロジェクトにどう影響を与えるかも予見できる
  • カリスマと説得力、コミュニケーションに優れており、年齢やプライドだけは高いエンジニアに対しても柔軟に指摘を受け入れさせられる

1) については、恐らくコードレビューの有用性が叫ばれるケースは大半がこれを想定している。しかし、とどのつまり、これは採用プロセスでの過ちをコードレビュー導入で修正しているに過ぎない。OSSでない限り、プロジェクトのコントリビューターはそもそも限定できるのだ。また、仮に採用してしまっても、そのゴミの「解雇」という選択肢も有る。

2) は理想であるが、現実的にはそんな職場はあまりない。そもそも日本のIT業界において「良いコードを書こう」という文化自体が浸透しておらず、優秀なエンジニアというのは相対的に絶対的にも少ないのだ。PythonScala、Goと言った人口も少ないが優秀な人間が集まっている言語ならともかく、C#RubyObjective-CJavaPHPなどは玉石混交だから優秀な人を採用するには金を積む必要がある。

3) も極めて難しい。GitHubの有名OSSリポジトリを見れば、多くのリポジトリ管理者達が、実は企業から雇われてマージリクエストをチェックしている事が分かる。彼らはそれで金を貰ってるのだ(しかも高給)。そんな彼らでも数週間、数ヶ月、数年(!!)単位で放置してしまうのだ。日本のSIerの社内SEが複数プロジェクトを掛け持ちしつつ、片手間にできる作業ではない。

コードレビュー導入は終局的には「コードはできるだけ書かない」という境地に至る。パラドックスにも思えるが、コードレビューを導入するとむしろコードの質が下がる事になる。ちょっとしたリファクタリングや機能の改善などがその典型例で、どうせコードを書いても放置されてしまうし、社員に催促するのも億劫だし…という事になるので、気軽に直せなくなる。

③利用者の負担が大きい

gitは本当に強力だ。たとえばSVNとは違ってコミットを履歴を汚さずに修正し放題だし、無かったことにもできるし、複数ブランチを切り分けて美しい開発フローを保てる。これは素直にgitの長所だ。何でもmasterに好き放題にコミットされていたSVNのログはどうしても「みす。。。。」「取り消し。。。」とかいうクソコミットで汚染されているのだから。

でもその分ユーザーの負担も大きい。ローカルリポジトリというワンクッションがあるゆえに、リモートのログは特に潔癖症のように扱われる。bitsectの邪魔になるとかの理由もあり、リモートにマージしてもらうときは複数コミットはできるだけsquashしろとか、グラフで美しいツリーを作るために適切にrebaseしてくれとか「こだわり」を要請される事も多い。

しかし、言うようにgitを用いた開発ではマージリクエストの数週間放置はザラだ。だから一つのチケットAのマージリクエストを出して、別のチケットB、C、Dに取りかかろうとも、そのB、C、DがAを前提にしていることは珍しくもない。でもAからBを切ったら「ツリーが崩れる」と言われるし、Aでコードレビューを反映させてsquashしてpush -fしたら、B,C,Dも改めて修正しないといけない。

もちろん綺麗なツリーやコミットログを目指すのは結構だが、ここまで負担が大きいんじゃ無理に目指す必要なんてあるんだろうか。

④ローカルコミットやブランチ切替えにさほどメリットがない。

gitは分散リポジトリ制で、ローカルに自分のリポジトリがまず存在する。一つしかリポジトリのないSVNだと最後の最後まで行えなかったコミットが気軽にできること、また複数ブランチを一つのリポジトリで併行して開発出来ることはgitの大きな特徴でありメリットでもある、…と思っていたが、実はこれそこまで有り難い機能とも思えない。

まずローカルでコミットできても結局間違ってrm -rfすれば電子の海にデータは消える。ローカルコミットはゲームのデータの途中セーブとは異なる性質のものだ。ある程度開発が進んでそろそろマージリクエストを作る直前までコミットできなくても問題はない。もちろん巨大なチケットに関しては、全ての変更を1つのコミットを含めるのではなく、複数のコミットに分割するというのも手だが、全ての変更を綺麗に適切にコミット単位に分割するというのは、それはそれで負担が大きいのだ。

また、同一リポジトリ内で、別のブランチに切り替える場合も大抵はコンフリクトするため、stashしたりと色々と面倒なことになる。もし本当に複数ブランチ(≒チケット)を同時に進めたいのであれば、物理的にリポジトリをもう一個cloneしてきて「ディレクトリ:ブランチ=1:1」で開発した方が全然やりやすいと思う。そして、それなら普通にSVNでも可能だ。

⑤コマンドや操作があまり直感的ではない。

まあこのコマンド体系を考えた人間が誰なのかと思えば、我々は唯一神のご意向に従うしかないのだが、個人的にはgitのコマンドや操作方法に関しては数年使っても全然しっくりこない。例えば、ファイルの削除がgit rm foo.txtなのに、ブランチ削除はgit branch -d hoge/fugaとか。git rm -b hoge/fugaじゃ駄目なのだろうかね。

gitを数年使っているし、ヘルプメッセージもヘルプもそれなりに充実しているのだが、結局いまだに何か分からない事があればググってしまう癖がある。

⑥git-completionとgit-promptはいい加減デフォルトにしろ

これは批判点というより要望なのだが、この2つがないとgitを使う気が正直起きない。どのディストリビューションでも環境構築をするときこれを自分で導入しているのだが、そろそろ標準でパッケージに含めておいて欲しい。


というわけで、gitはあまり好きではない。しかし、かといって今時SVNを採用している現場なんて色々とアレなところが多いだろうから、そこでも不愉快な思いをすることが多いだろう。そこにジレンマがある。

フルリモートワークは都市伝説ではなかった

諸事情が有ってまだ請けるかどうか決めてないのだが、フルリモート(在宅)でWeb開発のお仕事を頂いた。給与も前と同じぐらい。要は、仕事場に来なくていいから自宅からsshなりで繋いで仕事してくれというもの。「嬉しい」とか「誇らしい」とか以前に、そもそも「まともな給料を貰える在宅の仕事」が存在したことに驚愕している。

給与を無視すれば「在宅の仕事」を探すこと自体は難しくない。もう具体名は出さないが、たとえばあれとかは基本はフルリモートの募集だ。でもあそこは俺の相場感だと1/100ぐらいなので月収8万どころか8000円ぐらいだ。本業として生計を立てるどころか、副業としてもアウトだ。

海外だとフルリモートワークと言うのは珍しくないというか、ヤフーなんかは女社長が「やっぱ出勤しろ」と怒っているのは話題になっているが、日本で、それも外部委託の立場の人間にまさか「在宅でいいよ」と言ってくれる神企業があるとは露知らず。

では、「常駐」と比べて「在宅」の何が素晴らしいのだろうか。

税金が安くなる

開業届を出したフリーランスが自宅で作業する場合、家賃と光熱費、通信費の一部を経費として確定申告できる。割合については作業スペース基準とか色々とあるらしいが、とりあえず3割程度までなら税務署は指摘してこないらしい。また、私物PCを新しく購入したり、パーツを換装した場合もそれを仕事に用いるのであれば一部を経費として計上できる。

そうして計上した経費の4割近く(所得税23%・地方税10%・事業税5%)の税金の支払いが軽くなる。

労働時間が減る

常駐エンジニアには「無駄な時間」も「暇な時間」も多い。IT土方というのは畢竟するに上の人間から仕様が降りてこない限りはやる仕事がないのだ。職場に朝10時から夜19時まで常駐していても実働時間は4時間に満たない日とか、時には完全に仕事がなくてなんとか1日時間を潰して定時になったら即上がる日とか普通にある。

でも常駐契約というのは時給もしくはSES契約で、成果でなく時間で管理されているので、月の最低稼働時間(たとえば140h)を下回ると減給される。また日本には一旦会社に出勤した以上「仕事がないので帰ります」的なことはできないという同調圧力がある。結果、基本的にみんな毎日出勤して定時以降に帰っているのだ。

ところが在宅であれば「請負」で仕事をやれる。仕事をさっさと終わらせればあとは完全に自由だ。

他人の耳目を気にしなくていい

他の業界ほどではないかもしれないが、IT業界も意外にビジネスマナーや身だしなみを指摘する向きがある。

というか、レベルの低い会社の共通項の一つには「ビジネスマナーにうるさい」がある。こういう会社は服装についても「男性はスーツ着用」など取り決めを設けている傾向がある。そうなる背景として、「思考が硬直的」「形式主義」という社風の会社は、IT業界においては必然的に技術力が身につかず、根性論や精神論に逃げないといけないからだ。

また、彼らはエンジニアを「専門家」としては採用しておらず、使い捨ての土方としか思っていない。任せる仕事のレベルも低いため誰がやっても一定の成果は出せる。よって技能面で差が出ない以上、ビジネスマナーや精神論の部分で人を差別化するしかないのだ。

もちろん、どんなに技術力があっても人格とコミュニケーション力が重要だし、最低限のビジネスマナーや身だしなみは備えていて然りだ。ただ、酷い会社だと、自席で食事をしたとか、はたまた自席があるフロアでなく、その上の会議室があるフロアのトイレを利用したとか難癖が上司経由で俺のもとに伝わってくる(特にトイレについては未だに何が悪いのか理解できない。俺の入館証はどちらのフロアにも入れたし、会議などで普通に利用していた)。

在宅であればこんな指摘は一切請けることはないし、むかつく上司や同僚に悪態ついていてもノープロブレムだ。

住む場所を選ばない

職場と自宅が近いに越したことはない。俺はかつて通勤通学に片道2時間要していて東京まで通っていたが、それが自分にとってどんなにストレスになっているか、ひいては自分の人生のどれだけの無駄になっているかに気づいてから、東京23区に引っ越した。以来、電車は嫌いなので自転車で15分以内に職場があることを常に理想としている。

ただ、東京と言っても、IT業界だと案件の50%ぐらいは渋谷か新宿の周辺だ。しかし、俺は渋谷と新宿と池袋がとにかく嫌いなので(「ヤングの街ですよね」とかでなく単純に嫌い。秋葉原も嫌い)、その周辺に住むことはできない。だから23区在住なのに、案件を勤務地フィルターで濾過すると選択肢が一気に減るのが辛い。

ところが在宅なら何処に職場があろうがもう気にすることはないし、そもそも自分が何処に住んでようがお構いなしだ。北海道でもいいし沖縄でもいい。離島とか限界集落でも光ファイバーさえ通っていればいいし、それこそ海外でもOKだ。

都会に疲れて地方移住に憧れる人間は少なくないが、結局は雇用の少なさと給与の問題で挫折する(それ以外にも田舎暮らしには数々の困難があるらしいが、それに直面する以前に諦めないといけない)。その結果が今の東京一極集中であるが、その流れに一石を投じる存在となれるがリモートワークではないか。

仕事を掛け持ちできる

在宅での業務は常駐とは異なり本当の意味での「請負」なので、仕事が早ければ直ぐに納品して直ぐに終わる。移動時間や休憩時間から仕様の策定待ちなど常駐での無駄な時間を省いた在宅エンジニアの実労働時間は、常駐の半分以下になってもおかしくはない。

この場合、常駐とは違い物理的に拘束されていないので、空いた時間を別の在宅の仕事を請けるという選択肢も出てくる。収入面では2000万とは行かずとも、それなりの金額が稼げることになる。


・・・とまあ、やってもないのに在宅の良いところを書いてみたが、結局のところ、俺は諸事情を鑑みてこの仕事は辞退して、常駐ながらも業務内容に強く惹かれている仕事を選ぶ予定である。拘束時間も長くなるし手取りは半分程度になってしまうが、エンジニアとしてはやはり「働いて楽しい」「自分が成長できる」というのを一番に考えるべきだからだ。恐らく後悔するかもしれないし、決断には相当慎重になるべきだが、こういうときに相談できる人もいない。

あと「そもそも在宅で仕事をするってそこまで良いことなのか?」という懸念がある。むしろ、ゲームやインターネットなどの娯楽が無かった時代ですら、漫画家がファミレスや喫茶店でネームを描いたり、作家がホテルに缶詰にされていたことの意味を考えれば、自宅で仕事するってそこまで生産性は高くないんじゃないかとも思えるのだが。


いずれにしろ噂で聞くばかりで一向に募集のない「完全在宅勤務」というのはガチだった。フリーランスのエンジニアという微妙なキャリアを選んだのであれば、その数少ない強みを最大限に活かせる働き方として在宅には大きな可能性を感じている。

自分は頭がいいから未経験でもすぐ即戦力になれる

という思いあがりを持つエンジニアは少なくない。というか、現状の俺が今この状態に陥っている。

もちろん、この思考回路自体は決して間違いではない。プログラミングにおけるセンスや問題解決能力、情報収集力などは凡そ普遍的なものだから、言語やフレームワークみたいな些細なもの、時にはパラダイムの違いですらも、優秀な人間であればごく短期間で乗り越えて、その能力を遺憾なく発揮できるはずなのだ。

その辺りを理解している企業も多く、少しマイナーな言語や環境での募集の場合、たとえ未経験でも意欲と能力を買って採用する事も多い。というかむしろそれが普通なんだろう。その辺りの融通が効かない駄目な会社は、そもそも「最新の技術」なんて導入せず、既に枯れ始めて実績と経験者のあるものに固執するからだ。

ただ、問題なのは、たまに有能ではないのに自分の能力を過信して「俺は優秀なんだから何でもできる。さあ誘え」と完全に受け身モードに突入している輩がいることだ。

というか、俺だ。

俺は実質的に異業種からエンジニアに転向したので、コードを書き始めた時期は比較的遅い。ある程度のセンスと経験は備えているつもりで、周囲からの評価や収入面からして、中の上ぐらいの実力はあると思うのだが、この世界は上を見上げたらキリはないし、自分が本当に優秀な人間のグループには到底入れてないのは分かっている。

なぜ俺はエンジニアとしてここ1-2年成長してないんだろうというと、結局は勉強量が少なすぎるのが原因だろう。

今でもプログラミング自体は好きだし、何かを覚えることは好きだ。でも決してプライベートを率先して潰すほどではない。エンジニアとしてある程度成功して収入も余暇も増えたことで、プログラミング以外の趣味に没頭するようになった。だから最近は仕事以外じゃほぼコードを書かない。

かつてエンジニアとしてキャリアをリスタートするとき、当時はプログラミングが趣味だった。最初の2-3年は毎日のようにプログラミングのことを考えていた。大海原にいたような状況で、とにかく目の前に捉えるもの全てが未知で、新鮮で、得体が知れなくて、そして面白かった。

時はだいぶ流れ、当時の大海原はとっくに海路の知れた当たり前の光景で、単にお金を稼ぐために渡るだけ。遠くに行けばまた別の大洋が広がっているのは知っているが、そこまで行くには力も金も時間もそして勇気も足りていない。そんな状況になっている。

じゃあ、俺はエンジニアとして今後どうやって成長すればいいのだろうか。一つ確かなのは、プライベートを割いて勉強をしないといけない。それで、実務未経験であっても経験者以上の力を発揮できるという説得力を持たせないといけないのだ。

そして、プログラミングを楽しむことも時には諦めて、単調で詰まらない作業も甘んじて受け入れるべきだ。「ただプログラミングの勉強をするだけでは飽きるから、何か作りたいものを決めてからコードを書いた方がいいよ」という進言はよく聞くし、完全に正しいとは思う。でもそれは、所詮ただの理想論だ。

そりゃ作りたいものが具体的に有るに越したことはない。でも個人が世間に公開できるほどのアプリやサービス、ライブラリを作るのには、まず「発想」が要る。それも独創性に大いに優れたものが。でないと、大抵の場合、他人が既にそれをやっていて先に公開しているのだから。

買った翌年には陳腐化してゴミになるような本、英語版のガイドやリファレンスの完全劣化版、それも誤植ばかりの初版を購入して、写経しながらひたすら無味乾燥なコンソールに打ち込んでいく。そういう非経済的で苦痛な作業すらも辞さない精神が必要とされているのだ。

エンジニアというのは、そうまでしないとキャリアアップができない。そして、残念なことに、仮に知識だけを身につけてもキャリアアップができるとは限らない。

かつてクラサバエンジニアをやっていたが、その底辺っぷりに当時既に危機感を覚えたのでWebに逃げた。そして中堅程度のWebエンジニアとして停滞を感じた今、IoT、ビッグデータ、ゲーム開発あたりに逃げてみたいと思っている。

しかし「きっかけ」がない。

IoTは少しだけ触ってArduinoで半田付けなども経験した。自分だけが利用者だがデバイスを使ったサービスも作ってみたので少しは準備はできている。しかし募集が無きに等しい。

ゲーム開発は未経験者なんて論外だ。もちろん個人でUnity触るなどで実績を作って月給16万でもいいですとか言えば、なんとか入り込む事はできただろう。

ビッグデータに関しては、R言語の募集があったので、単価は不問で手を挙げてみたが、R言語の経験者以外は採用せず、自宅学習の類も認めないらしい。

とにかく、このままでは俺はエンジニアとして死んでしまう。自分が軽蔑していた、どの職場にもいる年齢とプライドだけは高くて、技術は疎かにしている「長老」に俺自身がなってしまう。もはやプログラミングをさほど楽しめなくてもいい。苦痛でもいい。それでもいいから、今から投資をしていかないと、凡庸な使い捨てエンジニアで終わってしまうだろう。