以前「人が行動を起こすためには2つの条件がいる」ということで、「具体的な目標」と「タイムリミット」の両方がいるという話をさせてもらいました。
では、その目標を達成するために次に何をすればいいのか。
これは、もったいぶるような話ではないのですが、その秘訣は「とにかく細かいタスクに分解すること」にあります。
目標というのは、当たり前ですが、今の自分とは違う自分になるということ、つまり今の自分より高みを目指すということですので、山登りのようなものです。
その目標たる山に登ろうとしたときに、頂上までたった一段の階段では、あまりに高くて登れません。
ですので、自分が登れる段数にまで細かく割ってやらないと、なかなか登れるという気になれず、行動に起こせないというわけなのです。
たとえば、受験勉強を例にとると、「来年の3月に●●大学に入る」という目標を立てたとします。
では、その目標達成のために次に何をするのかを考えないといけないわけですが、当たり前ですが、いきなり試験を受けても合格できませんので、試験までに勉強しないといけない。
では、その時に何の勉強をすればいいのかといったときには、人に与えられた時間は1日24時間に限られていますので、その中で自分が実際に出来る勉強量にまで、細かいタスクとして分解してやる必要がある。
これが出来るか出来ないかが、志望校への合格、すなわち目標達成の成否に大きくかかわってくるということなのです。
実は、プログラミングがまさにこれなのです。
以前お話ししたかもしれませんが、プログラミングとはコンピューターに対する命令です。そして、コンピューターは0と1しか理解してくれませんので、人間みたいに空気を読んで曖昧な指図でも実行してくれることはありません。
たとえば、人間であれば「手をあげて」と言われれば、とりあえずどちらの手かわからないけど適当に上げようとしますが、コンピューターはそんなことはしてくれません。
まず、そもそもあげるのは右手なのか左手なのか。次にあげ方は前からなのか、それとも横からなのか。さらには、あげる角度は90度なのか、120度なのか、180度なのか。
これらのことを「細かく」くっきりはっきり伝えてあげないと、コンピューターは動いてくれないのです。
つまり、この「細かいタスクに分解する力」というのが、プログラミングをする上で非常に重要になってくるわけです。
従って、プログラミングを学ぶということは、この目標達成に必要な「細かいタスクに分解する力」が鍛えられるということで、それはまさしく目標管理能力を養うことにつながるということです。
これも、プログラミングを学ぶ「効用」の一つなのではないかと思うわけであります。