In software development, we make decisions at a rapid pace. These decisions, especially architecture decisions, have long-term consequences, yet are often made in a rush, undocumented, and without an effective process. The following Any Decision Record (ADR) introduces a robust approach to guide smart decision-making.
I've briefly mentioned ADRs before. They are great for maintaining transparency and intent by capturing the "who," "what," and "why" of decisions. Refer to the initial article for a deeper understanding of ADRs and their role in an autonomous architecture design framework.
I’ve set up an ADR Library to make it easier for everyone to adopt ADRs. This library of ADR templates can be used as a basis for your own decision records.
I will let the ADR below speak for itself on why a decision-making process is valuable and why to choose this one. Feel free to use this ADR as a template for adopting it with your team.
Below is the rendered version of the ADR. You can get the Markdown source for it and more in the ADR Library.
DACI for Decision-Making Process
Status: accepted
Driver: {who drives the decision}
Approvers: {who approves the decision}
Contributors: {whose input is sought (two-way communication)}
Informed: {who is kept up-to-date on progress (one-way communication)}
DACI for Decision-Making Process
Context and Problem Statement
Our team is continuously seeking ways to refine our decision-making processes. We believe clearer roles and responsibilities in this process will enhance efficiency, minimize misunderstandings, and foster collaboration.
Decision Drivers
Clarity of roles -- who is involved in making decisions and who is impacted.
Simple -- must be easy to explain and understand.
Considered Options
DACI
RACI
RAPID
Decision Outcome
We will adopt the DACI framework for our decision-making process. DACI stands for:
Driver: Person driving the project and responsible for the decision-making process. This person should understand the project and facilitate communication among stakeholders.
Approvers: Individual(s) with the final say. Typically, individuals in this role possess the authority to make decisions.
Contributors: Those providing valuable input to the decision. Contributors can be anyone with relevant information or expertise.
Informed: People who need to be aware of the decision once made. These could be team members impacted by the decision or other stakeholders.
At a minimum, we will apply DACI to:
Design Documents: To decide on the best design approach.
Any/Architectural Decision Records (ADRs): To drive decision-making for system-wide changes.
Pros and Cons of the Options
RACI
RACI stands for Responsible, Accountable, Consulted, and Informed. While it provides a similar structure to DACI, the difference in terms can sometimes lead to ambiguity, such as distinguishing between "Responsible" and "Accountable".
RAPID
RAPID stands for Recommend, Agree, Perform, Input, and Decide. This model emphasizes decision execution but can be overly complex, especially for smaller teams and less hierarchical organizations.
Consequences
Adopting DACI is expected to enhance our decision-making process, promoting clarity and efficiency. It requires a learning period and may necessitate adjustments in our workflows. Ultimately, it's anticipated to cultivate a more transparent and efficient environment.
More Information
Suggestions for Adoption
To migrate to DACI, we can:
Present: Conduct sessions to familiarize the team with DACI.
Implement Incrementally: Begin with one project and gradually expand its usage.
Regular Reviews: Schedule reviews to assess DACI effectiveness and make adjustments.
The Markdown source for this particular ADR is available here.