This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| documentation [2024/08/28 23:20] – created qlyoung | documentation [2026/02/12 17:05] (current) – [Tools] promote heading one level qlyoung | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | I strongly appreciate excellent technical | + | ====== |
| - | Because I appreciate good documentation for tools I use I do my best to write useful documentation. I find there are several benefits specific to the action | + | I strongly appreciate excellent technical documentation. You can have a great piece of software but if it's difficult to understand how to use it, at best users will fail to appreciate it and at worst huge amounts of time will be wasted and vast quantities of errors committed. |
| + | |||
| + | Because I appreciate good documentation for tools I use I do my best to write useful documentation. | ||
| * Writing about a subject cements, organizes and structures knowledge in my mind | * Writing about a subject cements, organizes and structures knowledge in my mind | ||
| Line 7: | Line 9: | ||
| * Collating and structuring information often reveals performance or security issues that I hadn't seen before | * Collating and structuring information often reveals performance or security issues that I hadn't seen before | ||
| * It improves my general writing skills, vocabulary and cognitive processes | * It improves my general writing skills, vocabulary and cognitive processes | ||
| - | |||
| - | Those are in addition to the obvious benefit, which is that good documentation saves everyone time. | ||
| A common pitfall I see is that people who write documentation turn very hostile towards users who ask questions covered by the documentation. I used to be this person. User asked a question? Oh HELL yeah, now I get to berate them for not reading the FUCKING MANUAL! | A common pitfall I see is that people who write documentation turn very hostile towards users who ask questions covered by the documentation. I used to be this person. User asked a question? Oh HELL yeah, now I get to berate them for not reading the FUCKING MANUAL! | ||
| Line 27: | Line 27: | ||
| - If we contribute a documentation fix in response to a user concern, it demonstrates to the user that the docs are actively maintained. This makes them more likely to use them. | - If we contribute a documentation fix in response to a user concern, it demonstrates to the user that the docs are actively maintained. This makes them more likely to use them. | ||
| - For users who do not believe in writing docs for their own things, it demonstrates by example why the docs are useful | - For users who do not believe in writing docs for their own things, it demonstrates by example why the docs are useful | ||
| - | |||
| Now, yes, there are the users who show up, ask questions, are referred to the documentation and become combative, refuse to read it, are insulting, etc. Documentation helps us in dealing with these users as well. If the information is well documented, you don't have to interact with them at all! Just refer them to the documentation and move on. You get to completely avoid interacting with toxic people. | Now, yes, there are the users who show up, ask questions, are referred to the documentation and become combative, refuse to read it, are insulting, etc. Documentation helps us in dealing with these users as well. If the information is well documented, you don't have to interact with them at all! Just refer them to the documentation and move on. You get to completely avoid interacting with toxic people. | ||
| + | |||
| + | ===== 'code is law' ===== | ||
| + | |||
| + | You probably know, or you may yourself be, a person who takes an attitude along the lines of "docs suck, code is law. [[just]] read the code lol." | ||
| + | |||
| + | There' | ||
| + | |||
| + | - They suck at writing and therefore don't want to do it. This is the case for many, many people. Writing good, clear documentation is not a natural skill for most. You need to develop it. | ||
| + | - They have an ego and it makes them feel superior to imply that you lack skilz because you can't efficiently comprehend an entire software package in an hour or two by simply reading the code. This is very common in junior engineers and people who are good at computers but lack well rounded social skills. | ||
| + | - They have been burned by out of date or poor documentation in the past and reacted to this by distilling the experience into the opinion "docs = bad" | ||
| + | - They know that documentation takes a lot of time and value either the experience or the result (or both) of technical work more, and therefore need a reason to argue against producing documentation if questioned | ||
| + | |||
| + | I think all of these are bull. | ||
| + | |||
| + | - If you suck at writing - this is an opportunity to get better | ||
| + | - If you feel the need to flex on people - grow up | ||
| + | - If you have been burned by documentation - who said you had to make bad docs? Be the change. | ||
| + | - If you want to write code - I feel for you. Don't you want people to use that code? | ||
| + | |||
| + | The last point is important - if you have zero interest or responsibility for anyone else to use what you're writing, by all means, do not write docs if you don't want to. I am not saying that you need to document everything you make. But for things you intend other people to use, writing docs will make them love you. If you do it professionally, | ||
| + | |||
| + | ===== culture ===== | ||
| + | |||
| + | In a professional context, company culture frequently does not incentivize documentation. Technical output is rewarded. Documentation output is not. This is extremely common, but it is bad for the organization as a whole. Suppose you commit an engineer to building out a complex system, but there are no cultural incentives for the engineer to write good documentation, | ||
| + | |||
| + | Of course, some teams are explicitly aware of that tradeoff. Externalizing cost to other teams means your team can be more productive - at the cost of the org. Dsyfunctional workplaces incentivize this behavior. | ||
| + | |||
| + | In extreme cases, this can result in the entire product being rebuilt by a different person or team because no one can understand how to use the first product. | ||
| + | |||
| + | There is a service I interact with that has an HTTP API. Said API requires authentication. This service is maintained by a team. Yet, nobody has bothered to write down how to authenticate to this service. It's extremely simple, so simple you can explain it with just two lines of example shell code. But nobody has taken the 2 minutes to locate an appropriate place to write that down, jot it down and provide a couple notes on it. | ||
| + | |||
| + | What are the consequences of this? Now every time someone wants to use that API: | ||
| + | |||
| + | - The user must locate an appropriate channel (email, slack, etc) to ask their question | ||
| + | - Ask their question and hope a knowledgeable person (KP) sees it | ||
| + | - Said KP must now explain how to do it - probably not for the first time (!) | ||
| + | |||
| + | This entire transaction is repeated countless times. Consider the alternative: | ||
| + | |||
| + | - User asks a question | ||
| + | - KP sees the question and instinctively reaches for the docs to give the user | ||
| + | - KP realizes there are no docs. KP spends 2 minutes creating a docs page, writes down the answer, gives it to the user. | ||
| + | |||
| + | Now the user has that docs page to share with anyone facing the same problem and KP can spend less time answering that question in the future. This saves everybody time and improves morale. | ||
| + | |||
| + | ===== tools ===== | ||
| + | |||
| + | I'm not going to talk about what docs tools I like here. Actually I am going to talk about the opposite. | ||
| + | |||
| + | Maxim: | ||
| + | |||
| + | < | ||
| + | |||
| + | Yep. You know how you get people to write docs? I can tell you that it is not by pointing them at a `docs/` directory with instructions to just make a PR. It is by making it as frictionless, | ||
| + | |||
| + | If I have to make a git commit to edit docs, the platform is DOA. If I cannot drag and drop a screenshot into the editor, the platform is DOA. If I have to learn a syntax to edit docs - even if it is Markdown - the platform is DOA. If it takes me more than 5 seconds or so to make an edit or add a screenshot or correct a typo, the platform is DOA. | ||
| + | |||
| + | I say this as someone who built https:// | ||
| + | |||
| + | - Know reStructuredText | ||
| + | - Make a git commit | ||
| + | - Submit a PR. | ||
| + | |||
| + | That's it. Each of these things individually adds so much friction that when you put them in front of someone who is anything less than passionate about documentation, | ||
| + | |||
| + | Now put this person in front of a webpage with an clearly visible " | ||
| + | |||
| + | Docs with low friction at least have a chance of tending towards becoming ground truth and references. Docs with high friction enter a self reinforcing cycle of decay. Nobody edits docs that are out of date. Nobody wants to polish a turd. But a fleck of dust on a beautiful object can motivate even the most depraved docs hater to brush it away. | ||
| + | |||
| + | ===== docs pitfalls ===== | ||
| + | |||
| + | Hitting these issues are also reasons why people form the opinion that docs are bad. | ||
| + | |||
| + | ==== the docs are too detailed ==== | ||
| + | |||
| + | I have seen " | ||
| + | |||
| + | * The docs will go out of date very rapidly | ||
| + | * Engineers will spend extreme amounts of time keeping docs up to date, impacting productivity and reducing morale (engineers enjoy building) | ||
| + | * Users will frequently encounter incorrect documentation, | ||
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International