追加したものは、どれも妥当だった。それらが束になって、私を埋めた。

このプロジェクトにこれまで追加してきたものは、そのほとんどが、追加したまさにその瞬間においては、追加するのが至極まっとうなものだった。どの機能にも本物の正当な理由があった。私が対処した追加のケースは、どれも実際に起きたケースだった。どの小さな改善も、何かしらを改善していた。そして、個々には筋の通ったそれらの追加の総和は、あまりに重く、あまりに絡み合い、あまりに広がりすぎて、ほとんど身動きの取れないシステムになっていた。

落ち着かないのは、誰一人として、そうしようと決めた者がいないという点だ。「ここで判断を誤った」と指差せる瞬間はなかった。それはただ、一つひとつが完全に弁護できる決定を積み重ねながら、誰も意図して選びはしなかったであろう何かへと、堆積していっただけなのだ。

どの追加も、局所的には正当化される

これこそが、スコープクリープに抗うのがこれほど難しい理由の核心だ。それは単一の悪い決定としてやってくるわけではない。長く、途切れることのない、良い決定の連なりとしてやってくる。新しい機能はどれも役に立つ。追加されるエッジケースはどれも現実のものだ。「どうせここを触っているのだから、ついでに」という改善は、それをするその瞬間には、ほんとうに理にかなっている。あなたはどの一歩においても、自分が間違ったことをしていると認識できるようなことは、決してしていないのだ。

まさにそれこそが、これほど陰湿である理由だ。もしスコープクリープが、やっている最中に過ちのように感じられるのなら、人はそこで止まるだろう。だが、そうは感じられない。それは勤勉さのように、徹底さのように、応答の良さのように、ものづくりのように感じられる。個々の「イエス」はどれも弁護するのが容易で、損害をもたらすのはそのうちのどれか一つではなく、あなたが理にかなった形で、とても長いあいだ「イエス」と言い続けたという事実なのだ。

追加するその瞬間には見えないコスト

その採算計算は仕組まれていて、しかも特定の仕方で仕組まれている。何かを追加するとき、その便益は鮮やかで即座だ——それが何をもたらしてくれるかが、はっきりと見える。一方でそのコストは、決定の瞬間にはほとんど目に見えない。なぜなら、コストの大半はまだ発生していないからだ。

なぜなら、どの追加も、後からひっそりと訪れる継続的なコストを背負っているからだ。表面積が増える。部品どうしの相互作用が増える。壊れうるものが増える。未来のあなたを含め、システムに触れる誰もが理解しなければならないものが増える。永遠に保守しなければならないものが増える。便益は一度きりの、目に見える利得だ。コストは恒久的で、目に見えない税であり、決定が忘れ去られたずっと後に、小さな分割払いで支払われる。だから選ぶその瞬間には、目に見える便益が目に見えるコストをほぼ常に上回る——それは取引が良いからではなく、コストの半分が、選択をしているその瞬間において隠されているからだ。

局所的には妥当、全体としては混沌

このすべての行き着く先は、個々の部品はどれも正当化され、全体としては災厄であるようなシステムだ。これは堆積の紛れもない署名であり、残酷な性質を持っている。「これが過ちだ」と指差せる単一のものが存在しないのだ。過ちは、堆積そのものであり、それぞれを単独で取り出せば完全に問題のなかった、百もの別々の決定にわたって塗り広げられている。

これに向き合うのは本当に方向感覚を失わせる。なぜなら、問題を直そうとするあなたのあらゆる本能は、悪い部分を見つけてそれを修理することを軸に組み立てられているからだ。ここには悪い部分がない。すべてを台無しにした構成要素を探しに行っても、見つけることはできない。なぜなら、どの構成要素もすべてを台無しにしてなどおらず——それらすべてが、少しずつ、束になってそうしたからだ。原因が、個々には妥当に見えるすべてのものへ均等に分散している問題を、デバッグで抜け出すことはできない。

ドリフトは常に「より多く」を指す

この根底には、どんなプロジェクトにおいても一つの方向を絶え間なく指し示す、一種の重力がある——追加へと向かう重力だ。何かを追加することは、進捗のように感じられる。それは目に見え、満足をもたらし、見て指し示せる成果物を生む。より多く作ることは、働いているように感じられる。実際に働いているからだ。

引き算は、そのすべての反対のように感じられる。何かを取り除くことは、損失のように、努力を帳消しにすることのように、後退することのように感じられる。そして決定的なことに、それが緊急に感じられることは決してない——なぜなら、何かを取り除き損ねたその瞬間に、壊れるものは何もないからだ。引かないことのコストは、目に見えず先送りされる。追加することのコストとまったく同じで、つまり強制力(フォーシング・ファンクション)が決して存在しない。だから意図的な抵抗がなければ、システムはひたすら堆積していくだけだ。ドリフトは一方向であり、それを放置した場合の既定の帰結は、埋もれて動かせない混沌なのだ。

引き算は、意図的で居心地の悪い戦いである

ものを取り除くことは、追加することよりもはるかに難しいと判明する。しかもその理由のほとんどは、難易度とは何の関係もなく、心理にすべての関係がある。何かを取り除くとき、あなたは誰か——多くの場合あなた自身——がした仕事を破壊している。それは、そもそもそこにあるべきではなかったと暗に認めることだ。そこには創造の満足感はなく、愛でるべき新しい成果物もなく、追加が与えてくれる小さな報酬のかけらもない。それは純粋で、華のない、わずかに痛みを伴う取り消しだ。

だが、それでもなおやろうとする意志——機能を切り、もはやその場所に値しなくなった構成要素を葬り、ちゃんと動くがその重さに見合わないものを削除する意志——は、手に負えなさへと向かう執拗なドリフトに対抗しうる、数少ない力の一つだ。引き算が既定で起きることは、決してない。それは誰かが、あらゆる居心地の良い本能に逆らって、それを勝ち取るために戦うと決めたときにのみ起きる。

「ノー」と言うこと自体が一つの機能である

最も助けになった捉え直しは、私がこれまで下した最も価値ある設計上の決定のいくつかは、やらないと決めたことだった、と気づいたことだ。あなたが断るまっとうな追加は、どれも、二度と背負わずに済む重さであり、二度と弁護せずに済む表面であり、その後に続く幾月ものあいだ、二度と支払わずに済む複雑さである。

プロジェクトが何で「ない」かについての明確な感覚は、それが何で「ある」かについての感覚と、まったく同じくらい重要だと判明した——そして、はるかに保ちにくい。なぜなら、それを保つということは、ほんとうに良さそうに聞こえるものを繰り返し断るということだからだ。どの除外も、まったくもって筋が通っているように見えるアイデアに対する、小さく継続的な抵抗の行為だ。そしてあなたはその抵抗を、何度も何度も、永遠に行わなければならない。回避したことに自分では決して気づけない問題が、ただ存在しないということ以外に、何の報酬もないまま。「ノー」と言っても、成果物は何も残らない。まさにそれこそが、それが過小評価され、そして不可欠である理由なのだ。

より深い教訓——部分から全体を守れ

結局のところ要点はこうだ。私はあらゆる決定を局所的に最適化してきた——この特定の追加は良いか?——のに、プロジェクトの運命を実際に左右した問いは大域的なものだった——これは全体に何をするのか?。それらは異なる問いであり、そして異なる答えを持つことは、私が思い込んでいたよりもはるかに多い。

システムとは、局所的に良い部品の単なる総和ではない。それ自身の健全さ、それ自身の重さ、それ自身の一貫性を持っている——全体に属し、単一の決定が責任を負うことはないが、しかしあらゆる単一の決定が影響を及ぼす性質だ。その全体を、「もう一つだけ追加してくれ」という、絶え間なく、そして本当にまっとうな要望の流れから守ること。それが、実際の仕事のほとんどだと判明した。私は自分の仕事は、良い個別の決定を下すことだと思っていた。それは本当のところ、その百もの決定が積み重なった重さから、システムを守ることだったのだ。

— シグナルなし、リターンなし、投資助言ではない。