The worst documentation -- typical of virtually all consumer devices and software -- simply runs through menus (or commands, funtions, features, etc.) and repeats to you, often in the same words, menu options, without telling
how or
why or
when features apply. Very frequently units are omitted as well.
"The frobinator txl parameter sets the frobinator txl". What is the frobinator? What is the TXL? What are the units? Seconds, tenths, mills, nano, minutes, hours, days?
Good docs:
- Explain why and not just what or how.
- Give an overview of the tool or system. Technology is a means to an end. Describe the ends and the means.
- Describes the components. What are the parts of the system? How do they relate to one another, and the problem domains?
- For quantities, specify units. Integer, float, signed, degree, etc. Physical units if appropriate.
- Give a quick-start guide. If I just want to get up-and-running, what do I need?
- Give a detailed walkthrough of getting up and running. What parts and steps are needed? What prerequisites are required before starting?
- Intended audience.
- Operating parameters. Minimum requirements. Maximum capacity. SLAs if appropriate. Service tiers, if appropriate.
- Practical examples and recipes. Unix Power Tools by O'Reilly & Associates is nearly a quarter century old, but remains an excellent book for getting "over the hump" in understanding the 'Nix commandline environment. Interestingly, its GUI companion, X11 Power Tools was vastly less suited.
- Task-and-domain oriented, rather than component-and-function oriented. We have problems, and apply tools to them. Very few people pick up a tool and look for a problem that fits it (at least to a first order). Evi Nemeth's Unix Administration books are excellent in this regard.
- Examples. Useful recipies (as noted above).
- Danger zones. Places to watch out for.
- External references. No, you don't need to include Yet Another Bash Programming guide, or yet another <your language here> guide. Refer to a good third-party reference. Even if your company / publisher didn't produce it (O'Reilly used to be really good at this).
- Differentiate between basic, advanced, and debug modes. Most technologies have basic operators, advanced operators, maintenance, construction, and architect roles associated with them, in rough order. (Some might argue that mainenance is harder than construction and architecture.) Basic operators need the least information and access, architects and integrators need more.
- Distinguish internal and external interfaces. These generally fit different roles.
- Performance tuning, if appropriate.
Regards mgt. wanting stuff up-and-running and people being impatient: those are bad signs of high technical debt. That gets repaid one way or another, and it's usually not pretty.