こんにちは。ざわかける!のざわ(@zw_kakeru)です。
「エンジニアは休日も勉強をしないといけないのか?」
「優秀なエンジニアは休日も勉強しているのか?」
「どうやったら休日にコードを書く人間になれるのか?」
IT業界でよく議論される話題です。
「優秀なエンジニアは皆休みの日も勉強してるよ」
「土日でやってるのは趣味、勉強じゃない」
「土日も勉強させたいならその分給料出せよ」
「エンジニアなら新しい技術に興味あるでしょ」
「勉強したい人はすればいいけど、それを強要するのは間違ってる」
「私には絶対無理」
「一体何をモチベーションに休日にコードを書いてるの」
こんな言い争いが日夜繰り広げられています。
これについて私の意見を書いていきます。
私は「ある程度実力があって自分で0から作品を作り上げることができるかどうか」によって意見が分かれるのではないかと思っています。
これができる人は休日もコードを書き、できない人は書かない。分かりやすいですね。
現役でエンジニアをやってる人なら理解できるかと思いますが、エンジニアとしてIT業界に入っても基本的に自分で0からモノづくりをすることってほぼ無いんですよね。
大体はそれまでに会社で作り上げたプロダクトがすでにあって、それの機能を追加したりメンテナンスをしたりするお仕事を任されます。
そしてそれは10年経っても、部署が変わっても同じ状況だったりします。
そうすると何が起きるかというと、そこで働く人は「すでに存在しているプロダクトに対して機能追加、メンテナンスをする」という能力しか持っておらず、「新しいものを0から生み出す」能力は一切身についていません。
一方で休日にコードを書く場合、何かしらの自分のプロダクトを0から生み出す必要があります。
ここのハードルが越えられないから、いつまで経ってもそれ以上の展開が生まれないのです。
これもよく言われることですが、日本人は1を100にするのは得意だけど、0から1を生み出すことは苦手です。
1→100は基本的に誰でもできるのです。
0→1ができるかどうか、これが個人レベルでの開発を可能にし、結果として休日もコードを書く人間になるかどうかの分かれ道となるのです。
そしてこれは才能ではなく、努力で身に付きます。
休日もコードを書く人間になりたいのであれば小さなものでいいから0→1の経験を積むしかない、自分でやってみるしかないのです。
参考程度に、私が過去に0→1を実践してみたとても小さな例を挙げておきます。
0→1の経験を積んでエンジニア的な思考ができてくると、日々の生活の中でも色々な部分に気がつくようになります。
「これ毎回やるのめんどくさいな、こういうシステムがあればショートカットできるぞ」
「これってシステム化すればもっと簡単になるよな」
「こういうシステム組めばいけそう、ちょっとやってみるか」
実力がある人ならここで「よし、なんか作れそうだから作ってみよう!」となります。
ここで発生するのが0→1の作業であり、優秀なエンジニアはこれをこなすことができます。
その過程で分からないことが出てきても、実力があるのでその場で調べて解決し、自分の中に吸収しつつ前に進んでいきます。いわゆる自走力というやつですね。
この「なんか作れそう」が一番のポイントです。
実力がない人は「なんか作れそう」とはならないし、そもそも「自動化できるな(できそうだな)」と気づきすらしない。
そこの差かなと思いますね。
「なんか作れそう」となる時、すでに頭の中ではシステム構成が8割以上完成していてあとは手を動かすだけの状態です。
そして残りの2割は、「やったことないけど多分できるやろ」と思ってます。
つまりプロダクトの立ち上げから完成までの見通しはすでに立っている状態です。
そうして作り始めて、本人が実際に「勉強」をしているのはこの2割の部分だけです。
残りの8割はすでに会得済みの知識を使って手を動かしてるだけなのです。
しかし外から見るとこれらの区別はつかないので、「ずっと勉強してる」ように見えるのです。
私の結論としては、「優秀なエンジニアは休日ちょっとだけ勉強してて、あとは気持ちよくコードを書いてるだけ」です。
そしてそれを優秀でないエンジニアが見たとき、「あいつらはずっと勉強してる」と思うものなのです。
もしもあなたが休日もコードを書く側の人間になりたいと思うのならば、小さなものを自分で0から作り上げる練習をする必要があるかもしれません。
どんな業界であっても、その分野で能力が高いのは「好き」と「得意」を両方持っている人なのです。
今回は以上です。