Have used literate programming for a real-life freelance project a year ago. Am using it for both my private projects and current freelance projects.
The manual can be broken down into four parts or volumes depending on size:
I. User's Guide
II. User's Reference Manual
III. Maintainer's Guide
IV. Maintainer's Reference Manual
Don't get this wrong, updating the screenshots in the
User's Guide is annoying and a pain.
Over 60% of my time go into writing soft
documentation for the users.
This seems to be the best way to have hard evidence
of the gathered requirements.
It shows what the user actually faces.
The user stories write themselves.
This is the place to put assumptions and data-flow
requirements that the human being in front of the
tool has to know.
The customer last year loved it.Testing becomes easy. Just follow the pictures in the User's Guide. That's your checklist. In last year's project we immediatly found differences in using the application on iOS and Android, just because the customer was on iOS and could play around with everything immediatly [0]. The first working prototype was done in a week. Iteration was fast in a tight loop with the customer. Basically, live coding.
Source code, entity-relationship diagrams made with Dia diagram, data-flow diagrams and even some math typesetting go into the Maintainer's Guide. All those hairy assumptions forced upon you by third party libraries, external APIs, and external ABIs go in big fat red boxes. Ongoing maintenance check-lists, build steps, and deployment issues also live here.
LaTeX makes it look beautiful. It is, honestly, a joy to read and nice to look at. Just like with research papers decent pictures make it better.
The reference guides are basically lookup-tables. There can even be an index and a glossary.
The PDFs can even be stored in git(1). I know, I know, don't store binaries in git. But it archives the project well [1a,1b]. You already have the screenshots. You can pull old versions out. All the hidden footguns can be called out in the text.
"It is better to solve the right problem the wrong
way than the wrong problem the right way."
-- Richard Hamming as quoted by Doug McIlroy in
Eric Raymond's The Art of Unix Programming. [2]
[0] [James Hague: Documenting the Undocumentable](https://prog21.dadgum.com/161.html)[1a] [Archive Your Old Projects](https://arne.me/articles/archive-your-old-projects)
[1b] [Archive Your Old Projects (HN)](https://news.ycombinator.com/item?id=38239358)
[2] [Solving the right problem](https://www.catb.org/~esr/writings/taoup/html/ch01s04.html)