プログラミングの学習を実力アップに繋げるには?

記事
IT・テクノロジー

プログラミングの学習を実力アップに繋げるには?

プログラムを学習して将来の転職や独立に役立てようという方は多いと思います。 ところで、読者の皆さまはどのようにプログラムの学習をされていますか? この記事では、プログラムの学習を効果的に進めるコツの一部を紹介しようと思います。

学習の仕方は人によって合ったやり方があると思いますので、ここで紹介する方法が「絶対」という事ではありません。しかし、参考になる部分はきっとあると思いますので参考にされてくだい!

プログラミングはスポーツに似ています!

今回紹介する学習方法は、スポーツの上達方法に似た方法です。 野球でもバスケットボールでも良いのですが、何か好きなスポーツを想像してみてください。 例えば、バスケットボールを例に挙げると、アメリカのプロバスケットボールのリーグである NBA の選手はとても簡単そうにシュートを入れていると思いませんか?見ていると簡単そうですが、やってみると中々シュートは入らないものです。 バスケットボールがしたくて、チームに入ると優秀なコーチがいてシュートのコツを教えてくれたとします。 話を聞いて「なるほどコツがわかった!」と思って、その通りにやってみると、これまたできません!

当たり前ですが、実際にシュートが入るようになるには「練習」が必要です。練習すると誰もがそれなりにうまくなるものです。もちろん、才能のような物もあるので、誰もが NBA の選手のようにシュートが入るわけではありませんが、練習すればそれなりに上達する物です。

話がそれましたが、本題に戻すと、なぜスポーツの例を挙げたかというと、「頭でわかっている」と「実際にできる」は違うという事を少しわかりやすい形で説明したかったからです。

実際にできるようになるには、ある程度「頭で理解して」その上で「練習する」事が実際にできるようになる為の方法だという事です。

知識と実力

プログラミングの場合も、まさにこれが当てはまります。 Web 開発でよく利用される Javascript(Typescript)ですが、学習の第一歩はまずは「知識」を増やすことにあります。これは、本を読んだり、インターネットで情報を検索したり、あるいは学校や人から教わるという事で比較的簡単に達成できます。

一通り本を読んだり、スクールなどで習うと、プログラミングができるようになる気がする物です。ところが、実際はそのように行かない場合が多いのです。スクールの場合は、知識を教えながら、課題や宿題を出して「練習」することもカリキュラムの一部になっているので、ある程度はできるようになりますが、実はそれでも十分でないことが多いのが現実です。

実は、プログラミング学習は、「知識を得る」と「練習」の組合せが重要です。 ここまでは、よくある話です。実はもう一つ、「実践」というのが入ってきます。

練習だけではダメな理由

なぜ、練習だけではだめか?理由は簡単で練習と実践は違うからです。 これもスポーツを例に出せば、野球のバッティング練習はバッティングセンターでもできますよね? バッティングセンターに通って練習するとある程度速い球も打てるようになります。

ところが、実際に試合で打てるかというと、これは全く別な問題です。 バッティングセンターのピッチングマシーンはただ球を投げるだけです。 ところが、実際の試合では人間が投げます。試合では、ピッチャーは「打たれないように」投げます。苦手なコースに投げたり、タイミングを外したりして、色々工夫してきます。こうした駆け引きも必要になりますが、これは実戦経験を積まないと出来ないものの一つです。

プログラミングも同じで、練習でやる課題と実際に求められているプログラムは違います。 個々のプログラムで要求している事も違えば、必要な機能も変わってきます。

それらを満たして、プログラムを完成させるには、「教科書にない」事もやらないと完成しない場合がほとんどだからです。

練習で得られないプログラミングの「スキル」とは?

では、練習で得られないプログラミングのスキルとはなんでしょうか? これが、「問題解決能力」と呼ばれる力(スキル)です。 プログラミングの練習で作る課題は、殆どの場合「答え」が存在します。答えを見ずに作れば良い事と思うかもしれませんが、実はこれも大きな誤解です。理由は簡単で、「答えがある事がわかっている」というのが大きな違いです。実際に、現場でプログラムをする場合は、要求されている事に「答えがない」場合も沢山あります。答えがあるとしても、「簡単には見つからない」場合もあります。そうした情報をいかに乗り切るかが、プログラミングを実際に行う上でとても重要な事になります。

その対処方法は色々ありますが、対処して「問題をクリア」することが実はプログラミングの実戦で一番大切な事です。

例を挙げると、

* 代わりの方法を見つける
* 諦めてもらう
* 解決する
の3つしか答えはありません。

代わりの方法は、全く同じでないにしても、「代わりになるようなアイディアを出して提案」するという方法です。諦めてもらうのは、なぜ出来ないかを丁寧に説明して、「要求から外してもらう」事です。あとは、なんとかしてして「答えを見つけて解決する」のいずれかです。

いずれの場合でも、それなりに考えて、調査をして状況を把握した上で、「何ができるか」を考えて対処する事が求められます。現在では、インターネットのおかげで、大抵のことは Google 検索をすると、なんらかのヒントが得られる場合が多くなっています。しかし、実際に Google 検索をして、こうした方向性を見つけるという場数を踏まないと中々短時間で方向を決めることはとても難しくなっています。

効果的な練習のやり方

では、プログラミングの練習はどうやれば良いか? まずは、「宿題や教科書以外の課題を探す」のが一番です。教科書やスクールの宿題や課題は、学んだ知識を使えば比較的簡単にできる物が殆どです。自分で、課題を探してくると、殆どの場合は、習った事以外の要素が入ってくるのが普通です。まずは、「与えられた課題ではない課題を(自分で)見つける」のが効果的な練習の第一歩です。

模写
自分で課題を探すのは大変ですが、「模写」も一つの方法です。これは、「答え」があるのはわかっていますが、模写の対象になる「お手本」になるようなプログラムには大抵色々な要素が入っています。まずは、そこから始めるのが効果的な練習の第一歩です。

自分で課題を作る
模写がある程度出来るようになったら、自分でアイディアを出して、持っている「知識」で作れそうなものを作るというのが第二段階です。この練習は、「自分で考える」という作業が必ず必要になります。そこで、持っている知識が何で、それをどう使うかを考えるようになります。これが自然に出来るようになると、自分の持っている知識が「使える」ようになります。

効果的な実践のやり方

では、「実践」はどうでしょうか? 一番良いのは言うまでもなく仕事を取ってきて実際にやると言う事です。これが本当の実戦です。 ただし、仕事なので取ったからには必ず完了すると言う責任が発生します。 自分で解決できない場合は、誰かに助けてもらってでも完了させる覚悟が必要です。

しかし、初めてプログラミングを勉強して、いきなり仕事を取ってこの方法を実践するにはリスクが高すぎます。特に、一旦仕事を受けてできない場合には「信頼」を失う事にも繋がるため、余りお勧めできる方法ではありません。

そこで、お勧めする効果的な実践方法は:

* 会社に入って修行する
* 練習試合をやる!
会社で修行する!
です。会社に入れば、できない場合でも基本的には会社(同僚)がサポートして何とか完了できます。その中で色々な実践力を身につけていけば良いことになります。また、会社の場合にはレベルに合わせた仕事の割り振りをするのが普通ですので、会社で仕事をしながら実力を身につけていけば良いわけです。

会社にもよりますが、会社に就職を目指す場合、実践力までしっかり見る会社もありますが、「知識」のみでも採用する会社も沢山あります。まずは、一通り勉強して、会社への就職を目指すのが一つの方法です。

練習試合をやる!
スポーツの世界では練習試合や紅白戦という方法があります。正式な試合には出場させて貰えない補欠の選手でも、練習試合や紅白戦ならば出場させてもらえる機会が増えます。 プログラミングでも、練習試合を通して実戦経験を積むという方法もあります。

当然、本当の正式な仕事とは違って責任は少ないので本気度も違うところもありますが、実際の仕事と同じような内容のプログラミングをする機会があれば、「問題解決能力」を磨くことは可能です。

プログラミングの「練習試合」で最適なのが、クラウドソーシングです。 実際に案件を獲得しなくても、「本物の仕事」が沢山リストされています。その中からできそうな案件を見つけて、実際にやってみるというのがここで言う「練習試合」です。

クラウドソーシングは報酬が低い場合も確かにあるようで、時々物議を醸し出しています。しかし、本物の仕事の宝庫と考えて利用すれば、これほど魅力的な場所はないと思います。少し慣れれば、実戦経験を積むために、本当に提案して受注までできれば、確実に実践力は身に付きます。

まとめ
プログラミングの学習は、本やスクール・講座を通して学ぶことが多いと思います。 しかし、プログラミングができるようになるには、「知識」だけでは足りません。「知っている」と「できる」は違うからです。できるようになるには、得た知識を使う「練習」が必要になります。

練習には、基本を繰り返し行うという物の他に「自分で考えて」「問題を解決」すると言う訓練があります。 基本を繰り返し行うと言うのは、誰もがほぼやっているのですが、「考えて」「解決」すると言うのが、少し大変な面もあって、中々手が回っていないのが現実だと思います。

会社で修行するのも一つの手ですが、クラウドーソーシングの案件をみて「練習試合」をするのも非常に効果的な練習方法です。プログラミング学習中の方は一度考えてみてはいかがでしょうか?
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す