プログラミングを1000時間勉強して、ソフトウェアエンジニアになるまでにやったこと

1000時間ほどプログラミングを勉強して、ソフトウェアエンジニアの仕事を得ました。勉強した内容と意識したこと、かかった費用などをくわしく共有します。

steps

1000時間プログラミングを勉強して、未経験からソフトウェアエンジニアの仕事を得ました。 こちらの記事で、勉強した内容と意識したこと、かかった費用などを共有したいと思います。

未経験からエンジニアとして就職するまでに必要な勉強内容、またその方法というのは、場所によっても人によっても異なるので、一つのベストプラクティスがあるわけではないですが、参考程度にご覧いただければと思います。

そもそも、なぜ1000時間?

私はプログラミングの勉強を始めるときに、1000時間ぐらい勉強して、就活をしようと最初に考えていました。
なぜ1000時間かというと、プログラミング学習に関するYouTube動画で「1000時間勉強すれば、なんかしらのエンジニアの仕事につける」というアドバイスを聞いたからです。

実際には500時間勉強した時点でフリーランスでWeb開発の仕事を受け始めるとか、もっとじっくり2000時間ぐらいコンピュータサイエンスの知識も含めて学習してからエンジニアになるとか、人によってどのタイミングでプロとして仕事を始めるかは様々かと思います。

私はなんとなく、1000時間ぐらいやればスタートラインに立つ資格があるんじゃないかと思いました。

勉強を始める前にやったこと

時間をつくる、仕事を断る

勉強を本格的にスタートさせる前にやったこと。
それはまず、どうやって1000時間を作るかを考えるということでした。 私はそれまでフリーランスで仕事をしていたので、時間の調整がしやすい状況にありました。 なので、しばらくはパートタイムで月100時間ぐらい勉強し、どこかのタイミングでフルタイムで勉強のみをしようと考えました。

とはいえ、それはすなわちいただく仕事の依頼を断ること、収入が減るということを意味していました。
プログラミングの勉強を始めてから、魅力的なお仕事の依頼をいただいたり、問い合わせをいただくこともありましたが、勉強の時間を作ることを優先して断ることも多かったです。

それまでは面白い仕事を受けて、価値を提供することを中心に生活していたので、このマインドの切り替えには少し時間を要しました。

計画を立てる、ロードマップを描く

エンジニアになると決めて、早い段階でやったことは計画を立てること。つまり、ロードマップを描くということです。

既存のロードマップとして、こんなものがあります。

あと、ベルリンのエンジニアの求人情報を見ながら、今マーケットで求められているスキルを確認しました。
ここから逆算して、何をするべきかをリストアップしました。

仲間orメンターをつくる

仲間やメンターなど、コーディングで行き詰まったときにその悩みを共有したり、相談できる人はいた方がぜったいに良いと思います。プログラミングの勉強というのは、基本孤独なので。

私は、現役エンジニアとして活躍している友人に当初よく相談していました。
そういった友人が身近にいなくとも、今はプログラミング仲間をつくることはそれほど難しいことではないです。ツイッターでゆるくつながったり、あとは大きな都市に住んでいる場合は、地元のプログラミングコミュニティのイベントやミートアップに参加してみるのも良いと思います。

たとえば、ベルリンだとOpenTechSchoolが定期的に開催している学習会や、 Women Techmakers Berlinなどアクティブに活動している団体がいくつかあるので、そうしたグループの会に参加すると良いです。

勉強の際に意識したこと

毎日「今日学んだことは何か?」を自分に問う

プログラミングの勉強は果てしないです。順調に行かない、行き詰まることはしょっちゅうです。そんなときに心が折れて、勉強が嫌になってしまわないためにはどうするか。

私は、0.1%でもいいから昨日の自分よりも成長している、つまり何か新しいことを学んでいる状態になることを意識しました。
ほんの少しでもいいから成長を重ねていけば、いつか振り返ったときにかなり遠くに行けているはずだと、そう自分に言い聞かせていました。

成長を実感できなかったら、自分が学んだことを振り返る

本当は成長しているはずなのに、壁にぶつかったときには「なんでこんなことができないんだろう」とか「ぜんぜん成長していないんじゃないか」と思ってしまうことがありました。 そんな「認知の歪み」を直すためにも、新しく学んだこと、できるようになったことをノートに書いて、時折振り返るようにしていました。
そうすると、数週間前の自分と今の自分の差が見えて「成長しているから大丈夫」と思えました。

何が分からないのかを理解する、「本当に理解しているのか?」を問う

プログラミングを学んでいると、すぐに理解できないことがしょっちゅう出てきます。そんなときに、分からないことを分からないままにせずに、時には基本に立ち返ったりしながら分からない部分がそのままにならないように意識しました。

分からないことを理解できるようになるためにどうすればいいのか、自分は本当にこの概念を理解しているのか、理解した気分になっているのではないか、よく考えました。 分からない問題がときに大きな場合には、大きな問題を小さな問題に分けて、ステップを踏んで大きな問いに対する理解に近づくように努めました。

もちろん、完全に理解するためには膨大な時間が必要になるようなことは多いので、一旦疑問を寝かしておいて次のテーマに進むということもよくありました。
そんなときでも、疑問は疑問として書き留めておくようにしました。いつか、他のタイミングで理解できることがあるので。

概念の理解と実践をバランスよく行う

コードを書いて実際に動くものをつくる、codewarsなどでコーディングのエクササイズをするといったことが実践ならば、その原理となっている概念を理解することも同じぐらい大切じゃないかと思います。 なぜこのコードが動いているのか、他により良い書き方はないのか、を考える上ではとくに理論が大切になるかと思います。

実際にエンジニアの面接では、自分がなぜこうしたコードを書いたのか、他の書き方ではなくて、なぜこの書き方になったのかを説明しなければならない場面も出てきます。
なので説得力のあるコードを書くためにも理論も重視しました。

疲れたら気分転換をする

新しいことを学ぶのは、楽しいと同時に大変です。
なにが大変かって、脳がとっても疲れます。理論を学んだり、コーディングの練習をしていると、だんだん頭が重く感じられたり、頭痛がし始めたり、頭が疲れて眠くなったりということがしょっちゅうありました。
そんな状態で、勉強を続けようと思っても学習が非効率になって逆効果です。
そういう時は、ちょっと昼寝をしたり、料理したり、散歩したりと、気分転換や休憩をするように心がけました
とくに早歩きで散歩したあとは、頭がすっきりして、新たなアプローチを見つけられるということがよくありました。気分転換、大事。

英語で学ぶ

私は最終的にベルリンで就職したかったので、プログラミングの勉強はすべて英語で行おうと最初から決めていました。 ちなみに、ベルリンのITスタートアップの場合、ほとんどが社内言語が英語になります。

それだけでなく、英語の方がリソースが多いですし、日本語に翻訳されたものも元々は英語であることがほとんどです。
プログラミングの言語自体も英語がベースになっているので、最初から英語で理解した方が、概念が頭に入りやすいのではないかと思います。

タイムライン

さて、実際に私が学習した内容をタイムラインに沿って紹介します。 ちなみに、私が勉強を始めた時点での知識レベルはHTMLとCSSの基礎を知っているぐらいで、Javascriptの経験はゼロでした。

3月 - Jekyllで本ブログを制作、Javascriptの学習をスタート

勉強時間 100hr (合計 100hr)

参考

4月 - Javascriptの基礎に集中

勉強時間 100hr (合計 200hr)

参考

5月 - 引き続き、Javascriptの学習に集中

勉強時間 80hr (合計 280hr)

6月 - CSSとSassに注力、ブログのデザインをアップデートなど

勉強時間 50hr (合計 330hr)

7月 - Javascriptの勉強、ブートキャンプの宿題など

勉強時間 50hr (合計 380hr)

8月、9月 - ブートキャンプスタート、Canvas、MongoDB、Node.js、Express、Reactなど

勉強時間 240hr * 2 (合計 860hr)

ブートキャンプで学習した内容、取り組んだ課題などは別途noteにまとめていますが、CSS、Javascriptの基礎からスタートして最終的にはMERNスタック(MongoDB、Express、React、Node.js)までカバーしました。

学んだ内容を書くと、ざっとこんな感じです:

参考

10月 - 就職活動スタート、Javascriptの復習、Redux

勉強時間 100hr (合計 960hr)

11月 - 就活のコーディングチャレンジなど、就活終了

勉強時間 40hr (合計 1000hr)

振り返り・感想

仕事と学習を両立させるのは大変だった

ブートキャンプに参加するまでは、仕事と勉強を並行してやっていたのですが、結構きつかったです。 仕事モードから勉強モードに切り替えるのも簡単ではなく、どうやって両立させるべきか考えさせられました。
コーディングで疲れた頭で仕事に取りかかると、仕事の生産性が落ちてしまうことに気づいたので、途中からはできるだけ午前中に仕事を終えるようにし、残りはコーディングをするという形に切り替えました。

その分、ブートキャンプに入ってからは勉強だけに集中できたので、インテンシブなブートキャンプではあったのですが、一方で学習だけに集中できることがとても嬉しかったです。

なので、もしかしたら、パートタイムで仕事をしつつ学習をする期間をとるよりも、仕事をある時点で一切やめて、学習一筋に切り替えて集中してしまった方が良かったのかもしれません。
学習だけに集中できるのであれば、1000時間の勉強というのは5-6ヶ月で終えることができるはずなので。

楽しく、苦しかった

コーディングの勉強を始める場合、目標が就職なのか、それともつくりたいプロダクトをつくることなのかによって、勉強の仕方やモチベーション、楽しさなども異なるかと思います。

私の場合は当面の目標が就職だったので、そこに照準を合わせて、割とストイックに勉強しました。長い階段を一歩一歩上っていくような感じで。

すんなり概念を理解できないとき、エラーと格闘しているときはフラストレーションを感じることもありましたが、できるだけそのフラストレーションを客観視するようにしました。そうすると、自分の勉強の仕方を見直すきっかけになったり、エラーと仲良く付き合う方法も段々分かるようになりました。

楽しかったのは、codewarsなどで練習問題をとくこと、Reactで大量のデータを使って表現できたこと、コードをどんどんシンプルに書き直すことができたことなどです。

だんだんJSを使いこなせるようになると、コードを書いて実際に動くものを作るのがとても楽しくなり、没頭するようになりました。

プログラミングの奥の深さも好きになりました。少しずつ学びが深まって、視界が拓けていく過程はとてもワクワクするものでした。

かかった費用

今回のキャリアチェンジにかかった費用ですが、教材費(Udemyのコースや書籍、合計1万円ほど)・ブートキャンプの授業料(60万円ほど)だけであれば60万円ほどです。

今回は既存の仕事をストップして勉強をしたので、プログラミングの勉強に費やした時間分の機会損失コストまで含めてしまうのなら プラス200万円強とかになります。

参考記事

YouTubeやMediumを検索すれば、未経験からエンジニアになった方々のストーリーやアドバイスをたくさん見つけることができます。
私が主に参考にしたのは以下の記事です。

以上、参考になりましたら幸いです。

Latest Posts