「論理的思考の放棄」って才能の言い換えなんじゃ?
「論理的思考の放棄」なる話題を目にしたのだけれども、単にこれは「才能」の言い換えなんじゃないの、と思った。
この登さんの主張は、要約すると「効率のよいプログラミングの仕方には独特の思考方法があり、それは論理的な思考とは全く異なっている。自分はそれを実践することによって大きな結果を出している。」というものだ。
僕ももう人生の半分くらいの時間はソフトウェアをつくることに使っているし、彼が自慢しているように一日で3000行のコードを書くこともあるので言いたいことは理解できるのだが、必要以上にヘンな表現をしているので戸惑っている人が多いだけだ。鉄球と磁石の比喩とか。
登さんはプログラミングの才能がある。それはたぶん確かだ。そして、その思考方法が論理的に表現できるのであれば、他人に容易に伝えられるはずだから、その人も登さんと同じくらいのパフォーマンスを真似できるだろう。でも、他人に容易に真似ができない、ということがそもそも才能の定義みたいなものだから、論理的に表現できないのは当たり前だ。
これまでには優秀な人が書いたコードもそうでない人が書いたコードもいろいろ見てきたけど、僕の経験では、プログラマの能力の優劣は「コードの形」にどれだけ敏感か、で決まると思う。
たとえば、優秀なプログラマは3重にネストしたif文や引数が10個ある関数といったものは絶対と言っていいほど書かないし、いろいろな処理のうち共通化した手順を巧妙に抽出してコードを書くし、最適なデータ構造を一目で見抜く。最も能力の差が出るのがこの判断力であり、結果としてテストとデバッグの効率をコーディングの初期段階から飛躍的に高めることができる。この辺の感覚はオブジェクト指向だとかUMLによる設計だとかの小手先テクニックではなく、本質的なものだ。
気持ちの悪いコードがあるとき、なぜそれが「気持ちが悪い」のかはなかなか論理的には表現できない。もちろん何重のif文になろうとも、引数が10個あろうとも、ちゃんと書けばコンパイルできるし目的の動作にはなる。が、できる人は必ずそういう悪形は避けるものだ。
論理でなく感覚が大事、というのはプロの世界なら何でもそうで、スポーツ選手や映画監督もみなそう言うに決まっている。自分より才能がある人が何を考えているかは永遠に理解できないものだ。平均的な人がJリーグの選手のようにサッカーをすることはできないし、平均的なJリーグの選手がロナウジーニョのようにサッカーをすることができないのと同様に。
でもこれだけ巷に反応があるということは、才能を引き出す方法があるとみんな信じているのだろうか。ないと思うんだがなあ。
最近のコメント