ソフトウェアエンジニアリングの歴史を振り返る時、Rubyコミュニティで議論された「驚き最小の法則(POLS: Principle of Least Surprise)」の変遷は、設計思想における重要な分水嶺として浮かび上がります。この法則は当初、言語設計者の意図が一貫していることを示す指針として機能するはずでした。しかし、現実にはこの言葉が、ある種の混乱、いわば「バベルの塔」のような状況を引き起こしました。なぜでしょうか。
思考を巡らせると、その原因は「驚き」という感情の発生源にあります。人が何かに驚くとき、そこには必ず「期待」との乖離が存在します。では、その期待は何に基づいているのか。それは、その人が過去に慣れ親しんだ環境、すなわち「手持ちの知識」です。
Java出身者は静的型付けがないことに驚き、Lisp出身者はマクロがないことに驚く。各々が自分の母国語(出身言語)のメンタルモデルを「基準」とし、そこからの逸脱を「驚き(=悪いこと)」と定義しました。結果として、POLSは「私の慣れ親しんだやり方と同じにせよ」という、互いに矛盾する要求を正当化する言葉に変質してしまったのです。