プログラミングを学ぶメリット『問題解決能力』とは?

プログラミングを学ぶことで『問題解決能力が身につく!』というメリットがあります。
・・・本当にそうでしょうか?そもそも、問題解決能力とは何でしょうか?また、プログラミングで身に着ける必要はあるのでしょうか?

  • プログラミングで必要となる問題解決能力とはどのようなものか?
  • プログラミングである必要はあるのか?

プログラミングで必要となる問題解決能力とはどのようなものか?

プログラミングはある程度の規模になると、最初はほぼ想定通りには動きません。

コンピュータは厳密であり多少の間違いでも正しく動作しません。

全角と半角の違いや、大文字小文字の違い、-(マイナス)とー(伸ばし棒)の違い、などの簡単なものから実行順序のミスや想定外の動作の考慮漏れ、実行環境の違いの想定ミス、etc…様々な要因があります。

以上より、

正しく動作させるには問題となる箇所を探して直す必要があります。これがプログラミングにおける問題解決能力です。

問題解決のプロセス

この②~④を何度も何度も繰り返して、やっと完成します。

プログラミングである必要はあるのか?

子供に『問題解決能力』を身に着けさせるには、他の何よりも、プログラミングでなければ体験できない!プログラミングをさせるべき!!・・・ではありません。日常生活のいろいろな場面で必要な能力です。勉強、料理、アウトドア生活、旅行、ゲームなど。

では、何がいいのか?

『子供が問題を乗り越えてでも実行できるほど、好きなもの、興味のあるもの』ではないかと考えます。

例1)勉強
大抵は『やらされている』と思っています。わからないところが出てきた、ここがうまく出来ない、という問題が発生したとき、先生や周りの大人に答えを聞くのでは無いでしょうか?「もっと自分で考えなさい」「自分で調べなさい」といわれて嫌々やらされても、ますます勉強が嫌いになります。 

例2)ゲーム
謎解きなどで行き詰ったとき、インターネットやYOUTUBEで答えを探します。自ら調べる姿勢は良いのですが、簡単に答えがみつかります。簡単に答えがみつかる状況で、あえて頑張って自分で検証して見つける努力が出来るでしょうか?

例3)プログラミング(自作ゲームなど)
せっかく考えて描いた自作のキャラクターが、何故か画面に出てこない!というような時、自分で作った、世界に一つしかないプログラムなので、どこにも答えは無く、自分で原因を探すしかありません。かといって、ここまで作ったものを途中で諦めたくは無く、どうにかして完成させたいと考えます。

結論

・・・多少、強引な例だったでしょうか。
そもそもプログラミングに興味がなければ効果は薄く、問題解決能力を身に着けるのに、プログラミングである必要はまったくありません。

ですが、プログラミングをやってみたい!習いたい!というのであれば、私はこれほど身につく手段も無いのではないかと考えます。

ご参考まで、実際に当教室であった例です。

先生、ステージ7にこのキャラクターが何故か表示されません。プログラムは絶対間違ってないのに!

確かにその部分は間違っていないけど、他の部分が影響してませんか?

絶対合っています。スクラッチのバグだと思います。

では、先生が直してみましょうか?先生のオリジナルキャラクター『きぬごし豆腐君』を出るように・・・

絶対嫌です。自分で直すのでどこがおかしいか見てもらえますか?

『もしステージ7なら、表示する。』・・・このプログラムは正しいです。
でも、ステージの名前は『ステージ7』です。そもそも、ここがあっていないと表示されないプログラムですよね?

え、どう見ても合ってますけど・・・ええと、、、この7が、、、あ、わかった!やった。直った!ありがとうございます。

時には、生徒と一緒に数十分以上悩んだり、プログラムを数個に分けて部分部分で動作を検証したりします。決して直接答えを教えることはしません。生徒は悩みながら自分で解決していきます。何度も繰り返すと、そのうちほとんどヒントを聞くこともなくなって(※)きます。

この成功体験の積み重ねが、自分で解決できるんだという自信につながり、それはプログラミングだけでなく、日常生活の様々なことにも、まずは自分で考えて解決してみようという行動につながっていきます。

ヒントを聞くことがなくなってくる理由
うまくいかない→自分が作ったプログラムであり自分の問題→先生に聞いてすぐに見抜かれるのが悔しい。自分のプログラムなのに。・・・という側面もあると思います。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA