
- Glitter AI
- Blog
- Process Documentation
- How to Document Software Processes: A Developer's Guide to Clear Documentation
How to Document Software Processes: A Developer's Guide to Clear Documentation
Learn why developers hate documentation and how to make it suck less. Practical guide to documenting software processes, runbooks, and code for dev teams.
- Why Developers Hate Documentation (And How to Make It Suck Less)
- Documenting Code vs. Documenting Processes
- Essential Documentation for Software Teams
- Keeping Docs in Sync With Code
- Tools and Automation for Developer Docs
- Documentation as Code: The Only Approach That Works
- What to Document (And What to Skip)
- Making Documentation Part of Your Culture
- Real-World Example: How I Document a New Feature
- Final Thoughts: Documentation Is a Compiler for Human Brains
- Frequently Asked Questions
Read summarized version with
Look, I'm just going to say it: most developer documentation sucks.
Not because developers can't write. But because we hate writing documentation almost as much as we hate meetings. We'd rather refactor a monolith than write a README that doesn't get stale in three weeks.
I get it. I've been there.
When I was running Simpo (my previous startup), I watched our engineering team struggle with this constantly. We'd ship features, change deployment processes, update API endpoints—and the docs would lag behind reality by weeks. Sometimes months.
New developers would join and ask basic questions that should've been answered in our documentation. But the docs were either outdated or non-existent, so they'd ping someone on Slack. That person would explain it verbally, and the knowledge would live in that DM thread forever.
Documentation debt is like technical debt, except worse. You can refactor bad code. But undocumented tribal knowledge? That leaves when people leave.
I'm Yuval, founder and CEO of Glitter AI. I built Glitter after dealing with this exact problem across two startups. Let me show you how to document software processes in a way that doesn't make you want to quit engineering and become a sheep farmer.
Why Developers Hate Documentation (And How to Make It Suck Less)
Before we talk about how to write better docs, let's acknowledge why this is hard.
It's Boring as Hell
Let's be honest. Writing documentation feels like the opposite of building things. You just shipped a beautiful feature, fixed a gnarly bug, or automated a painful deployment process. The last thing you want to do is document it.
Your brain is done. You want to move on to the next problem.
I get it. But here's the thing: if you don't document it now, you'll forget the details in two weeks. Then when someone (probably you) needs to do it again, you'll waste 30 minutes re-figuring out what you already knew.
Docs Get Stale Immediately
You write a comprehensive deployment guide. Three weeks later, someone changes the CI/CD pipeline. Now your docs are lying to people.
This happens because documentation lives in a different place than code. You update the code, push it, move on. The docs? Those are in some Confluence page or README that nobody remembered to update.
The fix: Documentation as code. More on that later.
Nobody Reads Documentation Anyway
This is the big one. Why spend hours writing documentation when people are just going to ask you on Slack anyway?
Here's what I learned: people don't read documentation when it's hard to find, outdated, or not answering their actual questions. But when documentation is:
- Easy to find
- Up-to-date
- Showing them exactly what to do
They absolutely use it. And they stop interrupting you.
Documenting Code vs. Documenting Processes
There's a difference between documenting your code and documenting your processes. Most developers confuse the two.
Code Documentation: What the Code Does
This is stuff like:
- Inline comments explaining complex logic
- Docstrings for functions and classes
- API documentation
- Architecture diagrams
Code documentation explains what the code does and why it does it that way.
Good code documentation answers questions like:
- What does this function return?
- Why did we implement it this way instead of the obvious way?
- What are the gotchas?
Process Documentation: How Humans Work With the Code
This is the stuff that happens around the code:
- How to set up your local development environment
- How to deploy to production
- How to debug common issues
- How to onboard a new developer
- What to do when the API goes down at 2 AM
Process documentation explains how humans interact with your systems.
Most teams over-index on code documentation (if they document at all) and completely neglect process documentation. Then they wonder why onboarding takes three weeks and deployments are scary.
You need both. But in my experience, process documentation is what actually saves your team time.
Essential Documentation for Software Teams
Let me walk you through the types of documentation every software team needs. Not should-have-if-you-have-time documentation. Must-have documentation.
README Files (That People Actually Read)
Your README is not a legal document. It's a "start here" guide.
A good README for a project should answer:
- What is this? (One sentence)
- Why does it exist? (One paragraph)
- How do I run it locally? (Step-by-step, assuming nothing)
- How do I deploy it? (Or link to deployment docs)
- Who do I ask when things break? (Seriously, put this in there)
That's it. Don't write a novel. Don't document every API endpoint. Just tell people how to get started.
I've seen READMEs that are 500 lines long and don't tell you how to run the damn thing. Don't do that.
Runbooks for When Everything Is On Fire
A runbook is documentation for when things go wrong. It's the "break glass in case of emergency" guide.
Every critical system needs a runbook that answers:
- What are the signs something is wrong?
- What's the first thing to check?
- How do I roll back the last deployment?
- Who needs to know about this?
- What should I NOT do? (Seriously, this is important)
Write your runbooks when things are calm. Not at 2 AM when production is down and you're panicking.
I learned this the hard way at Simpo. We had a database migration that went sideways. Nobody knew how to roll it back. We figured it out eventually, but it took three hours and a lot of stress.
After that? I wrote the rollback procedure down. Two months later, it happened again. This time? Five minutes to fix because we had the runbook.
Onboarding Documentation (Stop Answering the Same Questions)
Onboarding docs should answer every question a new developer asks in their first two weeks.
Start with nothing. Then every time someone asks a question, add it to the onboarding docs.
"How do I get access to the staging database?" "Where are the API keys stored?" "How do I run the test suite?" "Why does my local build keep failing?"
All of these should be documented. Not in someone's head. Not in a Slack thread from six months ago. In your onboarding docs.
At Simpo, our onboarding went from "ask the senior dev everything" to a three-day self-service process with checkpoints. New developers could get up and running without constant hand-holding.
That freed up senior developers to actually build things instead of answering the same questions every two months.
Architecture Decision Records (ADRs)
This is one of my favorite types of technical documentation. An ADR is a short document that explains:
- What decision did we make?
- What were the alternatives?
- Why did we choose this option?
- What are the consequences?
For example: "We chose PostgreSQL over MongoDB for our database because we need ACID transactions and our data is highly relational. The tradeoff is we lose some flexibility in schema evolution."
ADRs are gold because they capture context. Six months from now when someone asks "why the hell did we use PostgreSQL instead of MongoDB?" you can point them to the ADR instead of trying to remember.
These should be short. One page max. Store them in version control next to your code.
Deployment and Operations Documentation
If only one person knows how to deploy to production, you have a single point of failure.
Your deployment docs should cover:
- How to deploy (step-by-step)
- What to check after deploying
- How to verify the deployment worked
- How to roll back if it didn't
- What monitoring to watch
Make them detailed enough that someone who's never deployed before can follow them.
I know this sounds obvious, but I've seen production deployments that live entirely in one person's head. Then that person goes on vacation and nobody wants to deploy anything.
Document your deployment process. Put it in version control. Keep it updated.
Keeping Docs in Sync With Code
This is the hardest part. How do you keep documentation from going stale?
Store Docs in Version Control (Next to Your Code)
If your documentation lives in Confluence or Google Docs, it's already out of date.
Put your docs in the same repo as your code. When you change the code, you change the docs in the same commit.
This is called "documentation as code" and it's the only way I've seen that actually works.
Use Markdown. Store it in a /docs folder. Treat documentation changes like code changes—review them, version them, deploy them.
Make Docs Part of Your Code Review Process
When someone submits a PR that changes how something works, ask: "Did you update the docs?"
This should be as normal as asking "Did you write tests?"
If the PR changes the deployment process, the deployment docs should be part of the PR. If it changes an API, the API docs should be updated.
Make it a habit. Make it non-negotiable.
Automate What You Can
Some documentation can be generated automatically:
- API documentation from OpenAPI specs
- Database schemas from migration files
- Dependency lists from package manifests
Use tools to generate this stuff. Don't maintain it manually.
For example, if you're using OpenAPI/Swagger, your API docs should be auto-generated from your spec. When the spec changes, the docs update automatically.
Same with README badges showing build status, test coverage, version numbers. Automate all of it.
Tools and Automation for Developer Docs
Let me share some tools and approaches that actually work.
For Code Documentation
- JSDoc, Javadoc, RustDoc, etc.: Generate API docs from your code comments
- Swagger/OpenAPI: Auto-generate and host API documentation
- Docusaurus: Build documentation websites from Markdown
For Process Documentation
Here's where I'm biased: I built Glitter AI specifically for this.
Instead of writing deployment docs manually, I just record my screen while doing a deployment and talking through it. Glitter turns that into step-by-step documentation automatically.
No more "I'll write the docs later" (which means never). Just do the thing once, record yourself, and you've got documentation.
But honestly, even if you don't use Glitter, just use Loom or OBS and record yourself. Put the video somewhere accessible. It's better than nothing.
For Runbooks
Store runbooks in your repo as Markdown files. Use a standard template so they're consistent.
Some teams use PagerDuty or similar tools for runbooks. That's fine. Just make sure they're accessible when things are on fire.
Don't lock them behind a login that nobody can access at 2 AM.
For Diagrams
- Mermaid: Write diagrams in text, render them automatically
- PlantUML: Similar idea
- Excalidraw: Quick sketches that don't look terrible
The key is: don't use tools that make diagrams hard to update. If updating a diagram requires opening Visio or some proprietary tool, it won't get updated.
Text-based diagrams (like Mermaid) that live in version control are much more likely to stay current.
Documentation as Code: The Only Approach That Works
I mentioned this earlier, but it's worth expanding on.
Documentation as code means:
- Docs live in version control (usually Git)
- Docs are written in plain text (usually Markdown)
- Docs are reviewed like code (pull requests)
- Docs are versioned like code (tags, branches)
- Docs are deployed like code (CI/CD)
This approach works because it makes documentation a first-class citizen. It's not an afterthought living in some random Google Doc. It's right there with your code.
How to Implement Documentation as Code
- Create a
/docsfolder in your repo - Write everything in Markdown
- Link to docs from your README
- Review doc changes in PRs
- Use a static site generator if you want to host docs (Docusaurus, Jekyll, Hugo, etc.)
Start simple. You don't need a fancy documentation site. A few well-organized Markdown files in a /docs folder is 100x better than what most teams have.
Make Documentation a Deployment Requirement
This is the nuclear option, but it works: don't let PRs merge unless docs are updated.
You can enforce this with:
- PR templates that have a "documentation updated" checklist
- CI checks that fail if certain files changed without corresponding doc updates
- Code review culture that blocks PRs without doc updates
I've found the cultural approach works better than automation. Just make it a norm on your team.
What to Document (And What to Skip)
You can't document everything. Don't try.
Document This:
- How to set up local development
- How to deploy
- How to debug common issues
- Critical architecture decisions
- Non-obvious "gotchas"
- Emergency runbooks
Don't Document This:
- Obvious code that's self-explanatory
- Implementation details that might change
- Anything you can generate automatically
- Every possible edge case
The goal is not comprehensive documentation. The goal is useful documentation.
Ask yourself: "Will someone need this information to do their job effectively?"
If yes, document it. If no, skip it.
Making Documentation Part of Your Culture
The biggest challenge isn't writing docs. It's making it a habit.
Here's what worked for me:
Lead by Example
If you're a tech lead or senior engineer, document your own work. Don't ask others to do what you won't do.
When you fix something, document the fix. When you deploy something, document the deployment. When you make a decision, write an ADR.
Your team will follow your lead.
Celebrate Good Documentation
When someone writes really good docs, acknowledge it. Same way you'd acknowledge good code.
"Great README on this PR" should be as common as "Clean implementation."
Make documentation visible. Share good examples. Show people what excellent looks like.
Make It Easy
If documenting something takes 30 minutes of fighting with tools, nobody will do it.
Make it as easy as possible:
- Use simple tools (Markdown, Git)
- Provide templates
- Remove friction
At Glitter, we literally built a product to make this easier because the existing tools sucked. You might not need to build a product, but you should remove as many obstacles as possible.
Real-World Example: How I Document a New Feature
Let me walk you through how I actually document something.
Let's say I just built a new API endpoint for uploading files.
1. While I'm Building
I write the API documentation as I go. I use OpenAPI/Swagger annotations right in my code. This generates the API docs automatically.
2. When I'm Testing
I screen record myself testing the endpoint. I talk through what I'm doing, what response I expect, what could go wrong.
This takes maybe 5 extra minutes. I use Glitter to turn this into documentation, but you could just keep the video.
3. Before I Submit the PR
I update the README if needed. If this is a major feature, I might add a page to our docs site.
I also check: does this change affect deployment? Onboarding? Operations? If yes, I update those docs too.
4. In the PR
The PR includes both code changes and documentation changes. My reviewer checks both.
5. After Merging
If this is a breaking change or major feature, I share it with the team. I link to the documentation.
Total time spent on documentation? Maybe 15-20 minutes. Total time saved when someone else needs to use this endpoint? Hours.
Final Thoughts: Documentation Is a Compiler for Human Brains
Here's how I think about it: code compiles computer instructions. Documentation compiles human instructions.
Without documentation, every person who needs to do something has to reverse-engineer how to do it. That's inefficient. It's like compiling the same code over and over instead of caching the result.
Good documentation means you compile once (write it down) and everyone else can just execute (read and follow).
Is it perfect? No. Docs get stale. But stale documentation is better than no documentation, and maintained documentation is better than stale documentation.
Start small. Pick one thing to document this week. Maybe it's your deployment process. Maybe it's your local setup. Maybe it's how to debug that one weird issue that keeps happening.
Write it down. Put it in version control. Share it with your team.
Then next week, do it again.
Eventually, you'll have documentation that actually helps people. And you'll spend less time answering the same questions over and over.
Trust me, your future self (and your team) will thank you.
Frequently Asked Questions
What's the best way to document software processes?
The best approach is documentation as code: store docs in version control next to your code, write them in Markdown, and update them as part of your normal development workflow. This keeps docs in sync with code and makes them easier to maintain over time.
How do I keep documentation from getting outdated?
Make documentation part of your code review process. When code changes, require documentation updates in the same PR. Store docs in version control and treat them like code. Automate what you can (API docs, schemas) and make updating docs a non-negotiable part of shipping features.
What's the difference between code documentation and process documentation?
Code documentation explains what the code does and why it's implemented a certain way (comments, docstrings, API docs). Process documentation explains how humans work with the code (setup guides, deployment procedures, runbooks). Both are important, but process documentation is often more valuable for team efficiency.
What tools should I use for developer documentation?
For code docs: JSDoc, Swagger/OpenAPI, or language-specific tools. For process docs: Markdown files in version control, static site generators like Docusaurus, and screen recording tools for visual documentation. Keep it simple and use tools that integrate with your existing workflow.
How much documentation is enough?
Document anything someone would need to know to do their job effectively: local setup, deployment, debugging common issues, architecture decisions, and emergency procedures. Skip obvious code, implementation details that change frequently, and anything you can auto-generate. Focus on useful over comprehensive.
Why do developers hate writing documentation?
Because it's boring, takes time away from building, gets outdated quickly, and often feels like nobody reads it anyway. The solution is to make documentation easier (use simple tools), keep it in sync with code (documentation as code), and prove its value by reducing repeated questions.
What should be in a software runbook?
A runbook should cover what to do when things go wrong: signs of problems, what to check first, how to roll back deployments, who to notify, and what NOT to do. Write runbooks when things are calm, not during an outage. Store them somewhere accessible 24/7.
How can I make my team actually maintain documentation?
Lead by example, make it part of code review, celebrate good documentation, and remove friction by using simple tools. Make documentation updates a requirement for merging PRs. The key is making it a cultural norm, not just a policy.
Stop Writing Docs Manually—Record Your Screen Instead