Official Release v.1.0.1. Production-Ready. A.G. (c) 2017. All Rights Reserved.
Official Release v.2.0.1. Production-Ready. A.G. (c) 2023. All Rights Reserved.
- Tom de Lancey describes an approach on documentation:
- "(…) we do not want to waste time and effort in documenting something that we have not yet discovered how to do. We document as we discover. We document only what we actually DID, as opposed to what we thought we were going to do."
- Tom de Lancey, Emergent Documentation: One way that agile is very different from waterfall, 2013
Critical Points:
- The fundamental issue is communication, not documentation.
- Agilists write documentation if that's the best way to achieve the relevant goals, but there often proves to be better ways to achieve those goals than writing static documentation.
- Document stable things, not speculative things.
- Take an evolutionary approach to documentation development, seeking and then acting on feedback on a regular basis.
- Prefer executable work products such as customer tests and developer tests over static work products such as plain old documentation (POD).
- You should understand the total cost of ownership (TCO) for a document, and someone must explicitly choose to make that investment.
- Well-written documentation supports organizational memory effectively, but is a poor way to communicate during a project.
- Documentation should be concise: overviews/roadmaps are generally preferred over detailed documentation.
- With high quality source code and a test suite to back it up you need a lot less system documentation.
- Travel as light as you possibly can.
- Documentation should be just barely good enough.
- Comprehensive documentation does not ensure project success, in fact, it increases your chance of failure.
- Models are not necessarily documents, and documents are not necessarily models.
- Documentation is as much a part of the system as the source code.
- Your team's primary goal is to develop software, its secondary goal is to enable your next effort.
- The benefit of having documentation must be greater than the cost of creating and maintaining it.
- Developers rarely trust the documentation, particularly detailed documentation because it's usually out of sync with the code.
- Each system has its own unique documentation needs, one size does not fit all.
- Ask whether you NEED the documentation, not whether you want it.
- The investment in system documentation is a business decision, not a technical one.
- Create documentation only when you need it at the appropriate point in the life cycle.
- Update documentation only when it hurts.
Agile/Lean Documentation: Strategies for Agile Software Development
Best Practices for Increasing the Agility of Documentation
- Prefer executable specifications over static documents
- Document stable concepts, not speculative ideas
- Generate system documentation
- Keep documentation just simple enough, but not too simple
- Write the fewest documents with least overlap
- Put the information in the most appropriate place
- Display information publicly
- Document with a purpose
- Focus on the needs of the actual customers(s) of the document
- The customer determines sufficiency
- Iterate, iterate, iterate
- Find better ways to communicate
- Start with models you actually keep current
- Update only when it hurts
- Treat documentation like a requirement
- Require people to justify documentation requests
- Recognize that you need some documentation
- Get someone with writing experience
Agile/Lean Documentation: Strategies for Agile Software Development