この記事ではプログラミング歴10年以上かつ、家庭教師をやっている私が、プログラミングを学ぶことで得られる能力について解説します。
トライ&エラー
プログラミング能力の上達は問題解決プロセスを学ぶのに役立ちます。
プログラミングをやったことがある方はわかると思いますが、最初から思った通りに動くことはまずありません。
何度も修正を繰り返して思い通りの動きになるように導いていきます。
プログラムを正しく動かすにはPDCAサイクルを何度も回さなければならないのです。
目的の動作をするにはどうすればいいか考え、
それを実際にコーディングして実行し、
目的の動作になっているか確認し、
なっていなければ修正する…
現実の問題解決と同様にプログラミングもこのような手順を踏みます。
さらにプログラミングの場合、コードを書けばすぐにその場で実行できるため、Do→Checkまでにかかる時間が短く済みます。
そのため、PDCAサイクルを高速で回すことができます。
うまくいくまで修正するというプロセスを学ぶことができます。
問題の切り分け
プログラミング能力の上達は問題の切り分けにも効果が期待できます。
問題を解決するには、その問題について
- どんなプロセスをたどるのか
- その中のどこに原因があるのか
を正しく把握する必要があります。
例えば、「勉強ができない」という問題を考えてみましょう。
これだけでは解決しようにも原因がどこにあるのかわかりません。
そのためまずは、プロセスを洗い出します。
大雑把で構いません。
以下が一例です。
- 勉強を始める
- 勉強を続ける
- 成果を出す
- 試験本番
このようにプロセスに分解することで、「勉強ができない」という抽象的な問題が、
以下のような具体的な原因によって発生していることがわかります。
- 勉強が始められない
- 勉強を続けられない
- 勉強してるのに成果が出ない
- 普段はできるのに本番になるとできなくなる
当然ながら、これらの原因の解決方法はそれぞれ異なります。
そのため、どれが一番の原因なのかを把握しなければなりません。
- 勉強が始められない → モチベーションの問題
- 勉強を続けられない → 集中力の問題
- 勉強してるのに成果が出ない → 勉強法の問題
- 普段はできるのに本番になるとできなくなる → メンタルの問題
プログラミングはこのような問題解決に必要な、原因の切り分けを体験することができます。
