システム設計に「間違い」はあっても「正解」は存在しない。あるのは、そのときの状況に応じた“最適な妥協”である。 設計とは、さまざまな制約の中で意思決定を行い、将来に向けて形を与える行為である。
「設計の賞味期限」という観点を通じて、どのように設計の寿命を見積もり、制約と向き合うべきかを考察する。
「いつまで持てばよい設計なのか?」
この問いを意識することで、設計は現実的なものとなる。 設計には永続性を持たせるべき領域もあれば、あえて短命でよい領域もある。
賞味期限を考えることは、「制約の受容」にもつながる。すべての設計は制約の中で行われるものである。
設計とは、本質的には制約の表現である。 無制限の時間、予算、人材、将来の見通しが存在するのであれば、制約を持たない。 しかし現実には、「誰が保守するのか」「いつまで使うのか」「何が変化し得るのか」といった制約が常に存在する。
「この設計は◯年もてばよい」という判断は、設計に対して意図的な制約を与える行為である。 それは、過剰設計を避け、将来のリプレイスも見越した柔軟な思考をもたらす。
いくつかの視点で具体例を踏まえて考える。
設計に「賞味期限」を持たせることで、次のような効果がある。
これは、設計に対する「責任の範囲」を明確にする行為でもある。
コードは書いた瞬間から負債化するものだと思うが、ビジネスの成長に追随できなくなる状態をどれくらいの期間で考える(≒負債を許容する期間。賞味期限)かどうかは、設計に良い示唆を与えてくれる。
実際には様々な要因が重なりあって賞味期限が想定より短かったり、長ったりすることもあると思うが、制約を考えるヒントとして賞味期限という観点を持つと良い思う。