👋

『達人プログラマー』を読んで

2023/03/10に公開

https://www.ohmsha.co.jp/book/9784274226298/

『達人プログラマー』中に出てきた単語で、覚えておきたいと思った言葉をまとめておく。
こういった単語を整理しておくことは、エンジニア間での会話の潤滑油としても、自分の思考を滑らかにする意味でも重要だと思ったので。

カーゴカルト


File:Jet over SC February 4 2023.png

積荷信仰

概要

  • メラネシアの各地で19世紀後半から、特に第一次・第二次世界大戦間に発生した信仰
  • カーゴ(積荷を積んだ船舶や飛行機)がやってきて、救いをもたらすという考え
  • 現地人は、船舶や飛行機をおびき寄せるために、植物を素材に外見だけを模倣したハリボテの舟や飛行機を設置した

カーゴとコードと

  • 「カーゴ」を上手く動いているコード(他の場所で動いているものや、Web上にある例示)、「ハリボテ」をそのままコピーして現在のプロジェクトに移したものに喩え、これが意図通り動かないことを「コンテキストの事故」としている
    • 「カーゴ」には動作するための前提がある。外見だけ模倣しても上手く動かないだろう
  • 「上手くいっているものの表面だけをなぞり失敗することの教訓」としては、コーディングに限らず、業務全般、延いては人生の全てに当てはまるものではないだろうか

ゴルディアスの結び目


EB1911 - Knot - Fig. 37 - Shroud Knot.jpg

難題を大胆な方法で解決することのメタファー

概要

アレクサンドロス大王に纏わる故事。
フリギアの王ゴルディアスは、誰も解けないほど紐を固く結び、これを解けたものがアジアの覇者になると予言した。アレクサンドロス大王はこれを刀で断ち切り、実際にアジアの覇者となった。
日本語で言うところの「快刀乱麻を断つ」

達人プログラマーでは

難解なパズルのようなプロジェクトや記述が難しいコードに遭遇したとき、「絶対的な制約」を意識することで、それ以外を「単なる先入観」と見做すことができる。

「明らかな制約だと思えたものが、実際には制約でも何でもなかった」

困難に対する具体的な解決手段として、達人プログラマーでは以下が挙げられている

  • すべての手段を列挙し、何故それが採用できないかを考える
  • 一晩寝かせる(デフォルト・モード・ネットワーク?)
  • ラバーダック
    • 何故この問題を解決しようとしているのか
    • 解決することによるメリット
    • その問題は境界条件に関係しているのか、その条件を除去できないか
    • 関連する、より簡単に解決できそうな問題があるか

Discussion