TL;DR
複雑さは見かけのコードで減らせるものではなく、受け入れて理解し、依存関係を整理するものだという考え方。
もとはヒューマンコンピュータインタラクションの格言で、テスラーの法則とも呼ばれる。
なぜ必要か
Wikipedia によると、Larry Tesler は 1980 年代半ばに Xerox PARC で働いていたとき、ユーザがアプリケーションとどう関わるかが、アプリケーションそのものと同じくらい重要だと気づいた。Tesler は、100 万人のユーザが毎日 1 分ずつ複雑さに時間を使うくらいなら、エンジニアが 1 週間かけてそれを取り除くべきだと主張した。複雑さを誰が引き受けるかを考えるときの指針になる。
仕組み
Wikipedia によると、どのアプリケーションにも取り除いたり隠したりできない固有の複雑さがあり、それは開発の側かユーザとのやり取りの側のどちらかで扱わなければならない。ソシオメディアの記事は「タスクの複雑性はある点を超えて減らすことはできない。移動のみ可能である。」と説明している。
例
ソシオメディアの記事では、入力の負担をユーザからシステムへ移す例として、入力中の自動補完、ドロップダウンや日付ピッカーで有効な値だけを選ばせること、ユーザ ID や今日の日付の自動入力を挙げている。
注意点
複雑性保存の法則(koushisa)では、次のように述べている。
複雑性を見かけのコードで減らすという考え方は根本解決ではない
複雑性は受容し、理解し、依存関係を整理する
ソシオメディアの記事によると、ログイン情報を保持して今日の予定を初期表示するように、複雑さをほぼすべてシステム側に移すと、それが合わない利用者にはかえって使いにくくなるおそれがある。Wikipedia によると、Bruce Tognazzini は、アプリケーションを単純にするとユーザはより複雑な作業を試みるようになると反論している。