In today's software development, teams are constantly making technological decisions—whether it's choosing a framework, designing an interface, or defining security mechanisms. These decisions are often crucial to the project’s future success, yet they are too rarely documented in a structured manner. This is exactly where Architecture Decision Records (ADR) come into play.
An ADR is a record of technological decisions that have significant implications for current and future project implementations. It focuses not only on the “what” of the decision, but also on the “why”—including the decision-making process and the individuals or roles involved.
ADRs create transparency, foster a shared understanding within the team, and help ensure that technical decisions remain understandable even months or years later. In this blog post, we’ll explore how ADRs work, why they’re so valuable, and how to use them effectively in day-to-day project work. To illustrate this, our Xperts have developed a concrete example.
When is it worthwhile to use ADRs?
Architecture Decision Records are particularly helpful when making decisions that have long-term implications for the architecture or team collaboration. Typical use cases include:
- Fundamental Technology Decisions
When fundamental technological decisions are made, the decision should be well documented.- Example: The decision to use React instead of Angular as the front-end framework, or the adoption of Kubernetes as the orchestration platform.
- Example: The decision to use React instead of Angular as the front-end framework, or the adoption of Kubernetes as the orchestration platform.
- Cross-team developments and interfaces
When making decisions that affect multiple teams, a shared understanding is essential—ADRs help foster this.- Example: A major feature, on which several teams are working, is being planned. Which team is implementing which part of the feature? What interfaces are needed for data transfer and the implementation of the technical processes?
- Example: A major feature, on which several teams are working, is being planned. Which team is implementing which part of the feature? What interfaces are needed for data transfer and the implementation of the technical processes?
- Establishment of Technical Standards and Conventions
Technical standards and conventions that apply throughout the project should be documented in a clear and transparent manner.- Example: Decision to develop an API based on OpenAPI, including code generation
- Example: Decision to develop an API based on OpenAPI, including code generation
- Lack of confidence within the team or lack of experience If there are differing opinions within the team or a lack of experience, an ADR provides structure to the decision-making process. It helps clarify uncertainties and incorporate external expertise.
- Example: A modern and secure authentication framework is intended to completely replace the outdated framework. It must support a wide range of use cases (authentication and authorization) that were often inadequately addressed by the old framework.
Structure of an ADR
1. Problem Description
The first step is to clearly define the problem. This forms the basis for all further considerations and should take into account both subject-matter and technical aspects.
Ideally, a complete problem statement should include:
- Business objectives (e.g., cost reduction, scalability, time to market)
- The technical requirements (e.g., performance, maintainability, security)
- Functional and Non-Functional Requirements
2. Identify Stakeholders
This is a step that is often underestimated—yet it is crucial to the quality and acceptance of the decision. Stakeholders should be involved early on to fully understand requirements, perspectives, and potential risks.
Advantages:
- The quality of the solution improves thanks to a broad range of specialized expertise.
- Acceptance increases when those affected are actively involved in the process.
3. Define the framework
The range of possible solutions is limited by technical and organizational constraints. These should be documented early on in order to develop realistic and feasible options.
Typical conditions include:
- Technical Specifications: e.g., mandated frameworks, existing systems, dependencies.
- Organizational restrictions: e.g., fixed schedules, limited resources, fixed team compositions.
4. Decision
At the end of every ADR is the documented decision—it is the heart of the document. After analyzing the options or validating a proposed solution, this section clearly states which course of action will be taken and why.
What should the decision section include?
- The selected option: described as specifically as possible (e.g., „Implementation of Tool X,“ „Retaining the existing architecture“)
- Reason: based on the comparison criteria, stakeholder input, and requirements
- (Optional) Rejected alternatives: If options A or B were discussed, this is the place to explain why other options were not chosen
- Date and Status: so that it is clear when and by whom the decision was made (e.g., „Decided on March 10, 2025 – Status: Accepted“)
This final section ensures accountability and transparency. It provides clarity not only for the team but also for everyone who will be dealing with the consequences of the decision at a later date.
A documented decision serves as a valuable reference, especially in the event of later changes or further project developments: Why was that decision made at the time? What alternatives were considered—and why weren’t they implemented? Sample ADR
1. Introduction and Objectives
1.1 Problem Statement
For the implementation of the „Energy Trading“ project, a modern and high-performance UI framework should be selected to develop a browser-based user interface. The UI should have a relatively low level of complexity in the MVP and reach a moderate level of complexity in later phases of development.
The UI communicates with the backend via a REST API. The MVP is expected to have 20 users, with up to 100 users anticipated in later phases. The UX requirements for the UI are within the normal business scope; however, the UI is designed to display the constantly changing energy prices available in the backend in near real time.
1.2 Quality Objectives
Implementation primarily by in-house developers, supplemented by freelancers:
Implementation is to be carried out primarily by the company's own staff. To balance out peak workloads and ensure that all necessary skills are covered, the company plans to use freelancers.
Real-time capabilities:
The UI should display and update information from the backend in real time even in the MVP. These real-time capabilities must be maintained throughout the remainder of the project, even as the complexity of the UI and the backend increases and the volume of data grows.
Modern UX, as expected in today's business environment:
The UX and UI should be functional, yet modern and up-to-date. It will be used by „expert users“ in a business environment.
2. Stakeholders
| Role | Contact | Motivation |
|---|---|---|
| Product Owner | Sarah | I want to deliver a high-quality project to the client within the agreed-upon timeframe. I want to work with a team of motivated developers and avoid too much effort in putting the team together. |
| Senior Angular Developer | Albert | Is convinced that the project can be implemented using Angular. Would like to represent the Angular perspective well, but currently has plenty on his plate (which is also true for the other Angular developers). |
| Senior React Developer | Tim | Is convinced that the project can be implemented using React. Wants to be a strong advocate for React and sees a need, in the medium term, for a new project for himself and the other React developers. |
| HR | Amrita | We want to ensure adequate staffing for the initial phase of 6–12 months and are also considering long-term support for 3–5 years. We want to have a good selection of freelancers on the market who specialize in the required technologies, should the need arise. |
Scope, no stakeholders
- Customer: The customer is relatively unconcerned about the technology; key interests are covered by the purchase order.
- Architects: We believe that Albert and Tim have sufficiently covered the key technical areas.
3. General Conditions
3.1 Technical
- Communication with the backend takes place via REST APIs
- Supported browsers: Chrome and Mozilla
- Use the company's internal Angular/React component library whenever possible
3.2 Organizational
- MVP Completion in 5 Months
- Timely implementation of two expansion phases following MVP success; duration of approximately 6 months each
- Development team (front-end only): 3 people, up to 4 during peak periods
4. Solution Strategy
4.1 Solution Options
During the iterative process, one developer suggested using Svelte. As a result, it was included in the ADR as a third option.
| Criterion | Angular | React | Svelte |
|---|---|---|---|
| Internal Human Resources | 8 Developers | 6 Developers | 2 Developers |
| External Staff | There are a lot of freelancers who know Angular | There are a lot of freelancers who know React | There are a few freelancers who know Svelte |
| Modern, appealing UX in a business setting | feasible | feasible | feasible |
| Real-time capabilities | Implementable (Socket.IO library, Observables) | Feasible (server-sent events, WebSockets) | Feasible (server-sent events, WebSockets) |
| Internal Staff Availability | Currently high capacity utilization; no change expected in the next 6 months | Currently, workload is moderate to high; 3 developers are expected to need a new project in 3–4 months | The Svelte developers are currently working on projects, but at least one person could step away from the project on four weeks' notice |
| Technological Innovation | Angular is well-established, but not really innovative | React is well-established, but not really innovative | Svelte has the steepest climb on the Overall Rating UI frameworks over the past two years. It is recommended that you build up your knowledge in this area. |
4.2 Decision
The project will be built using React. We have enough in-house developers, the freelance market is well-established, and all requirements can be reliably met.
Alternatives:
Angular was ruled out due to a lack of internal availability.
Svelte was discussed as an innovative option, but was not selected due to a lack of expertise and limited market readiness.
Outlook:
Two developers are expected to complete a Svelte training course of at least moderate depth (2–3 days) over the next 3–6 months.
Status:
Decided on March 10, 2025 – Status: Accepted
ADR Variants
In practice, various approaches to creating ADRs have become established. Our experts encounter two main variations:
Option A: Analyze and Compare Options
This approach is used when there are several realistic solutions. The goal is to make a well-informed decision based on defined requirements—both technical and economic.
Procedure:
- Realistic options are systematically gathered
- Each option is evaluated in terms of its advantages and disadvantages
- Comparison criteria are derived directly from the problem description and the framework conditions
- The results are often presented in tabular form
Special feature:
The decision-making process is iterative. Stakeholders contribute their perspectives and expertise to refine the options and enable an informed decision.
Option B: Focus on Feasibility (Proof-like Approach)
Some decisions involve such complex or novel issues that, at first, only one potential solution is worked out in detail. The goal is to subject this solution to a „community review“ in order to identify fundamental weaknesses or risks at an early stage.
Procedure:
- A promising solution is being developed in detail
- The focus is on technical feasibility
- Stakeholders evaluate the option specifically for deal-breaker criteria
- Improvements come from collaborative review, not from comparing with alternatives
Special feature:
If the option fails the review, an alternative solution must be developed—which can take additional time. That is why a structured review process is particularly important here.
Our Recommendations for the Process
1. Get started quickly & present early
- The initial presentation of the ADR can take place once the problem statement and an initial list of stakeholders are known. The session should not take more than 30–60 minutes.
2. Conduct the iterative phase in a focused and goal-oriented manner
- During the iterative phase, perspectives often broaden: new stakeholders, additional approaches to the problem, and further pros and cons come into play.
- This input is a key component of ADR—but it’s still worth paying attention to efficiency here.
- A maximum of three iterations, with one iteration per week, is a good guideline for bringing the ADR to a decision within a month.
Risks of ADR
Like any tool, an ADR also presents potential challenges. If the process is too lengthy or overly detailed, it can be perceived as bureaucratic and unnecessarily delay decisions. This makes a clear focus and a well-structured process all the more important.
IT Sonix Testimonials
In one of our major energy projects Energy Projects ADRs have now become standard practice. They help document technical innovations and solutions in a structured, transparent, and high-quality manner and facilitate team discussions. Most developers are regularly involved in reviews; some even create ADRs themselves. This leads to well-founded decisions that are traceable within the project and sustainable in the long term. The added value becomes particularly evident when onboarding new team members or making subsequent architectural decisions: the rationale behind technical decisions remains clear even months or years later.
Conclusion
ADRs are not an end in themselves, but rather an effective tool for documenting technical decisions in a transparent manner across teams. When used correctly, they promote quality, transparency, and strong decision-making in day-to-day project work—without unnecessarily slowing down the process. Even if getting started requires a bit of discipline, the long-term benefits for communication, maintainability, and collaboration are definitely worth the effort.