/note/tech

The peril of laziness lost

要約:

■ 1. プログラマの三徳とLaziness(怠惰)の本質

  • Larry WallはProgramming Perlにおいてプログラマの三徳として「Laziness(怠惰)」「Impatience(短気)」「Hubris(傲慢)」を提唱した
  • 三徳の中でもLazinessは最も深遠な徳であり「システムをできる限りシンプルにする」という美学を内包する
  • Lazinessは表面的な怠惰ではなく高度な抽象化を生み出すための知的労働を意味する
  • ハンモック・ドリブン開発と呼ばれる一見怠惰な思考作業は実際には問題を繰り返し検討する高度な知的プロセスである
  • 優れた抽象化は自分自身だけでなく後継の開発者全員に恩恵をもたらし「より多くの人がより多くのソフトウェアを書けるようにする」ことに繋がる

■ 2. 現代におけるLaziness喪失の背景

  • ソフトウェア開発の裾野拡大により自らをプログラマと呼ばない層が増加しLazinessの本来の意味が失われつつある
  • 現代の高度な抽象化がもたらす生産性向上は「偽の勤勉さ」を重視する文化を台頭させた
  • これはコードを大量生産することを礼賛する「brogrammer」文化として具体化した
  • 皮肉なLazinessとハンモック・ドリブン開発は「コードをクラッシュする」ハッスル文化に取って代わられた

■ 3. LLMがもたらすLaziness喪失の加速

  • LLMはソフトウェア開発者のあらゆる傾向をより強力に発揮させる増幅器として機能する
  • brogrammer文化に対してLLMはアナボリックステロイドとして作用した
  • Garry Tanが1日37,000行のコードを生産すると誇示した事例はこの問題を象徴する
  • 実際にTanのプロジェクトを分析した結果として複数のテストハーネス・RailsのHello Worldアプリ・テキストエディタ・同一ロゴの8バリアント(うち1つはゼロバイト)が含まれていた
  • コードを重量で評価するような指標の誤謬は初学者にも明白である

■ 4. LLMがLazinessを欠く構造的理由

  • LLMは作業にコストを感じないため将来の自分や他者の時間を最適化しようとする動機を持たない
  • 制約なく放置されたLLMはシステムを改善するのではなく肥大化させる
  • LLMはパフォーマンスとは無関係な虚偽の指標に訴求しつつ本質的な品質を損なう
  • 人間のLazinessが不可欠な理由は有限な時間という制約が「認知負荷を許容できる限度まで下げよう」という動機を生み出すからである
  • 制約こそが最良のエンジニアリングを生む原動力であり時間的制約のないLLMはこれを自発的に行わない

■ 5. LLMを正しく活用するための指針

  • LLMは重要なツールではあるがあくまでもツールに過ぎない
  • 皮肉でも徳でもない「非生産的な怠惰」の側面(技術的負債への対処など)にLLMを活用することは有効である
  • LLMはエンジニアリングの厳密性を高める目的で使用すべきである
  • LLMの活用は人間の「徳としてのLaziness」に奉仕する形で行わなければならない
  • 最終目標は自分自身だけでなく後続のソフトウェアエンジニア世代に貢献するシンプルかつ強力なシステムを生み出すことである