見出し画像

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

注)こちらの記事は、旧ブログに2018年11月に投稿したものです。

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)

- まず、エンジニアである友人のすすめに沿って、Jekyllというスタティックサイトジェネレータをつかって、本ブログを開発しました。主にYouTubeのチュートリアルをみながら、開発を進めていきました。HTMLとSassを使い、コマンドでGithubにpush。Github pageで公開して、独自ドメインを設定しました。
- 3月下旬、のちに入学することになるコーディングブートキャンプIronhackがベルリンで5月からコースをスタートさせるということをオンラインニュースで知りました。IronhackのSNSを追っていたら、女性向けに奨学金を提供するキャンペーンを開催することを知りました。これは良いチャンス!と興奮しながら、奨学金プログラムに応募。同時に、翌月下旬の奨学金テストに向けて、Javascriptの勉強を始めました。
- Javascriptの教材はUdemyのThe Complete JavaScript Course 2018と、Eloquent Javascriptを使うことに。

ここから先は

5,245字

¥ 300

この記事が気に入ったらサポートをしてみませんか?