プログラミングについて、できるだけ効率よく、短期間で学習を終えるための考え方
この記事は仕事や趣味でソースコードを書く人で、これまでプログラミングしてきたジャンルと違う領域に挑戦したい人向けのものです。およそ6分で読むことができます。
「仕事(または趣味)で新しい領域のプログラミングに挑戦したい。できるだけ効率よく、短期間で学習を進めたいけれど、はどうすればいいだろうか?」
新しいことを学びたいけれど、学習時間は短くしたい(すぐに結果が出せると嬉しい)と考えたことはありませんか?
最近、新しい領域のプログラミングについての学習を始めました。少し先の話ですが仕事で取り扱うことが決まり、個人的な興味もあったので、今のうちに取り組んでみようと飛びついたわけです。
できることなら、半月とか1ヶ月くらいで学習の成果を出せないか?と思いながら、勉強を続けています。
効率のよい学習をするにはどうすればよいか?
現在進行形で続けているプログラミング学習の経験と、自分で調べたこと、組み込みソフト開発10年以上の経験から僕が考えていることを織り交ぜて、効率の良い学習について書いてみました。
この記事を読むと、次のことが分かります。
・新しい領域のプログラミングについて、できるだけ効率よく、短期間で学習を終えるための考え方
学習の目的を明確にしよう。それがゴールです。
初めにやっておきたいことは「学んだ結果をどんなことに使いたいのか?を書き出すこと」です。誰かに言われて渋々取り組んでいるわけではなく、自分の意志で何かを学ぼうとしているのですから、何らかの動機があるはずですよね、それを書き出しておくのです。
「人に見せるほどのことでもない理由しかないんだけど…」大丈夫です。誰かに見せるものではないので、遠慮なく書いてしまいましょう。
もし、何かの役に立てたいといった目的が無くても「どの程度まで勉強するのか?」と他人に聞かれた時に、さっと答えられるくらいのゴールを設定しておいた方がよいと個人的に思います。
「どうして、学習の目的を明確にするのか?」
それは自分のモチベーションを保つためだったり、学ぶべきことを小さい単位に分解するためだったり(これから紹介していきます)、辞め時を決めるためだったりします。
学習する分野についてのドキュメントや情報を集る
次に、学習のための資料を集めていきましょう。資料は公式サイトや書籍を中心に集めるのがおススメです。
つい検索エンジンにキーワードを入力して、表示されたサイトから情報を収集したくなってしまうと思いますが、それは公式情報の後です。
プログラミングに関する資料ではよくあることですが、公式ドキュメントが英語で書かれているので、なかなか取っつきにくいことも多いですが、英語=自分は無理だ、と短絡的に考えず、目を通してみて下さい。思った以上に読めると思います。Chromeに標準で搭載されている翻訳機能を使って読んでもいいですね。
「どうして公式サイトや書籍の情報を最初に集めるのか?」というと、信頼できる場合が多いからです。
当たり前のことなのですが、公式サイトで配布している資料がデタラメだったら、そのプログラミング技術は世の中に広まっていかないでしょう。ドキュメントが読みやすく、内容が充実しているものほど、ユーザー(開発者)の数が増えやすいのは分かり切ったことですよね。
エンジニア向けの技術情報投稿サイトや技術ブログに、自分の求めている答えが載っていることもあると思います。しかし、これらは掲載している情報に対して責任を持たないことがほとんどなので、そのままコピーして使おうとしても動かないこともよくあります。特に、学習結果を業務に活かしたいと考えているなら、こういったネットに転がっている情報は参考程度にしておきたいです。
集めたドキュメントや情報を見ながら、ゴールに辿り着くまでの作業分解をしよう。
自分の学習目的と集めた情報を使って、どんな内容を身につければ目的が達成されるのかを考え、学ぶべきことを小さな単位に分解していきます。個人的に、この分解作業が大変だと思っています。
これから学習する内容について、大雑把に理解し、自分の必要とする小さい単位に分解するのってとても難しいですよね?(これがスルスルできるのなら、学習する必要がないのでは?)
僕はいつも迷走して、この作業と資料集めを行ったり来たりしながら、徐々に内容を読み込んでいます。
最近では、迷走しないようにサンプルコード「ハローワールド」やそのほかのお手本ソースコードを見ながら、必要だと感じる内容をベースに、小さい単位へ分解していますね。
まだまだ洗練されていない、毎回悩ましい作業です。
学んだことをアウトプットし、フィードバックされる環境を準備する。
実はプログラミング学習の場合、実際に動かして結果が出ることが多いので、特に準備する必要がほとんどありません。
ソースコードから実行ファイルにコンパイルできたり、書いたソースコードを即座に実行することが可能だからですね。
プログラミング以外のジャンルについて考えてみると、作り出したものやフォームなどを写真や動画に記録して、それを指導してくれる人に見せて、アドバイスをもらえるようにしておきましょう。
誤った方向に突き進んで、後で軌道修正するのは簡単なことではないですし、時間効率もよくありませんよね。
分解した小さい単位で学習を続けよう。
今日は○○だけ覚えよう。
ゴールにたどり着くために学ばなければならないことを小さな単位に分解していますよね。今日はその中の一つだけでいいので、取り組んでみるのです。
「たったこれだけやれば今日は上出来だ」そう思うだけで、なかなか手が伸びにくいことでも、継続して学習していくことができます。
そして、不思議なことに一つやり切って時間が余っていると、もう一つやってみるか?なんて思うことがよくあります。僕は何度もあります。
勉強していない状態から、勉強している状態に変わるには大きなチカラが必要ですが、勉強している状態から、もう少し勉強する状態に変わるのはそれほど大きなチカラは必要ないのです。
気が向かなくてもとにかくデスクに座るとか、毎日最低1行だけ書くといったテクニックが継続の秘訣だという作家のインタビュー記事がたまにニュースサイトへ投稿されますが、まさにこれと同じことですよね。
毎日まとまった時間を作ろう。
できるだけ毎日取り組みましょう。最低30分くらいは集中してやりましょう。あれもこれもと手を出すより、一つのことに絞り込んだ方が速く習熟できます。
ある程度、学習を続けていくと、急にアレコレ理解できるようになる時が来ますが、その状態になるまでは一つのことに集中したいですね。
5分とか10分のスキマ時間で取り組めるのなら、それに越したことは無いのですが、プログラミング学習に関しては当てはまらない場合が多いと個人的に思っています。
コードを書いて動かしてみて、意図した通りに動か無くて、ドキュメントに書いてあることを確認しようとすると、30分以上かかることがほとんどではないでしょうか?できるなら毎日1時間欲しいですね。
もしも、分解した単位が大きいと感じるなら、さらに分解してしまうのもいいですね。一度決めた学習単位に固執せず、難しいと感じないくらいまで分解してしまいましょう。
学習期間中はテレビやSNSやゲームなどの楽しみを一時的にシャットアウトすると良いですよ。我々、現代人はあれもこれもと多くのことをやるだけの時間がありません。
学習を始める前の生活スタイルに、学習時間をねじ込んでも継続できないと思います。何故なら何もない無の時間を過ごしている人なんていないからです。
みんな何らかの活動で24時間が埋まっているので、何か新しいことをするなら、その分だけ何かをやめなければならないはずなのです。悔しいですが、先ず楽しみの時間を削るのがよいですね。
モチベーションを維持しよう。
学習成果が出ないとモチベーションの維持は難しいので、学習に取り組んだ内容や時間が分かるようになっていると良いです。
日記でも、ただのメモでもいいので、これまでの経過を記録していきましょう。自分はここまでやってきたぞという記録が自信に繋がりますし、自分を奮い立たせてくれます。
いつでも気持ちが前向きであれば、この様なモチベーションを維持する工夫は不要なのですが、そんな人は稀だと思います。日々色んな出来事が起こり、それに影響されて、自分の気持ちが揺らでしまうことはほとんどの人に当てはまるでしょう。
まとめ
新しい領域のプログラミングについて、できるだけ効率よく、短期間で学習を終えるための考え方について紹介しました。
特別な考え方は必要なく、学習期間中は学習内容に集中し、ある程度のまとまった時間を学習に費やし、ちいさくコツコツと学習を進めていくことがポイントになるわけです。
学習しようとしている領域で活躍している人を見ると、今すぐにでも追いつける方法はないか?と考えてしまいがちですが、後戻りは少なく、一歩ずつ確実に学んでいきたいですね。

C/C++で組み込み系ソフトウェア開発の仕事を10年以上やっています。怪しげなデジタルガジェットが大好きです。