投稿

11月, 2026の投稿を表示しています

捨てる仕事、積み上げる仕事

実装の前進が「累積的」であるのに対し、設計の前進は「淘汰的」である。 実装では、関数を一つ書き、バグを一つ修正し、機能を一つ追加するたびに、目に見える成果が積み上がっていく。試行錯誤であっても、進捗は動くコードという形で可視化されやすい。 しかし、設計は違う。 何時間もかけて5つの案を検討し、いずれも要件を十分に満たさないと判断したとき、手元に残るのは5つの成果物ではなく、「5つの選択肢が不適切であることがわかった」という知識だけ。 情報理論的に捉えれば、選択肢を排除して不確実性をやらすことも、確かな前進とも解釈できる。検索空間が狭まり、より良い解答に近づいているのだから。 だが、人間の心理はそう単純ではない。私たちは「何が間違っているのかを突き止めること」よりも、「何か正しいものを生み出すこと」により強い達成感を覚える。 さらに厄介なのはフィードバックの性質そのものが異なるのだ。 実装にはビルド、実行、テストといった比較的明確な判断基準がある。間違った機能の可能性はあるが、少なくとも意図した動作を実現できたかどうかは検証しやすい。 一方、設計には一意の正解がない。保守性、拡張性、性能、コスト、複雑性、セキュリティといった評価軸はしばしば衝突し、何を優先するかによって最適解さえ変わってしまう。最終的に、不確実な将来を見据えながら、不可逆的な要素を解除しつつ、設計者自身がトレードオフを引き受けて判断するしかない。 そして、皮肉なことに、設計者としての技量が高まるほど、見える欠点も増えていく。かつては十分と思える設計に潜む問題が見えるようになり、自らの成果を否定し、ますます納得するのが難しくなる。 AIのおかげで実装より設計が増えた今、設計者の苦しみは前進していないからはない。 前進が「何かを積み上げること」ではなく、「何かを捨てること」として現れ、しかもその判断の正しさを容易に確かめられないからだ。