論文と本から学ぶ、プログラミング独学のコツ

はじめに

この記事はプログラミングの勉強方法を、コンピューターサイエンス教育の論文や、いろんな本をもとにまとめたものです。

この記事を書いた人

@takasqr アプリケーション開発が大好きなエンジニア。Vue、Swift、Electrom などでアプリを作って公開している。AWS や Firebase などのクラウドサービスも好き。

なんで調べようと思ったのか

私はエンジニアとして働いています。仕事柄、毎日新しいことを勉強しながら過ごしています。

私はプログラミングを一生続けていきたいと思っています。なのでもっと自分の技術力を上げていきたいです。

一度、プログラミングの勉強のしかた自体を調べてみることにしました。

この記事の内容

プログラミングの勉強方法を、コンピューターサイエンス教育の論文や、いろんな本をもとにまとめました。

プログラミング初心者の人がわかるように、なるべく簡単な言葉を使って書いています。

また、プログラミングに慣れた人も、普段使ってない言語を使う時は初心者になると思います。参考にしてもらえると幸いです。

プログラミング上級者ってどんな人?

突然ですが、プログラミングの上級者ってどんな人だと思いますか?

  • プログラムを爆速で組み上げる人
  • エラーを瞬時に解決する人
  • 応用の効く設計を思いつくことができる人

様々なイメージがあると思いますが、プログラミングの上級者の特徴を調べた研究があります。

その結果によると、

「自分の中に応用の効く知識を沢山持っている」

という結果になったそうです。

「そんなこと知ってるよ!」と言われてしまいそうな、 なんとも当たり前の結果ですね。笑

ですが逆に考えると、 自分の中に使える知識を効率的に蓄えることができれば、ちゃんとプログラミング上級者になることができるということになります。

筋のいい初心者になろう

プログラミング教育の論文の中で、初心者の中にも早く上級者になる人の特徴が少しずつわかってきたそうです。

例えば、エラーに対する態度によって上達速度が違ってきます。

エラーに対する態度は3パターンあります。

  1. うまくいかないことに怒り出す人
  2. 闇雲にコードを変えてうまくいくか試す人
  3. なぜエラーが出てるか考えて試していく人

上達が早いのはもちろん3番目のパターンです。 これも言われてみれば当たり前な話ですが、エラーに直面している時にこんなことまで考えないと思います。

事前に知っておくことで、エラーに直面した時に落ち着いて対処できるのではないでしょうか。

この記事ではこのようなテクニックを紹介していきます。

プログラミングを勉強する際の4つのコツ

理論→実践で知識を増やそう

「超・自習法」という本をご存知でしょうか。この本はプログラミングの本ではないのですが、技術や知識を学ぶ方法について詳しく書かれた本です。

この本では、学びたい領域について学べる、個人的なプロジェクトを作って進めると主体的に、自分の中に定着する知識を学ぶことができることを教えてくれます。

心理学の世界でも、学習コンテンツ(動画や文章)だけでは定着が弱いと言われています。

手を動かすことが重要なのです。

個人プロジェクトのすすめ

以上のことから、プログラミングを勉強するときには、最低限の基礎を勉強した後は、個人的なプロジェクトを作って必要な技術を学んでいくのがいいと思います。

実際、参考書自体が、そのような構成になっているものも多くあります。

以下、個人プロジェクトのを始める時の手順です。

  1. 作りたい物を決める
  2. 機能を分割する
  3. 教材集め
  4. メンタルモデルの予習
  5. 作っていく

マシンイメージ

ある、研究では 上達の速い「筋のいい初心者」ほど頭の中に正確なコンピューターのイメージがあったそうです。

エラーを解決するためにそのコンピューターイメージを使って、どうすれば解決できるか脳内シュミレーションすることができるということだと思います。

脳内メモリ

プログラミングは高度な作業です。そのことは様々な研究で証明されています。

プログラミングは認知しなければいけない情報量が多いのでワーキングメモリ(作業記憶)が重要です。

上級者は情報をうまくグループ化できるので、ワーキングメモリを節約できるそうです。

最後に

プログラミングのコツを紹介してきましたが、書きたいことはまだまだあります。

少しずつ書き足していくので、たまに覗きに来てください。

以下、書き足していく予定の項目です。

  • デバッグ
  • エラーの時の3つの姿勢
  • 環境大事vscode
  • 環境大事認知環境
  • コードリード
  • コードライト
  • 公式ドキュメント
  • ドキュメント&英語
  • 簡単→複雑
  • テンプレート改造