エンジニアは何を勉強すればいいのか。効いたこと・効かなかったことを正直に書く
「何を勉強すればいいですか?」
これ、よく聞かれる。エンジニアの友人からも、異業種の人からも。
後ろには大抵、「何から手をつければいいか分からない」とか「勉強しても身についている気がしない」という不安がある。何かしなきゃという焦りはあるのに、方向が決まらなくて動けない、あの感覚は僕にも覚えがある。
正直に言うと、毎回少し困る。答えが「その人による」になるから。でもそれだと何も言っていないので、自分の経験ベースで話す。
勉強より「本番」の方が圧倒的に速い
新卒でブロックチェーンゲームの開発に入って最初に思ったのは、インプット量より実装量の方が全然大事だということ。
入社前、Web3の本を読んで概念は理解していた。でも実際にスマートコントラクトを書いて、テストして、デプロイして、バグを踏んで直して、初めて「分かった」という感覚になった。本で読んだことの10倍くらいは実際に手を動かして覚えた気がする。
フリーランスになってからも同じで、「Expo使ってみたい」と思ったら、とりあえず何か出してみた。半年以内に2本リリースできたのは、学んでから作るんじゃなくて、作りながら学ぶ順番にしたからだと思っている。ただし、どちらもユーザーはほぼ来なかった。宣伝をほぼしなかったので、誰の目にも触れないまま終わった。技術は身についたけど、届けることは別のスキルだと痛感した。
「本番で詰まったら怖い」という感覚はある。でもその怖さの正体は、失敗することより「分からないことが分からない」状態にいることだ。実際に詰まってみると、少なくとも「何が分からないか」は分かる。そこから調べるのは、想像より怖くない。
「広く浅く」より「一個深く」が先
スキルアップを考えるとき、広く取ろうとして中途半端になるパターンはよくある。僕もやった。
新卒のころ、バックエンドをやりながらフロントもデザインも触ろうとして、全部が薄くなった時期がある。その後、バックエンドに絞って深く掘ってから、フロントやインフラは自然と付いてきた。
一個「これなら話せる」というものができると、そこを起点に広げやすくなる。最初から広げようとすると、どこにも起点ができない。
『達人プログラマー』(David Thomas / Andrew Hunt)に「知識のポートフォリオを定期的に投資せよ」という話が出てくる。投資と同じで、分散しすぎると全部が薄くなる。一つを深く掘ることへの自信は、この本からも確認した気がしている。
波が来ている領域に乗ること
これは戦略の話なんだけど、勉強する領域の選び方として、「今波が来ているところ」に乗るのは合理的だと思っている。
Web3に入ったのも、AIアプリを出したのも、フィンテックに移ったのも、全部「来てるな」と感じて動いた結果。波が来ている領域=まだ人が少ないニッチな場所に飛び込むと、少し真剣に取り組むだけで「その領域に詳しい人」になれる。競合が少ないから、早く頭一つ抜けられる。
ただ、興味がない領域では続かないのでそこだけ注意が必要。
Web3に関しては、正直ブームの前後で学ぶ人の密度が全然違った。早い段階で入っていれば、情報が少ない分だけ自分で手を動かして理解するしかない状況になる。それが結果的に深い理解につながった気がしている。タイミングは戦略の一部だと、今は思っている。
日本のIT・デジタル人材は2030年までに最大79万人不足するとの試算がある。需要が供給を上回り続ける構造は変わっておらず、波は止まっていない。
79万人足りないということは、今この瞬間も「できる人が来てくれるなら何でもいい」という会社が山ほどある。エンジニアが「自分に市場価値があるか」を不安がるより、どの波に乗るかを考えた方がずっと生産的だと思っている。
結局、何から始めればいいか
「何を勉強すればいいか」という問いへの答えは、「自分が出せるものを一個作ること」が一番近い気がしている。
勉強してから作るより、作りながら勉強する方が速い。広く触るより、一個深く掘った方が起点ができる。その領域が今盛り上がっているなら、なおいい。これは自分が試してきた順番の話で、理論じゃない。
AIについて言えば、僕はほぼOJT的に使い倒しながら理解してきた。チュートリアルをひと通りこなしてから、というより、実装中に詰まったらAIに聞く、その繰り返しだ。使いながら覚える方が定着するし、何より飽きない。
手を動かす環境があるなら、まずとりあえず何か出してみることだと思っている。完成度は後でいい。
とはいえ、これはエンジニアとして動いてきた自分の話なので、職種が違う人には違う答えになるかもしれない。参考程度に。