megamouthの葬列

長い旅路の終わり

勉強するとこんな人になりますよ

axia.co.jp

どこかのエントリで呼ばれた気がした。
必要もないのに他人のエントリに乗っかるのは好きではないのだが、たまにはブログっぽいことを書かないと、と思ったので、軽く書く。

ある勉強したプログラマの末路

まず自分の話をしたい。
私は趣味で多数の求人サイトに登録している。
転職エージェントはうるさいので使っていない。
サイトに登録して、経験言語と年数にチェックを入れ、職務経歴書サニタイズして(なんとこの用語は顧客を特定できないように「無毒化する」という意味で一般的に使われ始めている)掲載しているぐらいである。
ちなみにpaizaでもSランクを持っている。自慢にもならないし、求職活動に役立つわけでもないが、持っている。
こうして、現年収を正直に「200万」と書いておくと、スカウトメールがけっこうやって来るので、それらを暇つぶしに眺めるのである。

Webで年収400万超えるとこってないよなぁとか、このオフィスはオシャンティだなぁとか、この社長、ピカリ出身かぁとか、要所に目を光らせつつ、その会社で働く自分を想像してみる。

最初は、仕事も早く、無理難題もこなしてくれ、コミュニケーションも取りやすい私は重宝がられるだろう。
仲の良い同僚も出来て、ワイワイやって、とても楽しいのだが、そのうち、経験だけは無駄にあるので、フルスタックに動ける私は徐々に忙しくなっていく。
固定残業制の弊社では、残業しても給料が増えない、そもそもまだ私は半年間の試用期間中である。有給も昇給もない。

そして、やーめた。となるのである。
何を好き好んで、毎日毎日、大して評価もされない会社に定時に出社しなければならないのだ、となるのである。
そして、収入は半分になるし、給料もなくなるが、週休4日制で、休みの半分を野球ゲームに費やす生活に戻ろうと思うのである。
というか、実際には就職していないので、ああこの生活で良かった。と思うのである。

そんなことはない、1年も辛抱すればCTOになって、バリバリやれるようになるし、給料も上がりますよ、と言ってくれる人がいるかもしれない。
しかし、そんな人にも私は「勤勉」ということができないんですよ、と言うと大抵黙ってしまう。

前にも書いた気がするが、社会人において「勤勉」であるということは、絶対不可欠の基本的素養であって、それが無い限り、まともな人生を歩むことはできない。

証拠に私は、勤勉を失う病を患っているので、わりと絶望的な生活をしている。
それでも、タバコ銭があって、酒代(たまに切らしているが)があるのは、私が「勉強」しているからである。

もし私に、Laravelとwebpackとvuejsの知識がなかったら
もし私に、Wordpressプラグインアーキテクチャの知識がなかったら、
もし私に、古のPerl5ソースコードを読める能力がなかったら、

私は、おそらく今の半分の広さの部屋で、鬼殺しを飲んで、最後のタバコを吸った後に首をくくるよりないだろう
(過干渉で人格否定が得意な金持ちの親族と絶縁した私は、生活保護受給者になることもできないのだ)

つまりは、私を現世に留まらせてくれているのは、こうした知識のおかげであり、こいつどうしようもなくて癪に触るけど仕事頼むか、と思っていただけるお客様のおかげである。

勉強している用心棒

というわけで、私は、勉強している、してない、ということよりも組織人としては「勤勉」であるかどうかのほうがよほど重要なことだ、という考えを持っている。
そんなのは当たり前で、勤勉でいて、かつ勉強しろ、っつってんだよ、という話のような気もするのだが(実は元エントリをちゃんと読んでいない)
正直なところ勉強する人ってそんなに必要ですかね?という気がする。

この事を理解するためには、まず、舞台をネットから実際のオフィスに移して考えてみることが肝心である。

ここに「勉強している」若手プログラマがいるとしよう。
彼のマシンは当然Macであり、homebrewが入っていて、もちろんDockerもインストール済みである。
エディタはこの間までAtomを使っていたが、今はVimがお気に入りだ。
彼は朝のコーヒーを飲みながら、Webpack4で、ES6をトランスパイルしつつSCSSをコンパイルする。
今回のプロジェクトではSSRのためにNuxtを使おうかと考えている。

という彼の隣には、プログラマ歴10年の「勉強しない」中堅プログラマが座っているが、彼は一生懸命Windows秀丸エディタ(謎のシリアルコードでアクティベートしたもの)とWinSCPを立ち上げて、せっせとプレビューサーバーに生PHPを書いてはアップロードを繰り返している。

この二人の生産性の比較、というのもおもしろいテーマだが、なんか考えるのが面倒なので、とりあえず、勉強しているプログラマのほうが10倍ぐらい生産性が高い。ということにしよう。

まず、プログラマ個人の問題で言うならば、「勉強している」プログラマが「勉強していない」プログラマの10倍給料が高いということはあり得ない。経験上、給料の差は年収にして100万は超えないのではなかろうか?

同じ時間働いた時、「勉強している」彼の生み出す付加価値が、「勉強しない」プログラマの10倍を超えるだろうか?それもあり得ない。

この世界で発注されるシステムの90%以上は凡庸である。どこからかパッケージを買ってくるか、Wordpressをいじれば、できそうな案件が半分ぐらいある。
それをSPAで作ったからといって、Amazon ECSまたは、サーバーレスでバックエンドが構築できるからといって、単価を数倍に上げることのできる営業など、この世に存在するのだろうか?

管理者から「勉強している」プログラマはどう見えるだろうか?
なんか困った時に助けてくれる、非常に重要な人材であることはわかる。
きっと、単価の高い困難な仕事も任せられるだろう。
でも、彼のために困難な仕事を受注できるだろうか?プロジェクト中に彼が辞めてしまったら?何しろ彼のスキルは高い。どこにでも転職できるのだ。いつ辞めてしまうかわからない。

それだったら、「勉強しない」けれど、辞めそうにもないプログラマ連中にやらせる簡単な仕事をとったほうがいいのではないか?
「勉強している」彼は、プロジェクトが火だるまになったり、sourceMapがついたわけわからんプロジェクトを押し付けられた時の保険にするのが最適だ。と考えるのが合理的だ。

つまり、「勉強している」プログラマなんてものは、江戸時代の賭場の奥で酒をくらっている用心棒よろしく、何かあった時に「先生、お願いします」と行って、出ていってもらって、無頼漢の何人かを斬ってもらうのに使えるのが関の山ということになるのだ。

勉強しないプログラマが死ぬ穴

もちろん、これらの話は受託中心のクソ現場の話であって、大阪ではこういうクソ現場が9割なのだが、東京は、ブロックチェーンディープラーニングを駆使しまくって、プログラマの年収が1200万ぐらいの現場がゴロゴロあるのかもしれない。

そのようなプログラマの生産性が企業の事業に密接に関係しているような会社では、「勉強しない」プログラマが論外であることはわかる。
「昨日のオーバーロードⅢの9話でフールーダが平伏してなかったね」
「LV40確定っしょこれは。」
みたいなノリで
「テスト書くの?このサービスクラスはDIコンテナになってるから」
「あーじゃあテストで使う時はスタブ注入しとくわ」
という会話をできる人材で固めないと事業の存続そのものが危ういのである。

しかし、そんな現場に「勉強しない」プログラマがどうやって紛れ込んだのだろうか?
間違って入ったとしても1週間ぐらいでわからないものだろうか?

人材採用やプログラマの待遇に根本的な問題があるとしか思えないのは気のせいなのだろうか?

とりあえず、気のせい、ということにして先に進む。

高度な人材を確保することと同様に、それほどでもない人材を高度人材に変換することも重要である。ふむ。
そういう意味では、勤務時間の内外であるかはさておき、「勉強しない」プログラマは面倒な存在になる。

おそらく彼は、gitレポジトリを破壊し、本番サーバーに直接ファイルをアップロードして、デプロイプロセスをクラッシュさせ、EC2インスタンスをググりながら、シャットダウン→起動を繰り返す存在になるだろう。

しかし、それのどこが「勉強しない」プログラマのせいなのだろうか?そんな奴にmasterブランチのアクセス権を与えたり、CIサーバーの操作をさせ、AWSのIAMユーザーパスワードを教えた奴のせいではないのだろうか?

結局のところ、「勉強しない」プログラマを非難している人というのは、まわりが自分と同じレベルだったら自分も楽ができるのに、と思っている「優秀な」プログラマか、プログラマの素養も見抜けないのに、何らかのポジションにつけてしまって困っている管理者か、自社のプログラマがみんな「勉強しない」ことに気づいて卒倒している元エンジニア経営者ぐらいなのかもしれない。

どれも、本人とは関係がない。

「勤勉」に仕事をしてさえいれば、誰にも非難されない。
そういう社会のほうが、清々しいと私は思う。


俺みたいになんなよー


ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック