TumblrPocketプログラマーという職種はロジカルであるべき、という考え方があります。すごく結論そのままになってしまうのですけれども、必ずしも正しくないと思うのですよね。正確に言うならば「常に正しいとは言えない」という感じでしょうか。なってしまう原因のひとつは、論理テスト的思考をロジカル思考だと勘違いしている部分があるのではないでしょうか。論理テストというものは、設問が仮定であり、正しいステップを踏むと回答が出るということになります。回答はかならずしも一定にはなりませんが、全体をひとつの関数として考えることができますね。関数的思考と呼ぶことができるかもしれません。ここには罠があります。この思考が有効なのは、あくまで前提が有効な場合のみです。現実世界においては、前提の有効性はロジックの完成度よりも先に重要なことです。前提が誤りであれば、そのロジックにも結論にも、何の価値も無いのです。どのようにロジックを組み立てようと、そのロジックの前段を込みで検証しなければ、結果が役に立つものにならないわけですね。ロジックを組み立てるという作業において最も重要なことは、「前提は正しいか?」と常に疑いながら再帰的に検証することです。これは科学の基本です。これが無ければ、ただの思い込みと言われても反論できないわけですよ。その思い込みがさらに、そのロジック外にある最も重要なことを見えなくさせてしまいまうわけです。これはプログラミングでたとえれば「どこにバグがあるかわからない」ということになるんじゃないでしょうか?そしてそれはプログラマーとして優秀だと言えるんでしょうか?たぶん、字面で見ている分には「そりゃそうだろー。そんなん何も考えてない奴だけじゃねーの」と誰でも思うでしょうけれども、実際には、頭の良い人の方がこういう思考にはまりがちなように見えますね。なんでそう考えるのか、というと、それは私が頭の良い人間ではなく、それを自覚しているからです。アホですから、自分のやっていることが一番心配なわけです。自分を信用していないんです。そもそも、プログラムというものは、たいていの場合は人間が入力して、結果を人間が使うというものなわけですから、ロジックの正当性と同じくらい、現実との接点が大事なわけですよね。「え〜どんだけレベル低い話してんの?」と言われるかもしれませんが(笑)、上述の通り、むしろある程度慣れてきて優秀な人がむしろ陥りがち、というパターンなので、いわば1周後の世界の話だということはおわかりいただけると幸いです。技術担当取締役を中心に技術者が書いております。プログラミング・サーバー/クラウド技術などについての小ネタから、システム化にまつわるあれこれや、プログラマー教育、そこから発生する様々な考え方などまでご紹介。