「勉強してるけどプログラミングができるようにならない」
「自分の勉強方法はこれであってるのだろうか」
「もっと効率の良い勉強方法があるんじゃないか」
「プログラミングの勉強のコツを知りたい」
「そもそもどう勉強したらいいか分からない」
独学で勉強していると色々悩んできますよね。
僕は現在エンジニア歴4年以上になりますが、もともとはパソコンを全く触ったことがない人間でした。
なんとかIT業界に潜り込めたものの、物覚えがよくないのもあり、同期の人間や後輩がどんどん開発ができるようになっていく中、なかなか開発ができるようになりませんでした。
でも、いつか僕のような人間が入社したとき、励みになれるような存在になれたらという思いと、クビになるまではしがみついてやろうという思いから、諦めずに勉強し続けました。
そして2年間苦しんだ末、ようやく開発ができるようになりました。
そこからは開発が楽しくなり、毎年会社から表彰を頂けるような働きができるようにもなったので、ぜひプログラミングの学習で苦しんでいる人の救いになればと思い、挫折しないためのプログラミングの勉強法を公開したいと思います。
プログラミング学習のコツ
プログラミングの学習は、受験勉強とは異なる勉強のコツがあります。
勉強が得意な人や、真面目な人ほどハマりやすいポイントなのでぜひチェックしてくださいね。
暗記しない
まず、暗記をしてはいけません。
プログラミングには、変数や配列といった、今まで出会ったことのない概念が出てくるし、関数なんかは覚えきれないほどたくさんあります。
全部の関数を覚えている人は、いません。
実際の業務では、みんなネットや本で調べながらコードを書いています。
なので、本を読むときも全部暗記しようとして読むのではなく、
「あー、そういうものがあるんだなあ」くらいの感覚で読み進めてもらって大丈夫です。
インプットしたらすぐにアウトプット
本はいっぱい読んでいるけれどなかなかコードが書けるようにならない・・・
そういう人は、アウトプットをしていません。
本に書いてあるサンプルコードは必ず自分で書いて動かすようにしましょう。
プログラミングは、楽器やスポーツと同じで、技術です。
野球も試合を観ただけではうまくなりませんよね?
うまくなるためには実際に身体を動かして練習をする必要があります。
コードが書いてあったら必ず自分でもコードを書いて動かすようにしましょう。
挫折しない勉強方法を紹介
では、実際にどういった順序で勉強をしていけばいいのかを紹介していきます。
まずは入門書を読破
まずは入門書を1冊でいいので最後まで読み切りましょう。
入門書としては、薄すぎず、厚すぎないものがおすすめです。
勉強が得意だから、早く業務レベルの技術を身に付けたいからといって、いきなりオライリー社の出してるような本(動物が表紙のやつ)から読むと確実に挫折します。
Amazonで評価やレビューを見て、実際に書店に行って、選んでくださいね。
コードを読む力を高める
本にはサンプルコードが載っています。
そのサンプルコードをしっかり日本語に訳しながら読めるようになりましょう。
例としては
ここで変数を宣言して、ここでFor文でグルグル回して、変数の値を〇〇処理している・・・
のような感じです。
ちょっと学習しだしてくると、1行1行しっかり理解していなくても、なんとなくここはこういう処理がされているんだろう・・・という感じでコードを読むようになる人が出てきます。
コードが読めていないのに、コードが書けるようにはなりません。
コードがちゃんと書けるようになるまでは、1行1行しっかりとコードを日本語に訳して読むということを意識しましょう。
変数の中身を意識する
プログラミングを読むコツは、変数の中身を意識するということです。
プログラミングって結局どういうものかというと、
インプットの値があって
その値を色々処理して
アウトプットする
っていうことだけなんです。
なので
インプットになる変数がどれで
その変数の中身がどう変わっていくのか
というのをしっかり意識しながらコードが読めるようになれば完璧です。
サンプルコードの改造
プログラミングができるようになるには、手を動かすことが大事だといいました。
ただ、サンプルコードをそのまま書き写して動かすだけじゃなかなか自分で書けるようにはなりません。
なので、サンプルコードを他のページに記載されていたサンプルコードと組み合わせて改造するということも習慣にしましょう。
例としては
if文が紹介されているページのサンプルコードと、for文が紹介されているサンプルコードを合体させて動くようにしてみる
です。
以上のことを意識しながら本を最後まで読破するようにしてみてください。
ミニアプリを作る
本を最後まで読破できたら、次はミニアプリを作ってプログラミングの練習をしていきましょう。
おすすめなのは、次のようなプログラムを書くことです。
- FizzBuzz
- バブルソート
- 電卓
自分で1からロジックを考える能力、知らないことを自力で調べる能力をここで身につけていきましょう。
汚くてもいいからとりあえず動くものを書く
いきなり本に書かれていたようなきれいなコードは書けません。汚くてもいいんです。
プログラミングは、if文とfor文だけで書こうと思えば書けます。
大事なのは、自分の頭を使うということ。
スポーツと一緒で、最初できなかった動きも反復練習することで神経がどんどん発達し、できるようになります。
プログラミングの神経をどんどん発達させていきましょう。
小さく動かして確かめる
コードを書く上でのコツは、小さく動かして、ちゃんと動くか確かめながら書いていくことです。
動かさずにコードだけを一気に書いてしまうと、どこでエラーが起きているのかが分からなくなってしまいます。
できることを積み重ねていく
小さく、確実に動くものを、積み重ねていく。
これがプログラミングする上での一番の近道です。
コーディングのアンチパターンを実感する
業務では、ただコードを書いて動けばオッケー、ではありません。
他の人があなたのコードを触る機会もあります。
なので、誰もが読みやすい、メンテナンスしやすいコード、きれいなコードを書けるようになる必要があるんですね。
そして、きれいなコードを書く上で、コーディングにはアンチパターン、やってはいけないパターンというものが存在します。
変数名や関数の名前のつけ方であったり、スコープであったり・・・
そういったものを学習しましょう。
レビューしてもらってきれいなコードを目指す
さきほどあなたが作成したミニアプリを、エンジニアの先輩などにレビューしてもらいましょう。
必ず色々指摘されるはずです。
その指摘された箇所を、先輩からオッケーが出るまで修正します。
そうすることによって、あなたのコードの質がどんどん磨かれていきます。
独学で周りにそういった人間がいないという場合は、「リーダブルコード」という本を読んで自分でコードをキレイにしてみましょう。
そして、できればネットの住人にソースを見せてレビューしてもらってください。
再帰処理をマスターする
次は再帰処理と呼ばれるロジックを書けるようになりましょう。
よくあるのが「階乗の計算」です。
例えば数値の5の階乗というと、
5 * 4 * 3 * 2 * 1 = 120
となります。
これを再帰処理を使って計算するコードにすると
// 階乗を計算する関数
function factorial(n) {
if (n == 0) {
// nが0のときは1を返す
return 1;
}
// nが0でないとき、factorial関数内でさらにfactorialを呼び出す
return n * factorial(n - 1);
}
console.log(factorial(5));
>> 120
となります。(JavaScriptで記載)
もちろん、for文やwhile文で実装することも可能です。
ただ、さらに複雑なロジックを実装しようと思ったとき、再帰処理を理解しているということは大きなメリットになります。
再帰というのはループ処理と条件分岐処理がとても複雑に合わさったアートのようなロジックだからです。
このロジックを自分の頭の中で理解し、実装までできるようになれば、実際の業務で苦しむことはなくなるでしょう。
再帰処理より頭の中がこんがらがるようなロジックは実務でも滅多に出会うことがないからです。
色々作ってみる
ここまでできるようになったら、フレームワークを勉強してwebアプリの開発に挑戦してみたり、スマホアプリの開発に挑戦してみたり、色々プログラミングにチャレンジしてプログラミングライフを楽しんでください。
通常の人より遥かにスムーズに開発できるようになっているはずです。
挫折する勉強方法
逆に、こんな勉強をしていたら時間のムダだよ、っていうのを紹介します。
写経
写経です。
写経というのは
本に書いてあるサンプルコードを、ただそのまま書き写して動かしてみる作業のことをいいます。
僕も、昔は写経をやりまくりました。
ただ、全くできるようにならないんですね。
プログラミングは、自分の頭を使って書くことによって初めて成長します。
なので、サンプルコードはただ写経するのではなく、改造するということを習慣にするようにしましょう。
いきなりすごいものを作ろうとする
ミニアプリとか作っていちいち遠回りなんてしてられないよ。
って言っていきなりAmazonみたいなショッピングサイトを作ろうとしたら100%挫折します。
あなたが何気なく使っているサイトやアプリっていうのは、何人もの優秀な人間が集まって、膨大な時間をかけてやっと作られているんですね。
あなた一人がどれだけ頑張ってもできません。
でも、どんなサイトやアプリも、小さい機能が積み重なって積み重なってできているのも事実です。
なので、まずは小さい機能を確実に作れるようになることを意識しましょう。
この記事が、これからプログラミングを勉強しようと思っている方や悩まれている方のためになれば嬉しいです。