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.

Scale Your Backend - Need an Experienced Backend Developer?

We provide backend engineers who join your team as contractors to help build, improve, and scale your backend systems.

We focus on clean backend design, clear documentation, and systems that remain reliable as products grow. Our goal is to strengthen your team and deliver backend systems that are easy to operate and maintain.

We work from our own development environments and support teams across US, EU, and APAC timezones. Our workflow emphasizes documentation and asynchronous collaboration to keep development efficient and focused.

  • Production Backend Experience. Experience building and maintaining backend systems, APIs, and databases used in production.
  • Scalable Architecture. Design backend systems that stay reliable as your product and traffic grow.
  • Contractor Friendly. Flexible engagement for short projects, long-term support, or extra help during releases.
  • Focus on Backend Reliability. Improve API performance, database stability, and overall backend reliability.
  • Documentation-Driven Development. Development guided by clear documentation so teams stay aligned and work efficiently.
  • Domain-Driven Design. Design backend systems around real business processes and product needs.

Tell us about your project

Our offices

  • Copenhagen
    1 Carlsberg Gate
    1260, København, Denmark
  • Magelang
    12 Jalan Bligo
    56485, Magelang, Indonesia

More articles

The Difference Between an API That Works and an API Developers Enjoy Using

Functional correctness is the floor, not the ceiling. The APIs developers choose to build on have properties that go beyond working — they are predictable, honest, and low-friction.

Read more

Where Java Applications Lose Time — CPU, I/O, Lock Contention, and GC

Java performance problems fall into four categories, each with different symptoms, different tools, and different fixes. Misidentifying the category means optimizing the wrong thing. Here is how to tell them apart and what to do about each.

Read more

When Banks Set the Salary Bar — How Zürich Startups Compete for Backend Talent

UBS offered your candidate CHF 160K base plus a bonus structure your startup can't even model. He took the meeting with you as a courtesy.

Read more

The Hidden Cost of Hiring Backend Engineers in Seattle's Shadow Economy of Tech Giants

You thought $180K was a strong offer. Your candidate said it was "in the range" — then took a job at a company that doesn't even compete in your market.

Read more