「クズ」のように増殖するバッドコード:放置するとシステムが窒息する理由
Bad Code Is Kudzu
Bad Code Is Kudzu
「Bad code is kudzu(バッドコードはクズの蔓と同じだ)」という言葉をご存知でしょうか?クズ(クズ蔓)は一度根を張ると、爆発的な勢いで周囲を覆い尽くし、他の植物の栄養を奪い去る侵略的な植物です。ソフトウェア開発における「バッドコード」も全く同じ。放置すればするほど、それは制御不能なまでに蔓延り、健全なコードベースを窒息させてしまいます。小さな負債がいつの間にか手に負えないモンスターへと成長する前に、今すぐリファクタリングの鎌を手に取り、クズの蔓を刈り取るべきです。
土壌浸食を防ぐためという話について
自分は違う話を聞いたな。見た目の良さで輸入されたって(ムクドリみたいに)。
厄介な代物だよ。ニューヨークのこの辺りでも見かけるようになったし。メリーランドにいた頃のことをよく覚えてる。
気候変動万歳!
自分もよくプロジェクトを「リセットボタン押して」やり直すよ。昔は痛みが耐え難くなるまで放置してたけど、LLMのおかげでかなり楽になった。
偶然だけど、日本語だとその植物はクズ(葛)っていうんだよね。ゴミを意味する「屑」と同じ読み方をするんだ。だから、ひどいコードはゴミ(クズ)ってことだね。
ひどいコードを侵略的外来種に例えるなんて、今まで聞いた中で一番イケてる解釈だ。自分はいつも「技術的負債ってのはダメなコードのことじゃなくて、優先順位や要件が変わることで生まれるものだ」って周りを説得するのに苦労してるから、この例えは今後かなり使えそう。ありがとう!
素晴らしい例えだな。
クズの問題って、ヤギを放牧して根っこまで引き抜かせることで解決したんじゃなかったっけ?なら、レガシーなgitリポジトリにもヤギを放つべきかもしれないな。
Red Hat Linuxのハードウェア自動検出ツールも、udev時代より前は「Kudzu」って呼ばれてたよ。https://fedoraproject.org/wiki/Anaconda/Features/NoMoreKudzu
クズには可視性のバイアスがあると言いたいね。日当たりの良い道端や線路沿い、荒地なんかで育つから、みんな目に付きやすくて実際より蔓延してると思っちゃうんだ。しかもほとんど無害だし[2]。
ひどいコードはその逆だよ。みんなが思ってるより蔓延してるし、むしろ人が手を付けない場所に溜まっていく。クズというよりはイボタノキに近いね。まあ、それじゃキャッチーじゃないけど。
クズがなぜこれほど「悪」として扱われてきたのか、その贖罪的なストーリーを掘り下げたいなら、99% Invisibleのこのエピソードの18分あたりがなかなか面白いよ[1]。
[1] https://99percentinvisible.org/episode/roman-mars-describes-athens-ga-as-it-is/
[2] https://www.smithsonianmag.com/science-nature/true-story-kudzu-vine-ate-south-180956325/