On explainability
An important aspect of maintaining software is our ability to explain exactly how and why it solves a problem. Consider this way of introducing a developer to a new piece of software:
“When you do Y, it’s a problem how to do X.
This software attempts to help with doing X by doing Z.
This works well because Z has the following advantages: a, b and c and some disadvantages: q, r, s.
If those trade-offs are appropriate for your domain consider using this piece of software.”
I consider this a Gold Standard for introduction to the point of a library or application. It explains why it exists, what it does and when to use it.
Following such an introduction, we need to offer a deeper dive into the software with the goal of making one fully proficient in using it. I propose the following setup for documenting each project:
I consider this a Gold Standard for introduction to the point of a library or application. It explains why it exists, what it does and when to use it.
Following such an introduction, we need to offer a deeper dive into the software with the goal of making one fully proficient in using it. I propose the following setup for documenting each project:
- Introduction: Gentle introduction to main concepts
- Getting started:
- Installation: setup steps to install software
- Testing your setup: how to test your setup works as expected
- User Guides: Guides for various common place uses of the library
- Advanced Usage: Guides and explanation for more advanced usage patterns.
- Cheat Sheet: Useful list of most used aspects, making it easier to find reference information.
- API Reference: Detailed docs of each software component
- Release Notes: History of releases and changes performed in each