-
Notifications
You must be signed in to change notification settings - Fork 0
new post: The Art of Explaining Hard Things Simply - technical docs w… #221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 2 commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,112 @@ | ||
| --- | ||
| title: 'The Art of Explaining Hard Things Simply' | ||
| slug: technical-docs-writing-guide | ||
| excerpt: >- | ||
| Documentation isn't about being clear. It's about empathy. Here's what I've learned about | ||
| helping people understand complex technical concepts without making them feel stupid. | ||
| date: '2026-04-01' | ||
| category: Writing | ||
| tags: | ||
| - Documentation | ||
| - Technical Writing | ||
| - Empathy | ||
| - Engineering | ||
| readingTime: 8 min read | ||
| featured: false | ||
| author: Sai Nimmagadda | ||
| --- | ||
|
|
||
|  | ||
|
|
||
| I used to think good documentation was about being concise. Remove the fluff, get to the point, right? | ||
|
|
||
| Turns out I've been thinking about it backwards for years. The best documentation isn't written at all — it's *empathized into existence*. You have to feel what it's like to not know something before you can explain it. | ||
|
|
||
| Here's what changed how I think about writing technical docs. | ||
|
|
||
| ## The Question That Started It | ||
|
|
||
| A few months ago I was struggling to explain something simple. I kept writing: | ||
|
|
||
| > First, install the dependency with npm install. Then configure your config file... | ||
|
|
||
| And people's eyes would glaze over. Not because they were dumb — because I was asking them to hold too many things in their head at once. | ||
|
|
||
| I started reading about cognitive load theory (yes, that's a real thing) and something clicked: **documentation is an exercise in empathy, not description.** | ||
|
|
||
| ## What Actually Depletes Cognitive Load | ||
|
|
||
| Your brain has a limited amount of processing power available at any moment. Think of it like RAM — you can only hold so many items before things start dropping. | ||
|
|
||
| Bad documentation fills up that RAM fast: | ||
|
|
||
| - Complex sentences that go on and on | ||
| - Learning multiple new concepts at once | ||
| - Abstract examples that don't connect to anything | ||
|
|
||
| Good documentation keeps more RAM free: | ||
|
|
||
| - Short sentences that let you feel smart | ||
| - One new idea at a time | ||
| - Concrete examples that make you feel powerful | ||
|
|
||
| ## The Curse of Knowledge | ||
|
|
||
| This is the hardest part: once you understand something, you forget what it felt like to not understand it. | ||
|
|
||
| TODO: change | ||
| I remember spending three hours figuring out why my API wasn't working. Turned out I was passing the wrong type to a function. Three hours. Now when I write "just cast to the right type," I sound like someone who's never been confused in their life. | ||
|
|
||
| The fix isn't to explain more. It's to remember your own confusion and write from there. | ||
|
|
||
| ## Problem First, Solution Second | ||
|
|
||
| Most documentation does this: | ||
|
|
||
| > "Use the config() function to configure your settings." | ||
|
|
||
| That's a solution looking for a problem. What settings? Why would I want to configure anything? | ||
|
|
||
| Try this instead: | ||
|
|
||
| > "If you need your API to behave differently in development versus production, use config() to set environment-specific values." | ||
|
|
||
| Now I understand why I'd ever want to use it. The solution has context. | ||
|
|
||
| ## Questions Are Vulnerabilities | ||
|
|
||
| Here's a weird trick: when you're writing, ask yourself "what would confuse me?" | ||
|
|
||
| Last week I wrote: | ||
|
|
||
| > "Initialize the client with your API key." | ||
|
|
||
| But I caught myself thinking: "wait, where do I get an API key? What format does it need to be in?" | ||
|
|
||
| So I added: | ||
|
|
||
| > "Get your API key from the dashboard under Settings → API Keys. It's a UUID format." | ||
|
|
||
| These questions aren't weaknesses in the documentation. They're the actual content. | ||
|
|
||
| ## The Dan Abramov Influence | ||
|
|
||
| I owe a lot of this thinking to reading Dan Abramov's blog (overreacted.io). His posts taught me that: | ||
|
|
||
| - It's okay to not know things for years | ||
| - The journey matters more than the destination | ||
| - Being confused is the first step to understanding | ||
|
|
||
| He writes as if he's figuring things out *with* you, not *at* you. That's the voice I want. | ||
|
|
||
| ## The Write-up-Don't-Read Ratio | ||
|
|
||
| Technical writing isn't about being right. It's about being in the trenches with your reader. | ||
|
|
||
| Next time you're writing docs, ask: "if I forgot everything about this topic, would this help me?" | ||
|
|
||
| If the answer is no, start over. Your future confused self will thank you. | ||
|
|
||
| --- | ||
|
|
||
| *Thanks for reading. If this resonated, I'd love to hear what confused you this week.* | ||
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The line
TODO: changeis currently part of the rendered MDX content, so every reader of this post will see an internal placeholder in production. This looks unintentional and degrades the published article quality; replacing or deleting it before publish would avoid shipping draft text.Useful? React with 👍 / 👎.