[HN Gopher] An engineer's tips for writing documentation devs love ___________________________________________________________________ An engineer's tips for writing documentation devs love Author : kiyanwang Score : 221 points Date : 2022-07-01 13:09 UTC (1 days ago) (HTM) web link (thenewstack.io) (TXT) w3m dump (thenewstack.io) | powersnail wrote: | Another point I want to add is, try to read your own writing from | the perspective of a reader. Readers are not yet familiar with | the technology. They don't have a mental model like you do. Don't | throw minute technical details or really abstract concept at your | reader. | | Somebody once described to me his note taking system as a | networks of pipelines of data input and data output. I'm sure it | means something in his mind, but it tells me nothing about his | note taking system. | | I highly recommend _The Sense of Style_ by Steven Pinker. It goes | into detail on how paragraphs and sentences are perceived by | readers. | hintymad wrote: | > "You'd be surprised how many people get turned off by seeing | something that other people tell them is simple, and then it's | not simple to them." | | This. This should be every platform/infrastructure engineer's | motto. Don't tell me _your DSL_ is simple. Don 't tell me that | Puppet is so simple because oh my god, it uses Ruby. Don't tell | me that HCL or terraform or whatever yaml crap is so simple | because "they are in yaml". No. They are not. | | Don't. Make. Me. Learn. It's not because I don't want to learn. | It's because I want to learn fundamentals instead of your | specific, non-generalizable, 6-month-or-less half-life stuff. | bsder wrote: | > Don't. Make. Me. Learn. It's not because I don't want to | learn. | | I disagree. I. Don't. Want. To. Learn. | | Almost nothing in between me and getting my problem solved is | interesting nowadays. Everything I have to learn is just | another yak I have to shave in between me and getting my | problem solved. This is doubly irritating when the yak is | _infrastructure_ (configuration systems, build systems, source | control systems, etc.) that has _zero_ bearing on my problem. | | Here was one: "We want to add audio to our phone app." GROAN. | | App is in Flutter on Android which implies: | | 1) Flutter | | 2) Dart | | 3) Gradle (dear God, help me) | | 4) Groovy | | 5) Oboe (for sound on Android) implying | | 6) Android NDK | | 7) CMake (hey Satan, I'll take your help too) | | 8) C++ | | And I'm leaving out a bunch of stuff. And there will be even | more for iOS. | | _NONE_ if this is interesting to me. Only 2,5 and 8 are | directly applicable to my problem. Everything else is a tower | of garbage that I have to chop through with a machete in order | to get to the task that I actually want to solve. | | And, as I understand it, somehow the web and Javascript | universe is _worse_. | | So, no, I don't want to learn. | xorcist wrote: | While I understand the sentiment, I don't really get the | particulars. | | So, instead of learning Puppet or Terraform, you want to | implement one from scratch? | | I have that itch too, I also try to implement the basics of | something like git or Ansible in my own toy system when | learning it. But that's just to get some hang of why the tool | looks like it does. I'm still there to use the tool. | | That goes double if you're working with others. I totally get | the bit about wanting to learn fundamentals, but not the bit | how it turns you off some higher level tool. | g9yuayon wrote: | Not really. Use whatever technology that you know best, but | hide unnecessary complexity through the right tools. I'm not | sure about the OP, but I had extremely good experience when I | was in Netflix. A single engineer, Joe Sondow, created the | app Asgard. Using Asgard, I didn't need anyone to teach me | how to configure clusters or networking topologies. The app | got affordance, consistency, and constraints right, to the | point that at any point what I guessed was either right or | the only way to complete my tasks. Michael from the cloud | team created command-line tools for managing AMIs. They | exposed just _what_ one needs to achieve while hiding | anything about how things were done. As a result, I can still | remember how to use these tools, years after I left Netflix. | Similarly for doing service discovery, fault injection, load | balancing, autoscaling, predictive autoscaling, logging | events, publishing metrics, and the list can go on. | Everything in Netflix, at least when I was there, followed | the unspoken principle of making everything a non-event: zero | unnecessary mental load, maximum flexibility, maximum freedom | to engineers, and full transparency. Things just happened. | Tools were just in place. The tools could be primitive and | could lack of features, but the they did not get in my way | whatsoever. | dekhn wrote: | I wrote my own Ansible+terraform alternative and frankly, for | the limited use (demo of GCE launch, we could start over 1000 | raw vms and be doing large scale compute in minutes during | the live demo (unfortunately urs wasn't confident so we | pretaped that part). | | Ansible is not bad but tf is Terrible. Good idea, terrible | execution and evolution | remram wrote: | Also: if you have to tell me it's simple, rather than showing | me examples that make it apparent, I assume it's not. | wwalexander wrote: | I think it's fair for a project as a whole to describe itself | as "simple" as a statement of its goals (vs. e.g. "flexible", | "high-performance", "easy-to-use", and so on). | | For example, Suckless Software describes many of their Linux | applications as simple, and it's a fitting description that | also encodes the spartan nature of the projects compared to | their more commonly used counterparts. | | But outside of a README or GitHub project description, I | completely agree. Simplicity is the absence of complexity, | and will become in retrospect when users choose what you've | made because you made it simple enough to do so. | 411111111111111 wrote: | None of the technologies you've named could be considered " | _6-month-or-less half-life stuff._ " | | Puppet in particular is ancient by tech standards and is still | getting used to date. | hintymad wrote: | True. The shelf-life refers to how long one cares to remember | the technology. The unfortunate fact is that these techs are | so specific that I simply forget them weeks after I don't | have to use them any more. The entire Uber engineering team | had to endure the horror of writing hundreds of lines of oh- | my-god-it's-so-cool-dsl Puppet for simple deployment tasks | and waiting for on average 15 minutes before a change took | place. Guess how many people missed Puppet when it was ripped | off Uber's infra? Probably only the dude who thought Puppet | and Graphite were the best systems in the world. And guess | how learning the intricacies of Puppet helped anyone's career | or ability to build better systems down the road? The answer | is zero and zero. | henrydark wrote: | They're being used, but less for new projects | [deleted] | [deleted] | WalterBright wrote: | My sophomore calculus Prof, whenever he'd introduce a new | concept he'd say "ees treeveeal!" It was a such a trademark | that the students would keep a log in their notes of every "ees | treeveeal!". (Of course, the joke was none of it was trivial.) | | One day, he remarked that this new concept "ees non-treeveeal". | We knew we were in for it then! | | My jet engine Prof would lay out the boundary conditions of a | problem. Then, "Und now zat vee haff zee eekvayshuns, vee | merely turn zee krank!" | | What can I say. I enjoyed those classes very much. | AlchemistCamp wrote: | Digital Ocean has, bar-none, my favorite dev docs on the | internet. | 8ytecoder wrote: | Stripe is pretty good as well | dotancohen wrote: | Stripe docs are useful to devs utilizing or integrating with | Stripe. Digital Ocean docs are far less focused on DO- | specific technologies, I often browse their documentation | even though I am using a competitor's cloud (AWS). | solardev wrote: | Yeah, it's amazing how often I ended up at DigitalOcean to | understand a competitor's architecture. | Brystephor wrote: | > Egger advises also writing out the full name the first time an | acronym is used. Egger even links acronyms to their definition at | the beginning or end of the document. | | When someone does not do this, it irritates me to no end. It's so | simple to do and is a major improvement. It goes from being a doc | that is incomprehensible without understanding unexplained to a | doc that beginners can begin to learn from. | ag408 wrote: | Super helpful Mason, thank you! | kojeovo wrote: | Thought it was kind of funny that the article mentioned "Writers | should value their readers' time -- and always try to get to the | point." yet failed to do so. I missed the tips skimming through. | Hit me with a TL;DR at the top... | Apocryphon wrote: | Not impressed by this article either, but it's more of a | summary of a presentation than a proper documentation. Though | yes, it does suffer from a meandering dialogue-driven faux- | journalist style and could really use bullet points at the top. | This piece contains good info but the style smacks of content | writing. | rojobuffalo wrote: | > the only thing worse than no documentation is incorrect | documentation. verify instructions work. | | i absolutely agree with the principle but i notice especially | with internal projects that it is often not lived up to. once- | valid docs become invalid over time. once you have the experience | of getting bad information from a documentation project it loses | credibility. readers ends up with extra work determining validity | and communicating when changes are needed. | | what does it look like when that problem is solved? i think of | StackOverflow and DigitalOcean. they both have comment sections | and date stamps. authors respond to comments. that's often how i | figure out if something is still valid or not. it seems important | that authors revisit or re-verify things they wrote. and if | that's not something that is rewarded then it's not likely to | happen. | onionisafruit wrote: | This worry causes me to write less documentation than I | probably should. I tend to see every line of documentation as a | liability because I need to track whether future changes | changes will make the doc out of date. | | I would love some kind of dependency chart that goes from code | to documentation where I can easily see what docs may need to | be updated when I change a function. | euroderf wrote: | > The only thing worse than no documentation is incorrect | documentation," he said. "Because no documentation means I go | somewhere else to look for it. Incorrect documentation wastes my | time." | | Basically: yes. Some here on HN will disagree, but they are IMO | wrong. Another big time-waster for users is failing to write a | document intro that identifies the target audience and the | document's target information goals; it sucks to get 30 pages | into the document before you finally manage to figure out that | it's not the document you want/need. | mmegger wrote: | Hey look, I made it to Hacker News. Neat :) Glad y'all enjoyed | the presentation and article | brody_hamer wrote: | I've definitely added 'digitalocean' to a search when I wasn't | finding documentation I loved. | | "MySQL replication setup"? Nope. | | "MySQL replication setup digitalocean"? Ahh that's better. | AtlasBarfed wrote: | Extracting the criteria about how to write good documentation out | of this article is ... wait, this article about good | documentation is itself bad documentation. Is that real irony? | | Listicles are pilloried, but for things like this they are good | practice. | | I'm really disappointed in most documentation recommendations. | I'll have to check out DO's docs. It would be nice to have a | comparison criteria to help show what different techniques and | structures work well. | | Unaddressed is one of the greatest long-term issues, I have to | deal with it all the time in cassandra and other fast-evolving | platforms: versioning documentation for the specific platform, | and SEO'ing it so newer documentation subsumes older docs in the | search indices. | solardev wrote: | I love this idea (for digitalocean) of "documentation as | marketing". Every time I read one of their articles, I feel like | "oh wow their engineers must really know what they're doing, to | be able to explain this so clearly". I didn't know they had a | team of professional editors... kudos! | | Another team that's really great at producing documentation is | the Cloudflare retrospectives/postmortems folks, who can very | clearly explain the cascading failures from complex systems. | | I wish more devs/engineers wrote like that! | edmundsauto wrote: | Editors are the key for any good writing. I've learned to | assume that all good writing has a good editor/editing process, | even if it's the author switching modes from creating to | editing. David Sedaris writes amazingly well, and he says his | "secret" is that every sentence has been edited and rewritten | 19-20 times before it makes it into a book. | | One of the reasons documentation sucks is because we expect | people to write well without editors. | WalterBright wrote: | > David Sedaris writes amazingly well, and he says his | "secret" is that every sentence has been edited and rewritten | 19-20 times before it makes it into a book. | | I used to know some US ballroom dance champions. You'd think | they'd spend their training time going over ephemera. Nope. | It was all about taking a step. They never stopped going over | how to take a step. It's the foundation for all dance. | | I love the ignorant phrase "they make it look effortless". | Well, it _is_ effortless when you 've done it 10,000 times. | spaetzleesser wrote: | A lot of businesses would be well advised to hire tech writers | who help with organizing, formatting and grammar. Engineers | should provide the rough content. From my experience that's done | pretty quickly but polishing the content and putting it into a | document management system take a lot of time and expertise that | engineers who also have development work deadlines don't have. | dotancohen wrote: | These tech writers should be following the steps and verifying | the engineers' rough content, not merely translating it for the | masses. | ulisesrmzroche wrote: | Nah, this article is poison. Downvote me all you want. | hahnbee wrote: | what makes you say that? | nathias wrote: | here is a simple trick to avoid writing bad documentation: don't | delegate it to superseniors working on the project for a long | time | sdoering wrote: | For those interested here is the original talk the article is | referring to: | | https://youtu.be/9WobKoE9OPI | 29athrowaway wrote: | 1. Linear reading: define things before talking about them. | | 2. Make documentation explicit, not implicit: no acronyms or | assuming context. | | 3. No marketing or self-promotion: your code is not fast, | efficient, reliable, convenient or secure because you say so. | | 4. No ego: nobody has time to read about you or a story from your | life. Keep that to your blog. | | 5. No humor: if it's 3 AM and you are debugging a problem, and | you are being forced to read lame jokes to understand what some | code does, you are going to get frustrated as hell. | | 6. Punctuation, grammar, orthography. | | 7. No aggression: Nobody has time to read rants as they're trying | to work on code. | | 8. Prefer simple English, leave local idioms and slang aside. | | 9. Conciseness. | jacobyoder wrote: | > your code is not fast, efficient, reliable, convenient or | secure because you say so. | | I often would be in meetings where tech folks would introduce | their code (to non-technical audiences sometimes) as 'tight' or | 'super fast' or... similar. It was cringey every time, and... | often wrong. Yay - you got a query down from 8 seconds to 2 | seconds. That's not really 'super fast' though - with a bit | more work (or experience) that would be 300ms or less (which I | eventually did with about 30 more min of rewrite and indexes). | ilrwbwrkhv wrote: | The memcached story | https://github.com/memcached/memcached/wiki/TutorialCachingS... | is still an iconic piece of dev writing for me. ___________________________________________________________________ (page generated 2022-07-02 23:00 UTC)