Most engineers treat documentation as a tax - the annoying thing you do after the real work is done. Write the code, ship the feature, then reluctantly add some words to the wiki before the ticket gets closed.
This misses the whole point. Writing documentation is not a service to future readers. It is a thinking exercise that makes you a better engineer while it also helps those future readers.
Why Writing Forces Clarity
You can hold a vague understanding of a system in your head. You can even implement something based on that vague understanding. Code will run on incomplete mental models.
Writing will not.
The moment you try to explain how something works in writing, every gap in your understanding becomes immediately apparent. You will reach a sentence and suddenly realize you do not actually know how the authentication token gets validated - you just assumed it happened somewhere. Writing forces you to find out.
This is not a minor benefit. Many bugs come from engineers who have a working but incomplete mental model of a system. The code looks right to them because their mental model is subtly wrong. Writing about it would have revealed the gap.
The Design Doc That Catches Problems Early
Writing a design document before building something has a reputation as a heavyweight enterprise process. It is not, if you do it right.
A good design doc does not need to be 20 pages. It needs to answer:
- What problem are we solving and why does it matter now?
- What are the options we considered?
- What are we building and why did we choose this approach?
- What are the risks and unknowns?
- How will we know if it worked?
Writing this document before coding forces you to articulate the “why” - which often reveals that the problem statement was fuzzy, or that you were about to build the wrong thing, or that there was an obvious solution you had not considered.
The document also creates alignment. When you share it with teammates, they see the full picture, not just the implementation. Disagreements about approach surface before you have built on the wrong foundation.
Documentation as Career Acceleration
Engineers who write well have a significant career advantage that is rarely talked about.
The leverage: written communication scales. When you explain a system verbally, you help one person at a time. When you write a clear explanation and put it in the wiki, you help every future engineer who encounters that system - including engineers who have not joined the company yet.
This compounds. Engineers who are known for writing clear documentation get tagged to explain complex systems, which gets them in front of senior stakeholders, which gives them visibility and credibility that pure code contribution does not.
The engineers at big companies who move fastest through the senior and staff levels are almost all excellent communicators. That is not a coincidence.
The Types of Documentation Worth Writing
ADRs (Architecture Decision Records): Short documents capturing why a significant technical decision was made. Future you and future teammates will be deeply grateful. Format: context, decision, alternatives considered, consequences.
Runbooks: Step-by-step instructions for operational tasks. How to deploy. How to rollback. How to investigate a specific class of alert. The kind of thing that right now lives only in your head.
How-this-works explanations: The explanation of a complex or non-obvious piece of your system that new engineers always have to ask about. Write it once. Point people to it forever.
Post-incident write-ups: What happened, what the root cause was, what you changed. Invaluable for preventing the same failure twice and for building organizational memory.
Practical Writing Habits for Engineers
You do not need to become a professional technical writer. You need a few habits.
Write the comment before the code. Before implementing a non-obvious function, write a comment explaining what it does and why the approach is correct. If you cannot write the comment, you do not understand it well enough to code it yet.
Document while it is fresh. The time to document a design decision is immediately after making it, not six months later. Put a note in the PR description. Capture the key trade-off while it is still in your working memory.
Use the “future new hire” test. When writing documentation, ask: if someone joined next week with no context, would this be enough to understand? If not, add the context they would be missing.
Edit ruthlessly. The first draft is for you to work through your thinking. The final version is for the reader. Cut everything that does not serve the reader.
The Readability Effect on Your Code
Here is a side benefit most people do not anticipate: once you start writing more documentation, your code gets cleaner.
When you get into the habit of explaining what code does in words, you become more sensitive to code that is hard to explain. Complex, tangled code is hard to document. Simple, well-structured code almost documents itself.
The engineers whose code reviewers consistently say “this is easy to read” have usually internalized this connection. They write code that they could explain in prose. They name things to make the explanation unnecessary.
Bottom Line
Writing documentation is not the price you pay for finishing a feature. It is a thinking exercise that catches design problems early, builds your technical reputation, creates organizational memory, and makes your code cleaner as a side effect. Start with a design doc for your next project, write the comment before the function, and capture the reason behind the next technical decision you make. The habit compounds fast.
Comments