My Philosophy of Documentation
- Published at
Documentation, oh documentation
How many use your "outdated" reputation as an excuse not to write you at all?
Hi. Do you write documentation?
If you do, how did you start?
I still remember the first time I was asked to write documentation at work.
Back then, my manager wasnât exactly encouraging engineers to write docs.
Why?
Probably because documentation needs regular updatesâor it goes stale.
Worse, outdated or conflicting docs can create a mess thatâs more harmful than helpful.
Would you have just accepted that answer?
I couldnât.
The manager wasnât banning documentationâjust not promoting it.
Thatâs a big difference. And I guess Iâm the kind of person who likes to push the edges of whatâs allowed.
Thatâs when I began a line of thought Iâd later call:
What documentation means to software engineering.
Start with âSoftware Engineeringâ#
Letâs break it down: documentation, software engineering, meaning.
Some parts are abstractâtoo fuzzy to start withâso I began with the more concrete one: âSoftware engineering.â
Have you ever stopped to ask: What exactly is software engineering?
In my search, I found a quote I liked from David Lorge Parnas, pioneer of information hiding:
âSoftware engineering is the multi-person development of multi-version programs.â
In other words, software engineering is building evolving programs as a team.
Even solo developers collaborateâwith their past, present, and future selves.
So being a software engineer isnât just about writing code.
Itâs about doing it well in a world of shifting versions and many contributors.
Then, Letâs Talk About Documentation#
So what is documentation?
Some say self-documenting code is a core skillâand a difference between developers and engineers.
But that still doesnât answer the question.
In practice, documentation comes in many formsâREADMEs, API docs, test reports, specs, diagrams.
It can be text, images, tables, flowcharts, or a mix.
In the context of software engineering, documentation connects directly to its core nature:
multi-person, multi-version collaboration.
Where people and code are constantly evolving, documentation becomes a bridge across time and turnover.
Maybe thatâs its true meaning in software engineering.
From Concept to Strategy#
I know this sounds abstract.
But for me, laying out a thought process helps me ground decisions in principlesânot just instinct.
In my last job, I convinced my manager to stop blocking docs by lowering the cost of writing them.
But I still felt I was operating on gut feel.
Yes, I could decide case by case.
Yes, I could persuade stakeholders.
But did I have a documentation investment strategy?
Especially with limited timeâhow do you prioritize whatâs worth documenting?
So in this job, I wanted a framework that created value for both engineering and the business.
Because not all documentation carries the same weight.
Three Angles to Evaluate Documentation#
While my previous and current managers had different concerns, both cared about efficiency and value.
I broke the problem into three dimensions:
-
Lifecycle
Some docs are short-lived (e.g., project notes); others persist.
Knowing the expected lifespan clarifies maintenance needs and ownership. -
Frequency of Questions
The more often something is asked, the more valuable it is to document.
This saves time and surfaces knowledge gaps.
If one person becomes a bottleneck, itâs time to scale horizontally by documenting and sharing. -
Risk Level
Some topics rarely come upâbut when they do, mistakes are costly.
These are like evacuation manuals: seldom used, but must be reliable when needed.
Reducing the Friction of Writing#
Once I knew what to document, the next challenge was how.
I didnât want to rely on willpower every time.
And I didnât want to be the only one writing.
So I borrowed from requirement and design review workflows and made documentation a collaborative process:
-
Define the purpose before writing
Whoâs it for? When will they read it? What problem does it solve?
Whatâs their technical background? Whatâs in or out of scope? -
Start with an outline, not a full doc
This makes reviews easier and avoids overwhelming readers.
It lowers the cost of feedback and encourages early alignment. -
Separate detail from structure
Focus on the readerâs task. Move tangents or extras to references or FAQs to keep the main flow clean.
Documentation as a Bridgeâand a Dialogue#
As I worked on reducing the friction, I realized something unexpected:
Documentation isnât just an output.
Writing it is a chance to facilitate discussion and build alignment.
Collaborating on outlines or examples uncovers mismatched assumptions.
It turns vague disagreements into something concrete.
Docs become more than knowledge repositories.
Theyâre tools to drive conversation, challenge assumptions, and align mental models.
In that sense, documenting is just another form of version controlâ
but for team understanding.
Back to the Original Question#
Hi again.
Do you write documentation?
How did you start?
I no longer ask whether we should document, but rather:
Whatâs worth documenting?
How do we write meaningfully?
How do we use the process to give teams clarity and direction?
Because documentation isnât just knowledge transferâ
itâs how we keep that knowledge from staying locked inside overworked experts.
The meaning of documentation in software engineering might lie in the small choices we make:
- What to preserve
- Who to preserve it for
- And how to do it
The sum of those choices is part of what makes us software engineers.
Do I know if this way of thinking will lead me where I want to go?
No.
I didnât expect it to get me close to a Staff-level roleâat least not so soon.
But maybe thatâs how it starts.