Key Design Decision Documents help record important thought processes for communicating with future team members.
When I suggested writing a blog about Key Design Decision documents my fellow architects were initially unimpressed. “Surely EVERYONE knows about KDDs”.
That has not been my experience. I think they are a very useful tool for communicating some high level concepts between senior management (including product owners and project managers) and the engineers on the ground making a system work. A quick discussion may be fine for everyone currently on the project and all the stake holders. However, anyone who joins the project later on may not understand why the design is the way it is and may diverge from that design without even realising it. At best this may result in wasted work. At worst this may result in conflicting systems.
I am thinking of technological decisions but that is not always the case for every project.
KDDs are now one of the first documents I create when joining any project, even if I was not the one to make the decisions. It helps to document my understanding of what is going on and if nothing else prompts discussion
The Agile software development methodology tries to avoid any unnecessary documentation tasks. It calls unnecessary processes “smells” but this is anything but smelly.
Format and content
So what is the format of a Key Design Decision? It turns out there is no universal format, and it almost doesn’t matter what you choose. You could put everything in one document, or have separate files or directories for each decision. It depends on how much detail is appropriate. I would suggest that you might spend more time on the contentious decisions rather than treating it as a text box exercise. Here are some of the things you might want to include:
- A simple sentence describing the decision to act as a human readable name.
- A unique identifying number. That is always wise so that it can be referenced easily elsewhere. (That hints at a spreadsheet or database rather than Word docs, but doing it manually will be fine)
- More explanation of the decision made
- The reason for the decision made
- A date the decision was made
- Who made the decision
- The problem or question that the decision is meant to answer
- The alternatives that were considered and why they were rejected
- The risk if your decision is wrong
- The effort required to change the decision later on
- The implications of the decision
Templates
A swift google search reveals a bunch of possible templates for free. I would not worry about getting the most perfect template. Figure out what will actually get used by your team.
- This one may suit software developers most of all and is aimed at those who write their docs with Markdown: https://gist.github.com/FaKeller/2f9c63b6e1d436abb7358b68bf396f57
- This one is more for people who like to write in Word, and is a bit more wordy as a result: https://modernservantleader.com/resource-files/decision-document-template.pdf
- If like me you believe wikis should document everything and also like me you like Atlassian’s Confluence then you can look at this template from them: https://www.atlassian.com/software/confluence/templates/decision It is probably the least work to use this if you already use Confluence. You can of course create similar templates for other wiki systems.
- Unified Architecture Method: http://www.unified-am.com/UAM/UAM/guidances/templates/uam_architectural_decision_A2190D71.html
Conclusion
So KDDs are pretty simple documents and they don’t have to be created by an architect. Any project manager or senior software engineer can start them, and could also keep them up to date. There are lots of benefits if you are working in a team.
References
For more reading these articles talk about Key Design Decisions, though they are often called Architectural Design Decisions.
- https://www.fabian-keller.de/blog/documenting-architecture-decisions/
- https://personal.utdallas.edu/~chung/SA/zz-Impreso-architecture_decisions-tyree-05.pdf
- https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions
Photo of a signpost from Hadyn Cutler on Unsplash