発生日:2026年4月21日。 「Laws of Software Engineering(ソフトウェア工学の法則)」というウェブサイトが、ソフトウェアシステムとそれを構築する組織について考える際に使われる原則、パターン、警告的な格言を幅広くまとめたカタログを作成した。このコレクションは単一の開発手法を提案するのではなく、アーキテクチャ、プロジェクト管理、人間の行動、テスト、技術的変更に関する考え方を集約している。

いくつかの項目は、システムがどのように成長するかに焦点を当てている。カタログには、機能する複雑なシステムは一般に、すでに機能していた単純なシステムから進化するという見解のほか、抽象化は漏れること、あらゆるアプリケーションには移動させることはできても排除はできない複雑性が含まれるという警告が掲載されている。また、必要になる前に機能を追加することを避け、設計を実用上可能な限り単純に保ち、知識の各項目について信頼できる唯一の表現を維持するという、よく知られた指針も含まれている。

組織構造は技術設計と切り離せないものとして扱われている。掲載されている原則の一つは、システムはそれを作る組織のコミュニケーションのパターンを反映する傾向があるとしている。ほかの原則は、遅れているプロジェクトに人員を追加するとさらに遅れる可能性があることや、チームが拡大するにつれて個人の生産性が低下し得ることを警告している。同サイトは「バス係数」も取り上げている。これは、その人数のチームメンバーが不在になるとプロジェクトが深刻な困難に陥る、最小の人数を意味する。

時間と見積もりも、別の一群を構成している。このコレクションは、仕事は割り当てられた時間を使い切るまで膨張する傾向があること、遅延を見込んだ後でもプロジェクトには予想以上の時間がかかることが多いこと、実装の最後の部分がスケジュールの不釣り合いなほど大きな割合を費やす可能性があることを指摘している。これらの項目を総合すると、見積もりは一度完成させられる計算ではなく、繰り返し発生するリスク源として位置付けられる。

テストと保守に関する原則は、フィードバックを重視している。カタログは、多数の高速な単体テスト、より少数の統合テスト、そして少数のインターフェースレベルのテストからなるピラミッドを提示している。また、変更のないテスト一式を繰り返し使用すると、時間とともに有効性が低下すると警告している。関連項目では、技術的負債をその後の開発を遅らせるあらゆるものと説明し、劣悪な設計や誤った判断を修正せずに放置しないようチームに促している。

別の部分では、工学上の実践を超えて視野を広げている。このコレクションは、指標が目標になると価値を失う傾向、すでに資源を投入したという理由だけで選択を継続する危険性、既存の信念を裏付ける証拠を好む偏りを扱っている。また、分散システム、並列処理、ネットワーク効果に関する原則も含まれている。

そのため、これは普遍的な命令集ではなく、繰り返し現れる工学上のトレードオフを示す地図として読むのが最適だ。一部の項目は形式的な技術上の限界を要約している一方、経験則や社会的な観察に当たるものもある。その価値は、各プロジェクト固有の制約に照らして検証できるパターンに、簡潔な名称を与えている点にある。