足が遅い人に、どうして君は足が遅いんだと、何かを教えて叱咤するよりも、技術を応用して巡回バスという社会システムを発明する方が、よほどエンジニアらしい行いなんじゃないかな? バスを作る力のある人を、バスを知らない足の遅い人たちの理論から救い出すことが、全員の幸せにつながる教育なのでは
普通のプログラマーでは思いつかないような、たいへん創造的な「悪いコード」を書いてしまう層は、たとえば DRY じゃないと困ることにさえ経験で気付かない時点で、いくら教えても自走できる見込みがない。残酷なようだけど、彼らの書くコードを悪い例として晒して溜飲を下げる方がより残酷なのかも
IT雇用を想定するからだいぶ可燃背の高い言葉に見えるけど、学問や芸術、ほか、それこそ陸上競技だと考えればどうかな。犬を見て犬の絵を描けないタイプの人を例に挙げて、画家としての心得を語る先生とか想像してみてください。そもそもなぜ、そんな画力の人が絵を描かなきゃならんのでしょうか
プログラミングについても、ほとんどの人は実は設計なんてできないとわかっていて、だから業界は「あなたはPGなんですから、何も設計しなくてもいいんですよ。コードを打ち込む単純作業です」ということにしたかった。それは本当は、善意だったんじゃないだろうか
まあ現実は残酷で、プログラミングに設計力が必要でなかった時なんて、これまで一度もなかったけど。プログラミングのうちコツコツ単純労働な成分(人月の神話に出てくる偶有的困難さ)は、半世紀のうちにどんどん自動化されてしまって、いまや設計しか残っていない状態になった
それこそが、下手な人の尻を叩かず、黙ってモノを作り積み上げてきた、エンジニアリングの成果だと思うんだ。彼らの動機は、救い出せる一部の人に、より抽象度の高い言語(パターンなどコード以外も含む)を提供することで、それは紆余曲折あっても、わかる人には伝承されてきて、生存バイアスで今がある
途中だいぶ省略になるけど、究極的には、たくさん作って売るという産業と雇用のイメージが、ソフトウェアという概念と本質的に矛盾することを、50年かけても覆せない人類が諸悪の根源。多くを作るより、最高のものを多くのハードウェアに乗せる方がいいに決まってるのに、無駄に作りすぎなんだ
※ 最高のものと言っても、それは世界にひとつではなく、理論上は地球人口の数と同じだけある。つまりエンドユーザーコンピューティングのこと。これが、無駄に作りすぎるべきでないことと、ぜんぜん矛盾しないのがソフトウェアの面白さだと思う。できる人は、他と違うところだけを小さく作る