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: Introduction: Gentle introduction to main concepts Getting started: Installation: setup steps to install software Testing your setup: how to test your setup works as expecte...