Skip to content

← Back to thinking

lessonsdecisions20 July 2026

Only outcomes survive

Code is an outcome. So is a migrated system or a resolved incident. The reasoning that produced them is the part that goes missing.

Ask anyone on a team why something was built the way it was, and you get one of three answers: the person who knows tells you, the person who knows has left, or nobody ever knew because it was inherited.

The usual prescription is to write it down. Confluence, an ADR folder, comments, a `.md` under `docs`. That works exactly as well as the discipline behind it, which means it asks people to be most thorough at the moment they are most busy. Knowledge-sharing sessions are supposed to catch the remainder, but they happen after the work, by which point the reasoning has gone cold. The session gets longer while more of it is already gone.

What survives is the outcome. A new joiner inherits the result and has to reconstruct the reason, which is not a documentation failure so much as a transparency one — the *why* was never really available, only the *what*.

Agents make this sharper rather than new. Give one a codebase and it will infer a rationale fluently and confidently, and the rationale it infers was very often never true. It cannot know what was already tried, what was rejected, or which constraint never appears in the code at all.

Which is why I think the interesting unit is the decision, not the document. Who made it, on what evidence, and what it superseded. A codebase is a body of decisions, of which the code is its most recent expression.