自分で調べる・考える力が重要
プログラミングを学習する上で、有料のスクールや学習サービスなどは必ずしも必要ではありません。これらは自分を追い込んで、なかば強制的に短期集中学習するにはいいかもしれません。しかし、価格に見合った効果が得られるかはやってみなければわからないですし、その中身の良し悪しは実際に仕事をするようになってからでないとわかりません。
むしろ、仕事に就く前に自主的に学習するのであれば、独学で全く問題ないと思います。スクール、独学のいずれにしろ、プログラミングを学習する上で意識すべきことは、学習でぶつかった問題を自分で調べて解決する習慣です。習慣とすることで調べる力・考える力がついていきます。この力がエンジニアとして最も重要となります。
必要以上のことは覚えなくていい
調べる力があれば事前に覚えておくべきことは少なくてすみます。必要な時に必要なことを調べればいいのです。
実際の仕事でもインターネットや本で調べることを禁止されることはまずないでしょう。インターネットが使えない環境で仕事をすることはありえますが、それはかなり特殊な環境なのでひとまず気にしなくていいと思います。そんな状況でも家やスマホで調べることはできますし。
そもそもプログラミングを完璧に覚えることなど不可能です。同じプログラミング言語でも常に進化していくものですし、1つの言語をマスターしても別の新しい言語を覚えなおさなければならないこともあるでしょう。たとえ学習段階でたくさんのことを覚えたとしても、その大半は仕事上必要とせず無駄になります。目的を持って学習し、目的を達成できれば学習はそこまでにしましょう。そして、学習すること自体を目的化しないように気を付けましょう。
実際の仕事でも意識して覚えることはほとんどない
私も色々な言語を仕事で経験しましたが、その時まさに使っている言語で必要なことは覚えているので、つまずくこともあまりありません。しかし、しばらく使っていなかった言語を再び使うことになった時、その言語の基本文法すら忘れていることが多いです。ただ、基本文法ぐらいは調べればすぐにわかりますし、数分で思いだします。
仕事ではスピードが重要です。まさにその時に必要なことだけをできる限り短時間で調べ、目の前の目的を実現させます。これの繰り返しで経験したことが、自然と知識として身についていくものです。
必要最低限の知識
では、仕事に就く前の学習ではどこまで覚えておけばいいのでしょうか。まず一つ言えることは、特定のプログラミング言語に特化した知識ではなく、色々な言語で共通するプログラミングの基礎知識を身に着けることです。具体的には以下の点になります。
- 順次処理
- 反復
- 分岐
- 定数・変数
- 関数
- オブジェクト指向プログラミング
以上があらかじめ覚えておきたい必要最低限の知識です。最後のオブジェクト指向プログラミングについてはここではひとまとめにしていますが、この中に覚えるべき要素が色々とあります。
↓では最初に学習するプログラミング言語のおススメを目的別に解説しています。
プログラミングの基礎は↓で詳しく解説しています。演習形式で1つ1つ学習できます。
オブジェクト指向については↓
予測(仮定)・検証を繰り返して問題解決する習慣をつけて自分で考えて進められるようになろう
必要最低限の知識をインプットしたら、あとはひたすらアウトプットすることです。何か自分で作ってみたいプログラムを考えて目標とし、それを実現するために必要なことを調べながら進めます。ただ、漠然と調べても何が自分に必要なことなのかもわからず、進むことができないと思います。調べる力とは、検索する力と情報を選択する力の2つの組み合わせです。
検索する力
「何を調べればいいのかすらわからない」ということがあると思います。これはプログラミングに限らず良くあることです。ここでどう進めていくかですが、目標を達成するために必要なことを大まかなステップに分解します。そして1つめのステップについて注目し、検索キーワードになるぐらいの具体的なステップになるまで更に分解していきます。これで目の前の目標に必要なことが予測でき、実際に検索ができるようになります。
↓の記事はプログラミング的思考について解説したものですが、細かいステップに分解する上で参考になると思います。
情報を選択する力
検索ができたら自分が必要としている情報を正しく選択しなければなりません。残念ながら検索順位が1番の情報がそれとは限りません。検索順位の高いものから順に見ていくことにはなりますが、検索する段階で予測が十分に具体化されていれば、自分の目的に近い情報かどうかは判断できると思います。答えそのものを見つけようとせず、近しいものを見つけたらそれを参考にして実際にプログラミングして検証します。目標が達成できればそのステップは終了ですが、達成できなければ別の情報を参考に検証します。
ここで注意して欲しいことが1つだけあります。それは、決して検索結果のプログラムコードをコピペしないことです。真似することはかまわないのですが、1行ずつ何をしているか理解しながら進めて欲しいのです。これをせずに「プログラムが動いたからOK」としていては何も身についていきませんので。
こうして予測(仮定)・検証を繰り返してステップを進めていくことで調べる力が身につき、自分で考えて進める力も自然と身についていきます。わからない、知らないからできないと言っていてはエンジニアは務まりません。自分で考えて進めることが最も重要です。