プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

問題解決の力を養うには


問題解決に一番大事なことは多くの情報から真実を見つけ出すカンを養っておくことだと思います。優秀なプログラマは驚くほど問題を解決するのが早いですが、これは小さなことから多くの情報を収集する能力と、経験によって培われたカンの鋭さではないでしょうか。どうすれば解決できるか、常に考えながら方法を模索し、経験を積むことが大切です。

多くの時間を消費する問題分析


プログラミングをしていると、いろいろな問題に直面します。この機能を実現するにはどうしたらいいか。コンパイル・リンク・実行の仕方、よく分からないバグに遭遇した、などなど。そんな時あなたならどうしますか!?


プログラムを完成させる過程をたどって見ると、問題解決の時間がとても多いように思います。問題を一つ一つ解決することで先へ進んでいるような感覚でしょうか。もっとも解決方法が分かってさえいれば、ひたすらその作業をすればいいわけなので、時間がかかっていると感じないのかもしれません。


問題解決の時間を短縮すれば、作業時間も大幅に短縮できるはずです。状況によってやり方は異なると思いますが、いろいろな解決方法について、ちょっと考えてみましょうか。

問題解決方法

マニュアルを読む


まずはドキュメントを読んでみましょう。何が正しくて間違っているかを切り分けるのにも有効です。


時にはドキュメントが間違っている場合もあります。説明書に書いてあるからといって全面的に信じるのではなく、理にかなっているかどうか検証しつつ読むとよいでしょう。

ググる


Googleなどの検索エンジンを使い、同じような問題がないかどうか探します。


現在最も使われている方法かもしれません。よほど特殊な問題でもない限り、同じような経験を誰かがしていたりするものです。便利な世の中になったものです。


言うまでもありませんが、ネットの情報は必ずしも真実とは限りません。利用する際には必ず自分で検証することをお忘れなく。

実験してみる


カンを働かせ、いろいろと試してみる。プログラミングでは、わりと重要なことです。


マニュアルが完備され、ネットが普及した現在でも、手探りで調べなくてはならないことは存在します。近くに詳しい人がいるとは限りません。あたりをつけて、いろいろと思考錯誤してみる場面は多くあります。何度も自分で体験し、感覚を磨いておきたいものです。

誰かに聞く


どうしても分からない時は誰かに聞いてみるのもよいでしょう。自分で考えていた時は考えもしなかった観点が発見できるかもしれません。


当然のことですが、聞く場合は相手の時間を使っているという気持ちを忘れないようにしましょう。あくまでも当事者は自分であることもお忘れなく。

全然違うことをする


煮詰まってきた時はちょっと違うことをしてみましょう。


問題を分析する時に集中することは大切なことですが、あまりにも集中しすぎると、視点が狭くなってしまいがちです。時には違うことを考えると、新しい発想ができるかもしれません。

次の日の朝考える


時には解析をやめて、朝考えなおすと、いい発想が浮かぶ場合があります。


昨晩いくら考えても分からなかった問題が、朝になったらすぐに解決してしまった。そんな経験はありませんか?自分では疲れていないと思っていても、意外と神経は疲労しているものです。体を休めることで、結果的に効率も上がることが多いです。

ホームズと問題分析


問題解決に一番大事なことは多くの情報から真実を見つけ出すカンを養っておくことだと思います。


名探偵シャーロックホームズという小説がありますよね。ホームズは一瞬のうちに相手がしてきたことを見抜いて周囲を驚かせます。「ホームズ君、なぜ君はちょっと見ただけでそのことが分かったんだい?」と。


でもそれは手品でもなんでもないのです。普通の人は見逃してしまうような、ちょっとした多くの情報を収集し、それを分析して答えを見つける。そのことを一瞬のうちに行っているわけです。


(これは私の想像ですが)ホームズはたしかに人より才能があったのかもしれませんが、それが出来るようになるには多くの経験と努力があったのだと思います。問題に直面した時、どう考えれるべきか、どのようにすれば解決に近づくのか、その時々で考え、才能を磨いてきたのではないでしょうか。カンは単なる才能ではなく、努力の結果なのでしょう。

問題解決の力を養おう


優秀なプログラマは驚くほど問題を解決するのが早いですが、これは小さなことから多くの情報を収集する能力と、経験によって培われたカンの鋭さなのではないでしょうか。


問題解決の力を養うには近道はないと思います。人に聞いて答えを得られても結果は同じかもしれませんが、自分でそれを解決する力はつかないでしょう。どうすれば解決できるか、常に考えながら方法を模索し、経験を積むことが大切なのだと思います。


プログラミングで分からないことがあったら、あなたはどうしますか!?
あなたの解決方法を聞かせてもらえると嬉しいですね。