Why Documentation Is a Leadership Skill, Not a Chore
by Arif Ikhsanudin, Backend Developer
Writing good documentation is not about being thorough or disciplined. It's about understanding what the people who come after you will actually need — and caring enough to provide it.
Why Developers Don't Document
The standard explanations are about time and priority — there's always more code to write, and documentation doesn't feel as urgent as the feature that's due on Friday. That's true, but it's not the main reason.
The main reason is that documentation is hard. Not in a technical sense, but in an empathy sense. Writing useful documentation requires you to accurately imagine what another person doesn't know and fill exactly that gap. That's a genuinely difficult cognitive task, especially when you're deep in the knowledge of the thing you're documenting.
The curse of expertise: the more you know about a system, the harder it is to remember what it's like not to know it. The things that seem obvious to you after three months with a codebase are invisible assumptions to the person who joins next week.
What Bad Documentation Looks Like
The most common failure mode is documentation that describes what the code does rather than why it exists and how to use it.
A README that says "this service processes payment validation requests" is technically accurate and completely useless. A README that says "this service sits between the API gateway and the payment provider, validates that the payment method is eligible under the current promotion rules, and returns an approval or denial with a reason code" is actually informative.
Bad documentation:
- Restates what the code says without adding context
- Documents the happy path only
- Assumes the reader has the same background as the writer
- Gets written once and never updated
The last one is worth its own paragraph. Stale documentation is often worse than no documentation. A developer who finds no README will start from scratch. A developer who follows an incorrect README will spend hours debugging the gap between what it says and what the system actually does.
Documentation that isn't maintained is a liability, not an asset. This is why "write the docs" as a separate step at the end of a project almost never produces useful documentation — it's already stale by the time it's written, and it has no mechanism for staying current.
Documentation as Thinking
Here's the reframe that changed how I approach it: documentation is a thinking tool, not a record-keeping tool.
When I write down how a system works — the data flows, the assumptions, the edge cases, the decisions I made and why — I discover things I didn't consciously know I knew. I find the parts where my mental model is fuzzy. I notice the assumption I've been carrying without examining.
Writing forces precision in a way that thinking doesn't. "The service validates payment eligibility" sounds complete until you have to write it down and ask: eligible how? Validated how? What happens when it's not eligible?
Some of my best technical decisions have come from writing documentation before the code, not after. It's a form of design work.
The Audience Is Everything
The mistake of writing documentation for yourself is common and understandable. You're the one who knows the system best, so you write in a way that makes sense to you.
But you are not the audience. Ask who will actually read this:
- A new developer onboarding to the system?
- A developer from another team who needs to integrate with this service?
- An on-call engineer debugging an incident at 2 AM?
- Your future self, six months from now, who's forgotten half of this?
Each of these readers has different needs. The on-call engineer doesn't need the architectural rationale — they need "if you see error code X, check Y." The onboarding developer doesn't need the integration guide — they need context about what the service exists to do and where to start reading.
Write for a specific reader. Imagine them. Write to their level of knowledge and their likely state of mind. A panicked on-call engineer and a thoughtful new hire need different things.
Documentation as Leadership Signal
When you write good documentation, you're doing several things at once. You're making the system accessible to future maintainers. You're reducing the single points of failure that come from knowledge being locked in one person's head. And you're modeling something for the people around you.
Teams that document well tend to have leads who document well. This is not coincidence. The lead signals what's valued. If documentation is something you do at the end, begrudgingly, before a handoff, that's the practice the team develops. If it's something you do as a normal part of design and implementation, the team tends toward that too.
The developers who are hardest to replace are often the ones who haven't documented anything. That sounds like job security. It's actually a sign that they've created a fragile dependency on themselves and a long-term cost for everyone around them.
Reducing your own replaceability through documentation is a leadership act. It says: I care more about the system working well than about being needed.
The best documentation you write is the thing your team didn't have to interrupt you to ask — because they found the answer already.