「どこまで勉強したらエンジニアになれるか」の僕なりの考え
はじめまして、ワタナベと申します。
普段はフリーランスエンジニアとして、フロントエンド、バックエンドの開発を行っております。
今回はエンジニア転職を目指している方でよく見かける、「どこまで勉強したらエンジニアになれるか」という疑問について、僕なりの考えを書いたので、もしどなたかの参考になれば幸いです。
結論
文法身に着けて何かしらマトモなポートフォリオを作ったらすぐ転職活動して良い。
なぜか
結局業務をしないと身につかない知識が多すぎるというのが個人的な考えです。
例えばフロントエンドエンジニア(仮にReactエンジニア)、を例にすると、業務で「管理画面を作って」と言われることがよくあったりします。管理者がログイン後、データを見たり、各ユーザに対してメッセージを一括投稿できたりするような画面ですね。
そして管理画面では、列ごとに並び替えできるテーブルみたいなのがよく使われたりします。
さて、この「列ごとに並び替えできるテーブル」の実装方法について、Reactを本や動画で学習し続けて身に着けることができるでしょうか?
殆どの初学者は、本や動画で実装解説されてるとこを見たことがないと思います。僕も少なくとも本では見たことありません。
なぜなら、この「列ごとに並び替えできるテーブル」を実装するために必要なスキルは、Reactの文法とは殆ど関係ないからです(もちろん最低限のReact文法知らなければ実装の前提にも立てませんが)。
これを実装するために必要なスキルは、
・ライブラリを探せるスキル(ただ探すだけでなくて、複数候補を見つけてどれが適切か纏めて説明できるスキル)
・ライブラリが見つからなかった場合に代替案を提案できるスキル
・自前で実装するとなった場合に、ある程度のCSSを書けるスキル
この辺りだと思っています。いずれもReactはほぼ関係ないスキルです。
つまり?
つまりReactの本や動画を目的もなく見続けても、実際に業務をしなければ身につかないスキル(かつ実務で求められるスキル)が多々あるということです。
そういったことを考えると、そもそも基本文法ごときに何か月も時間を割くのは勿体ないと考えています。
こういうことを言うと、「そんな基本文法学んだ程度じゃ採用してもらえないよ」という方もいるかもしれません。ただそれは、「面接スキル」が足りないだけ、と考えています。
なぜなら、たった数十分程度の面接で、その人がどれくらい知識を持っているか、どうせ分からないからです。
加えて、そもそも一口にReactエンジニアといっても、企業が今求めてるスキルを持ったReactエンジニアなのか、そうでないReactエンジニアなのか、様々です。
前述の例でいくと、企業が今、新しく管理画面をReactで作りたい状況だった場合、企業が求める人材はただのReactエンジニアではなくて、「管理画面を作るのに慣れたReactエンジニア」です。
でも実際の面接でここまで細かいことを聞かれることは多くありません。
Reactの基本文法さえできて、ポートフォリオがマトモで、面接スキルが高ければ、管理画面を作ったことなくても受かるケースは十分多いです。
そもそも企業が求める人材像と完全にマッチングすることの方が難しいです。完全にマッチングするのは、参画してからそのプロダクトを作るために試行錯誤して必要なスキルを身に着けた時です。
おまけ
おまけとして、もう一つ例を挙げてみます。
前述のテーブルの他によくある機能として、画像アップロードがあります。このときも考えることは色々あります。
・どの画像アップロードライブラリを使うか
・どこにアップロードするか
・どのタイミングでアップロードするか
・バリデーションはどうするか
・バックアップはどうするか
・アップロードした画像の自動削除などは必要か
いかがでしょう。React自体はほとんど関係ないです。
「じゃあ、こういうのも含めて全部独学してから転職したら良いんじゃない?」という方もいるかもしれません。
ただそれは難しい上にコスパが悪いと考えます。
例えば上記アップロードの例で、独学でS3にアップロードする方法で学習したとします。
その後転職できたとして、実務ではS3ではなくGoogle Cloud Storageを使う設計だった場合、S3の知識(とそれに付随するAWSの知識)を学んだのは、無駄とまではいかなくても、効率は悪いと思います。
では、S3もGoogle Cloud Storageも両方独学してから転職活動するか?これは更にコスパ悪いと考えます。
どれだけ独学で理論武装しても、以下の問題が発生します。
・実務で使わなかったときどうせ忘れる(転職後、画像アップロードのある画面を作る機会がなかったケース)
→ 大体ひとつの案件に数か月~数年は関わることになると思うので、どれだけ学習してても使わなければどうせ次の案件までに忘れます
・数年後に同じ技術が最適解とは限らない
→ 前述の画像アップロードの例でいくと、極論数年後はS3などが使われてない可能性があります
終わりに
長文になってしまいましたが、ほとんどがおまけです。
言いたかったのは、最初の結論に書いた通り、さっさと転職した方が学習コストって意味だけ考えるならコスパ最強と思ってることです。どうせ落ち続けても転職活動自体はほぼタダですし。
まぁ転職するかはさておき、何事も学習する上では、
・学習してもどうせ使わなかったら忘れる(自己満あるいはただの無駄で終わってしまう)
・結局殆どの人間は、よほど満たされてない限り、実利に繋がらないとモチベあがらない(今回の例の実利は収入)
は意識するのが大事と思ってますし、上記を両方解決する方法として、「さっさと仕事にする」がひとつあるって感じですね。
わたしもすぐに転職した方が良い派です。おっしゃる通りで、開発しながら学ぶものなんですよね。ソフトウェアは