未経験からのプログラミングの独学方法【効率が良い&超具体的な方法を公開】

未経験からの効率のよいプログラミング勉強方法 プログラミング
未経験からの効率のよいプログラミング勉強方法

こんにちは。

この記事を読んでいる人は、

・プログラミングの勉強をしたいけど、具体的にどうやったらいいか分からない
・他のサイトを見ても、具体的にどういうステップでどのようなレベルを目指したらいいか分からない

というような悩みを持っているのではないでしょうか。

僕も以前に下記のようなツイートをしました。

なので、今回はこの部分を、もう少し深堀りして解説していこうと思います。

記事を読む価値

この記事を読むことで、

・プログラミングの具体的な勉強の方法を知ることができる。
・エンジニアとして転職する場合やフリーランスとして案件を獲得するに向け、どのくらいのレベルまで到達しているべきかを知ることができる
・逆に言うと、独学やプログラミングスクールで到達する必要がない範囲を知ることができる

というようなメリットがあります。

なので、プログラミングの勉強をしたいけど、どうやったらいいか分からない・・・という人は、是非とも読み進めていただければと思います。

結論というか、まとめ

まずはこの記事のまとめです。

プログラミングの勉強は、以下の流れで進めることで最速で身につけることができます。

・1: 目標を設定する
・2: Progateやドットインストールで5割〜8割くらいの理解度(書けなくていい)を目指す
・3: (1回目)サンプルアプリを変更して作りたいものを作る (目標の20%程度の出来でOK)
・4: (2回目)サンプルアプリを変更して作りたいものを作る (目標の50%程度の出来でOK)
・5: フルスクラッチで作りたいものを作る (目標の80%程度の出来でOK)
・6: 自信を持って転職活動 or 案件獲得にGo!

何も分からない状態だと無駄に時間と労力をつかってしまうリスクがあります。

ただ、この方法で勉強を進めていけば、余計なことをせずにプログラミングのスキルをつけられて、転職や案件の獲得につなげることができます。

記事の根拠 → 僕自信が苦労したから & エンジニアの現場を知ったから

記事の根拠 → 僕自信が苦労したから & エンジニアの現場を知ったから

そのときは大学の研究でプログラミングを使うことになったのですが、周りでプログラミングをしている人がおらず、完全に一人で

・どの言語を使ったらいいのか?
・どのようなレベルが必要なのか?

ということを探し続け、つらかった思い出があります。

また、エンジニアとして社会人になったことで、

・会社が求めるレベルのプログラミング

に関しても理解しています。

なので、

・初心者からどのように始めるべきか?
・エンジニアとして転職や案件獲得に向けた手段 

に関して、アドバイスできます。

前提

まず、この話の前提です。今回の話の対象となる人は、

・プログラミングを勉強して、最速で力をつけたい人
・その結果、エンジニアとして転職したり、フリーランスとして案件を獲得したいと考えている人

です。

・プログラミングをのんびり趣味として勉強したいと考えている人
・プログラミングの勉強方法が分かっていて、何をどうすれば分かっている人

こういった方は、申し訳ありませんが今回の対象ではありません。

初心者からのプログラミング勉強方法

初心者からのプログラミング勉強方法

この記事の最初のあたりでも書きましたが、プログラミングの勉強は、改めて下記のステップで進めるとよいです。

・1: 目標を設定する
・2: Progateやドットインストールで5割〜8割くらいの理解度(書けなくていい)を目指す
・3: (1回目)サンプルアプリを変更して作りたいものを作る (目標の20%程度の出来でOK)
・4: (2回目)サンプルアプリを変更して作りたいものを作る (目標の50%程度の出来でOK)
・5: フルスクラッチで作りたいものを作る (目標の80%程度の出来でOK)
・6: 自信を持って転職活動 or 案件獲得にGo! 

以下、それぞれのステップの詳細を説明していきます。

※また、この記事では具体例としてJavaScriptを例に挙げていますが、基本的な考え方はどの言語でも変わりません。みなさんが勉強したいと思う言語に置き換えて読んでください。

ステップ1: 目的を設定する

目標は、

「とにかく最速で自分の作りたいものを作れる」

ということにしましょう。

プログラミング学習では、とにかく目に見えるアウトプットを作れていることが大事です。

そうした方が自分のポートフォリオとして使える上、面接などのときでもアピールしやすいです

いつまでもドットインストールを周回しても、成果や本当の実力には繋がりません
また、こうやってアウトプットをしていかないと、いつかはモチベーションが落ちてやめてしまいます。

なので、とにかく最速で自分の作りたいものを作る!

これが重要です。

言い換えると、完璧を目指さない、ということです。
そして何かを作ったときの知識が、ドットインストールに書いてあることの半分しかなかったとしても、それでもヨシとします。

ステップ2: Progateやドットインストールで5割〜8割くらいの理解度(書けなくていい)を目指す

Progateとかドットインストールの各言語の項目をまずは1回やってみましょう。
それらの内容を見ながら、同じものを作ってみることになります。

また、写経をするときに脳死して手を動かしているだけ・・・という人がいます (過去の僕もそうでした。反省)

ただ、それだと頭に入ってこないのでダメです。
頭を使いながら、文法を出来る限り理解するように書いてきます。

ちなみに

どうしても無料でやりたい・・・!

とかであれば、「JavaScript 文法」という感じでググると、JavaScriptの基本的な文法を説明しているサイトがいっぱい出てくるので、それを使うのもアリです。

いきなり文法ばかりを説明されても・・・という人は、

マンガで分かるJavaScriptプログラミング講座
https://crocro.com/write/manga_javascript/wiki.cgi

などのサイトもあるので、複数のサイトをいろいろ見てみるのがオススメです。

複数のサイトで同じ内容を見ているうちに、内容を立体的に理解できるようになってきます。

どこまでを「基本が理解できた」とするか?

目標としては、ドットインストールやProgateの半分くらい内容を理解できたレベルでいいかと思います。
そして、目指すレベルは「理解できた」というレベルでよいです。まだ、スラスラと使いこなせる必要はありません。

イメージとしては、

・ifというものを使えば条件分岐をさせられるんだ、ということさえわかればOK。
・loopすることができるんだ、というくらいでOK。

こんな感じでよいと思います。

何故なら、そこで覚えた文法は、あくまで全体の一部似すぎないからです。

実践になると、(一例ですが)for-loopでも、いろいろな派生型が生まれてきます。具体的には、いろいろな形のオブジェクトや配列の各要素に対してループを回すことになります。
なので、ドットインストールやProgateを完全に理解したとしても、それらを完全にカバーすることができません。

なので、最初の勉強のフェーズでは、完璧に覚える必要はありません。あくまで、「こんなものがあるんだ」ということさえわかればOKです。

正直、このレベルだと、プログラミングをしているときに、基本的な文法で詰まることもあると思います。

でも、大丈夫です。作りながら、文法を何度も何度も調べればいいだけの話です。

モダンなUIフレームワークについて

また、例えばドットインストールやProgateの内容によっては実践で使わない可能性もあります。

例えばフロントエンドをやるときに、今は純粋なJavaScriptではなく、ReactとかAngularなどのフレームワークを使うことが多いかと思います。

なので、JavaScriptを完璧にするよりは、そういったUIフレームワークをマスターした方が、転職や案件の獲得にはつながります。

なので、(一部反対意見はありそうですが)

・JavaScript単体でマスターする必要はない。
・ある程度文法などが分かるレベルまでいければOK。

というところを目指せばOKかと思います。

具体的にいうと、ドットインストールのJavaScriptだと、

詳解JavaScript 基礎文法編: 大事。8割くらいは理解できている状態が理想
詳解JavaScript オブジェクト編: 大事。8割くらいは理解できている状態が理想。
詳解JavaScript DOM編: 「こんな感じか」ということが理解できればOK (実際はUIフレームワークでやることも多いため)

このくらいのレベルが理解できていれば大丈夫かと思います。

※とはいえ、基本を無視していいというわけではありません。
 プログラミングを本質から理解するには、こういう基本の部分は必須の知識となります。
 あくまで、初心者が最速で就職や案件獲得をするに向けての優先度、という話です。

「最初はこの理解度でいい」の補足説明

大事なのはそれぞれで「完璧を目指さない」ことです。
そうしないと、ドットインストールの内容だけでも挫折する可能性があります。

というのも、基礎文法編の中にアロー関数とか、初心者にとってはなかなか難しい内容が入っています。

ので、最初は「こんなときに使うのか・・・」くらいのイメージを持てるくらいで大丈夫です。実際は、何かを作っていく中で、「あれっ?」と思って戻ってきた方が、100倍頭に入る。

かつ、こういった教材では、エンジニアとしては非常に重要な、「見やすいソースコードの書き方」などは身につきません。

あくまで初心者の極めて小さいレベルの書き方です。

なので、早く転職したり案件を獲得すべきです。この「見やすいソースコードの書き方」などは、独学でやっても身につきません。
 (プログラミングスクールに行ったとしてもそこまで教えているところはないと思うのと、実践で経験するのが一番身につくので、そういう意味でも、早く実践を経験できる転職や案件の獲得をおすすめします)

ステップ3: (1回目)サンプルアプリを変更して作りたいものを作る (目標の20%程度の出来でOK)

(1回目)サンプルアプリを変更して作りたいものを作る (目標の20%程度の出来でOK)

ここまで終わったら、早速自分の作りたいものを作ってみましょう。

どのくらいの完成度を目指すか?

ここからは、実際に自分の作りたいものを作っていくフェーズになります。

いくつかの作りたいものを作るのですが、その中で、あなたが目標とする完成度と成長のレベルはこのようになります。

・1つ目: 自分の理想のクオリティの20%くらいのレベルを目標。
・2つ目: 自分の理想のクオリティの50%くらいのレベルを目標。でも、1回目よりも内容を深く理解できる。
・3つ目: 自分の理想のクオリティの80%くらいのレベルを目標。でも、2回目よりも内容を深く理解できる。

つまり、3つ作り終わる頃には、その言語に関してはかなり使いこなせているレベルになります。

言い換えると、1つ目を作っているときには、完璧を目指さないことが重要です

大事なので繰り返し言います。絶対に完璧を目指してはいけません
あくまで20%くらいの出来で十分です

ここばかりは、思いっきり自分を甘やかしましょう。

どういう風に作ったらいいか?

とはいえ、いきなり作るとは行っても、フルスクラッチ(完全にゼロベース)で作るのは大変だと思います。
僕も何かを作りたいとなったときに同じ悩みにあたったのでよくわかります。

なので、ウェブサイトに転がっているサンプルアプリやサンプルコードを使いましょう。
まずは、ある程度動いているものを少しずつ変更するのがおすすめです。

例えば、

 カレンダーも電卓もできる!JavaScriptで作られたWeb作品7選
https://www.sejuku.net/blog/3834

には、カレンダーや電卓などのソースコードがあるので、それを自分の開発環境にコピー&ペーストして、ボタンの位置を動かしたり、ログ出力をしてみましょう。

こうやってやっていると、

・この処理は画面表示のここに影響があるのか
・この関数はこんな風に使われるのか

というようなことを理解できると思います。

全体の流れや仕組みを理解できたら、実際に自分の作りたいように変更していきます。

たとえばToDoリストを作りたいのであれば、

・その表示件数を10件→20件に増やしてみる

というあたりから始めて、

・少し画面の表示(UI)を変えてみる

というようなことをやったり、

・ToDoリストに新しい項目を追加したり

というようなことをやれれば、少しずつ、感覚をつかめると思います。

僕も最初はこんな感じで、サンプルとなるソースコードを少しずつ変更することで理解を深めていきました。

余程小さいアプリなら別ですが、ある程度の規模の大きさのアプリであれば、このステップに1ヶ月〜2ヶ月くらいかけてもよいです。

そのくらい、この「実践に向けた練習」は重要です。

ステップ4: (2回目)サンプルアプリを変更して作りたいものを作る (目標の50%程度の出来でOK)

(2回目)サンプルアプリを変更して作りたいものを作る (目標の50%程度の出来でOK)

基本的にステップ3とやることは同じです。

自分の作りたいものを、「サンプルとなるソースコードをベースにして」つくりましょう。

おすすめは、ステップ3でベースにしたサンプルアプリとは違うソースコードをベースにすることです。

というのは、

・変数の定義方法だったり
・関数の書き方だったり

プログラミングは本当にいろいろな流儀があるので、そういうものを見て覚えるという意味でも、違うものをベースにした方がよいです。

そして、ステップ3で作ったものは、ソースコードがグチャグチャだったり、一部機能が足りていない部分があると思うので、そういったものを追加できるようにしましょう。

ただ、このステップでも、自分が目標とするレベルの50%くらいの出来であれば問題ありません。

・何かボタンの挙動がおかしい・・・
・データが一部うまく表示されていない ・・・

この状態でも全く構いません。
とにかく、「ある一定のゴールを達成できる」ということが大事です。

ステップ5: フルスクラッチで作りたいものを作る (目標の80%程度の出来でOK)

そうして慣れてきたら、次はフルスクラッチ (完全にゼロベース)で書くことをやってみましょう。

おそらく、ステップ3と4をやってきた人であっても、全く書けません(笑)

でも安心してください。出来なくて当たり前です。だって、フルスクラッチで書いた経験がないんですから。

もし「書けない・・・」となっても慌てず、サンプルアプリをベースに、写経をしましょう。
少しつづ、慣れていけば大丈夫です。

ここでの目安は、全体のうち、80%くらいを理解できていれば大丈夫です。

プログラミング言語は、非常に奥が深いので、100%理解することは目標にしない方がいいです。そこを目標にすると、一生、転職することや案件を獲得することはできません。

転職をしても、案件を獲得しても、現場のエンジニアは毎日ググりまくっています。業務時間の半分くらいはググっているのではないか?というくらいググってます。

ステップ6: 自信を持って転職活動 or 案件獲得にGo!

ここまでやっていれば、その言語に関しては実践的な内容や、エラーが出たときの対処含めかなり頭に入っているはずです。

ドットインストールを周回しました

という人や、

プログラミングスクールでポートフォリオ作りました

という人よりは、圧倒的に即戦力に近づいています

ここまできたら、自信を持って転職活動や案件獲得に向けて動いてみましょう。

また、転職活動の面接対策や、未経験からエンジニアになるための対策はこちらの記事でまとめていますので、是非こちらもご覧ください!

まとめ

再掲ですが、効率のよいプログラミング勉強方法は以下の通りです。

・目標を設定する
・Progateやドットインストールで5割〜8割くらいの理解度(書けなくていい)を目指す
・(1回目)サンプルアプリを変更して作りたいものを作る (目標の20%程度の出来でOK)
・(2回目)サンプルアプリを変更して作りたいものを作る (目標の50%程度の出来でOK)
・フルスクラッチで作りたいものを作る (目標の80%程度の出来でOK)
・自信を持って転職活動 or 案件獲得にGo! 

これを読んでいるあなたが、余計なプログラミング勉強はせず、最速でエンジニアとして転職したり、案件を獲得できることを願っています。

この記事は以上です。

ここまで読んでいただき、ありがとうございました!

最後に

この記事では、未経験からのプログラミング独学方法をまとめました。

一方でプログラミング初心者は、この内容以外にも、

・そもそもプログラミングとは何か?
・どういうケースでプログラミングスクールに通うべきか?

といった内容を知っておくべきです。

そんな「プログラミング初心者が知っておくべき全体的な情報」は以下にあるので、全体を網羅的に知りたい場合は、こちらも合わせてご確認ください。

コメント

タイトルとURLをコピーしました