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. In addition to the obvious benefit, which is that good documentation saves everyone time, I find there are several additional benefits specific to the act of writing documentation:
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!
This is stupid. Most users are asking questions for one of these reasons:
If you work or play in technology at all, you have likely been in each of these scenarios. Put yourself in the user's shoes. In nearly every case a user asking a question is not an annoyance, it's an opportunity to do two things:
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.
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's a lot of potential things that can be going on in this person to cause them to take this view:
I think all of these are bull.
The last point brings up an important point - 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, I will double down and claim that competency in technical writing is part of being a well rounded and competent engineer.
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, so they don't. How many man hours are subsequently wasted by users who are forced to reverse engineer that system in order to use it? Probably a lot, right? Imagine if the engineer was rewarded for writing good documentation and did so. Yes, the engineer spent time writing documentation when they could have been doing technical work. But how many hours are now saved for other users?
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.
At work we have an internal service that has an HTTP API. Said API requires authentication. Yet, nobody has bothered to write down how you actually authenticate to this service. It's extremely simple, so simple you can explain it with just two lines of example shell code. But somehow 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:
This entire transaction is repeated countless times. Consider the alternative:
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.
Hitting these issues are also reasons why people form the opinion that docs are bad.
I have seen “docs” that go into excruciating detail. Sometimes, like in formal API specs in safety applications, this is necessary. But for many products it is not, and it will cause many problems: