A pattern I’ve seen many times in software projects is that documentation starts too late and documents the wrong thing.

A team ships a feature, the code works, the tests pass, and everyone moves on. Maybe someone adds a README section, maybe not. If they do, it usually explains how to run something, how to call an endpoint, or what a component does. That kind of documentation is useful, but it often misses the part future developers need most.

It misses the decision.

Six months later, someone opens the same part of the codebase and asks the usual questions. Why is this data model shaped like this? Why is this rule handled in the backend instead of the frontend? Why is this integration synchronous? Why does this permission check live here? Why did the team choose this simple approach instead of something more flexible?

The code can show what exists, but it rarely explains why it exists. That is where a lot of engineering context disappears.