問題解決ができるようになること

プログラミングを教わって、プログラミング言語を覚えた、プログラムが書けるようになった、とプログラミングをただ教わるだけでは、あまり意味がありません。

しかし、プログラミングを学ぶ課程でコンピュータの限界と可能性を知ることが将来役に立ちますよ、というお話を前回しました。

プログラミングを学ぶ過程で得られるモノについて、今日はもう少しお話ししましょう。

プログラミングとは、問題を定義し・解決する作業といえます。

“問題を定義する”とはどういうことでしょうか。
「営業」の仕事を例にとって考えてみましょう。

ある営業マンが、残り1日で今月の売り上げノルマ100万を達成しなければならないとしましょう。
その場合、残された1日で、どんなことを考え、行動しなければならないでしょうか。

残り時間が少ないので、すぐに商品を買ってくれそうな可能性の高いお客さんにアプローチする必要があります。

例えば「過去の売り上げが多かったお客さんで、今月の売り上げが少ないお客さんに電話する」作戦を思いついたとしましょう。もちろん電話するだけでは売上は上がりませんが、問題解決のための最初の一歩としては良さそうに見えます。

ここまでが「問題を定義する」の段階になります。ノルマ100万円をより具体的な内容に置き換えたわけですね。

さて、そうと決まったらまずは、今までの3年文の売上をお客さん別に集計して、その金額が多い順に並び替えなければなりません。そうすると、単純にお客さんの会社が大きいか小さいかの順になってしまいました。いま知りたいのは、まさに今月、たくさん買ってくれそうかどうかがなので、これでは上手くいきそうに無い、ということが分かりました。

どうやら、単純に3年分の売上を集計したのがまずいようです。月別・お客さん別に集計したものの月別の平均を取った数字で並び替えることにします。でも、これはちょっと資料を作るのが大変そうです。さてどうしようか…. と、問題を定義して方法を考えても、新しい問題はどんどん出てきます。

社会に出て仕事をするようになると、こういった方法検討や試行錯誤は日常的に必要とされるスキルです。

プログラミングをする過程でも、同じように考える必要があります。

  1. 問題を定義する(何を作ろうか考える)
  2. 解決方法を考える(プログラムの手順に分解する)
  3. 試行錯誤する(プログラムを動かしてみて上手く行かないところを直す)

プログラミングに慣れてくると、このような手順を無意識的にできるようになります。これは実社会で非常に役に立つでしょう。

そして「答えは一つでは無い」というところも実際の仕事とプログラミングの共通点です。基本的には結果を出せる方法が重要であって、どんな方法なのか、ということは(悪いことでなければ)重要ではありません。

プログラミングを学ぶと、より実践的になるのです。
他の教科ではなかなか学ぶことが難しいスキルですよね。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。