こんにちは。倉内です。
エンジニアを目指してプログラミング学習を始めた方の中には、「何時間勉強したらエンジニアになれますか?」と質問する方がいらっしゃいます。
一般的には、プログラミングスクールの初心者向けカリキュラムは約200時間ほどで組まれているそうです。その時間で基礎を身に着け、エンジニアとして転職するためにはそこからさらに学習が必要です。
また、エンジニアが一人前になるまでに実務経験は3年(約6000時間)必要とも言われます。
ある分野でプロになるためには、スキルを磨く時間が1万時間必要という「1万時間の法則」は有名ですが、たとえば以下の記事では一流エンジニアは3万時間以上を費やしたと紹介されています。
一流プログラマーになるためには「1万時間の法則」ならぬ「3万時間の法則」が適用される - GIGAZINE
一流の人たちは「時間をかけたから一流」なのでしょうか?
おそらく時間をかければ誰でもそうなれるわけではないことは想像がつくかと思います。ただ、勉強しなくてもいいわけでもなさそうです。
今回は、エンジニアを目指す皆さんと一緒に、なぜ時間だけでは測れないのか、そして実際にエンジニアになるためにはどういった勉強をするといいのかを考えていくことにします。
技術の習得に終わりはない
冒頭でも触れたとおり、もしプログラミング勉強に費やした時間が重要で「○時間やったからプロになれる」と言えるのであれば、時間をかければ誰でも一流のエンジニアになれることになりますがそれは違います。
時間をかけることに意味がないと言っているのではありません。プログラミングというのは、どちらかというとその人の資質の有無や学ぶ内容のほうが大事な分野だからです。
さきほど冒頭で紹介した記事で取り上げられているのは、特定の分野で功績を挙げている一流のエンジニアたちですが、「振り返ってみると自分の成し遂げたいことのためにそのくらいの時間をかけていた」という場合がほとんどだと思います。生年を見てみると、長くIT業界の第一線で活躍されている方ということも分かりますよね。
実際に現役のエンジニアでも「やりたいこと・作りたいものがあって、それの実現のため夢中になりいつのまにかプログラミングに時間を費やしていた」と答える方が多くいます。
エンジニアになるまではもちろんですが、なったあとも多くのエンジニアはなんらかの形でスキルをアップデートしたり、新しい技術を学んだりしています。エンジニアとして働いていると、目的や課題に合わせてつどスキルアップが必要な場面に出くわすため学ぶことに終わりはないのです。
そのため今は実務未経験でも、IT技術に興味や関心を持って学び続けられる人はその時点で資質があると言っていいでしょう。
エンジニアに必要な資質とは
さきほども触れましたが、エンジニアに必要な資質についてもう少し考えてみたいと思います。
最近採用担当やCTOの方にお話を聞くと、「技術力の高さよりも課題解決の手段として技術を使える人を求めている」と言われることがあります。
もちろん分野(たとえば研究開発や先端技術開発など)や採用ポジションによっては、技術力の高さがもっとも重視される場合もあります。しかし一般的な企業でエンジニアとして働く場合、それだけとも言い切れません。
特に自社サービス企業のエンジニアの仕事は、決められた仕様に沿ってコードを書くのではなく、ユーザーニーズに応えたりビジネス的な課題をどうやってシステムで解決するかを考えたりすることも求められます。
以前paiza利用ユーザーに実施したアンケートで、「エンジニアの資質として、特に重要だと思うことはなんですか?」という質問をしました。
1位の「新しい技術への好奇心・探究心」は約8割の方が選んでおり、飛び抜けて多い結果となりました。2位「プログラミング自体が好きであること」を選んだ方も多く、3位は「常に効率化・自動化を意識していること」となりました。
好きにならなければエンジニアは勤まらないというわけではありませんが、さきほども述べたとおり、興味を持って学び続けるためには1、2位で言われているようなことが必要になってきます。
4位以降は「コミュニケーション能力」「発想力」「協調性」と続いています。この結果は、ちょっと意外に思う方もいるかもしれません。
個人が趣味で開発するのとは異なり、会社では多くの場合チームで開発を進めます。ここでいう「コミュニケーション能力」は話すのがうまいということではなく、チーム(ときにはエンジニア以外の職種の人達)と円滑にコミュニケーションを取りながら仕事を進められることを指しています。
こういった部分も「プログラミングを何時間勉強すればエンジニアになれる」と言えない理由のひとつになるかと思います。
未経験からエンジニアを目指すために実践すること
ここからはエンジニアになりたい方が、考えるべきこととやるべきことを具体的にお伝えしていきます。
学習すべき内容をどう選ぶか
趣味であればどのようなことを学んでも構いませんが、エンジニアに転職したいと考えている場合、ある程度先を見越して学ぶ内容を決めたほうがよいでしょう。
まずは以下のことがある程度イメージできているかを考えます。転職活動中に面接でよく聞かれる内容でもあります。
- なぜ他業界・他職種からエンジニアになりたいか
- エンジニアになって何をやりたいか
- どんな会社に入りたいか
- 将来どんなエンジニアになりたいか
これらが定まらないとどんなプログラミング言語やフレームワークを学ぶべきかも分かりませんし、もっと具体的にはWebサービス開発と業務システム開発ではよく使われている技術が異なるため、自分が転職するにあたって学ぶべきものと学んだものとがずれる可能性もあります。
こういった質問に対して「特にないかも…」という場合は、エンジニア転職についてもう一度考え直す必要があるかもしれません。
転職活動もスムーズにいきづらいですし、エンジニアになったあとで後悔してしまうこともあるからです。
また、上記がある程度明らかになっているとして、自分がやりたいことも大切なのですが、需要があるかどうか(=求人があるかどうか)も転職する際には気にしなければならない点です。
先日paizaが実施したアンケート調査では、エンジニアが学びたいと思っている言語と求人が多い言語とでは乖離があることが分かりました。
エンジニア経験がある人が転職をする場合は、言語や技術以外にチーム開発の経験やプロジェクトマネジメントの経験と合わせてアピールすることで十分他領域への転職も可能ですが、実務未経験でエンジニアへの転職を目指す場合は少し話しが違ってきます。
もしすでに転職活動を始めていて苦戦している方は、未経験可の求人に記載が多い言語や技術を学ぶという考え方をしてみてもよいでしょう。
求人票の見方については、以下の記事で詳しくご説明していますのでよければ参考にしてみてください。
paizaラーニングを活用してスキルアップ
paizaラーニングは、プログラミングを初めて学ぶ方向けの講座はもちろん、アルゴリズムやSQL、機械学習について学べる講座、さらにネットワークやセキュリティの基本を学べる講座も公開しています。講座一覧はこちら
その中でもある程度基礎学習は終えていて、これからエンジニアを目指す方におすすめなのは、Webフレームワークを使ったアプリケーション開発講座です。
開発環境の構築が難しいと感じている方でもWebブラウザ上で学びながらコードを書いて実行までできるので、すぐに学習を始められます。
サンプルはコードを修正して作ることができるため、そのあと自分のオリジナル作品を作る際に役立ちます。ぜひご活用ください。
さらに作ったサービスやアプリケーションは選考でアピールできるよう、ポートフォリオにまとめておくことをおすすめします。ポートフォリオについては、以下の動画講座で解説しています。
まとめ
エンジニアになるために必要なのは学習時間の長さではなく、学習する内容や技術に興味を持って学び続けられることが大切であるとお伝えしました。
今エンジニアとして活躍されている方は、仕事に必要だからというのはもちろんですが、エンジニアになってからも新しい技術やよりよい手法に自ら興味を持ってスキルアップされている方が多いように思います。
まだそれほど手を動かしていないのであれば、ぜひpaizaラーニングなどで実際にコードを書いてみて自分がどう感じるか体験してみてください。
ある程度スキルが身についたなと思ったら、スキルチェックに挑戦していただくのもおすすめです。
スキルチェックは、Webサービス開発企業などで求められるコーディング力やテストケースを想定する力などが問われる問題に挑戦できるサービスです。結果によってS・A・B・C・D・Eの6段階のランクを取得できます。
詳しくはこちら
ランクを取得すると、paizaが運営する若手・未経験者向けのエンジニア転職サービス「EN:TRY」で公開している、開発経験がない人・少ない人でも応募できる若手チャレンジ求人へ応募可能です。EN:TRYでは、事前の書類選考なしで複数求人へ応募できます。
詳しくはこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら