「プログラミング経験のない職場の同僚からみたとき、プログラマは何をしているかよくわからない」というのはよく聞く類のプログラマ寓話である。この寓話は、その先にある「プログラマは実際に手を動かす時間より、頭の中でコードを読み解いて仮想的に動作をシュミレートする時間に多くを割くんだ」という結末までを含めて、それなりに膾炙されだした節がある。この寓話をプログラマに近い立場にいてなるほどと思うその一方で、はたして本当にそうなのかとも感じる。「本当にそうなのか」というのは、「本当に何もしていない見た目に反して考えているのか」ということである。
例えば「プログラマは常に考えている」が真である場合、「あらゆるコードはすべて考えて書かれた上での成果物である」と言える。なぜなら「プログラマは常に考えている」わけだから。さて、ここで一つ疑問に浮かぶのは「なぜ、プログラマにより考えて書かれたコードを読むのに、さらにプログラマに考える時間が必要となるのか」ということである。プログラマAにより「考えて書かれた」のだとしたら、読み手であるプログラマBにとって「考える必要のない読みやすさ」が提供されていてもいいものだ。本当は「考えてなんかいない」んじゃないか。
慎重を期したい。「考えてない」なんて決めつけはあまりにも短絡的だ。
そもそも「読みやすくてもその先の実装を考える」ということは当然あり得るだろうし、
「読みやすいからと言って考えなしに理解できる」とは限らないだろう。
そうは思わないか?
思わないの?
え、ほんとまじで?
じゃあいいよ、もういっそ「プログラマは考えてない」ということにしよう。
それなら彼らは「何もしていないように見える」あのとき、いったい何をしているのか。
A. 目を開けて寝ている
いいや、それはおかしい。目を開けて寝ることができるわけがないだろう?
A. ランチに何を食べようか考えている
いいや、それはおかしい。プログラマさんさっきお昼ご飯食べたでしょう?
A. 腕を組んだ脇の下で指先を温めている
お、君のはなかなか説得力あるな
A. すぐに思い出せないSQLとか直書きするときに使うあれなんだっけ
ヒアドキュメントだよ!
おおよその結論、そしてわたしの主旨としては
「プログラマは考えているが、プログラミングのことを考えているわけではない」
「あなたがプログラミングだと定義していること以上のものを考えており、それこそがプログラミングだ」
という態度でいるのだろうと推察する。