<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>HanLHo. - Fractional Architect &amp; Software Product Engineer - adr</title>
    <link rel="self" type="application/atom+xml" href="https://hanlho.com/tags/adr/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://hanlho.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-09-02T00:00:00+00:00</updated>
    <id>https://hanlho.com/tags/adr/atom.xml</id>
    <entry xml:lang="en">
        <title>Grounded decision records from AI conversations</title>
        <published>2025-09-02T00:00:00+00:00</published>
        <updated>2025-09-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://hanlho.com/p/grounded-decision-records-from-ai-conversations/"/>
        <id>https://hanlho.com/p/grounded-decision-records-from-ai-conversations/</id>
        
        <content type="html" xml:base="https://hanlho.com/p/grounded-decision-records-from-ai-conversations/">&lt;p&gt;If you&#x27;ve read some of my posts before or worked with me, you know I like using Architectural Decision Records (ADRs) &lt;a href=&quot;&#x2F;p&#x2F;less-mentioned-benefits-of-architecture-decision-records&#x2F;&quot;&gt;for lots of reasons&lt;&#x2F;a&gt;. To me the most important one is documenting the why of a decision.&lt;&#x2F;p&gt;
&lt;p&gt;If you&#x27;ve worked with AI models before, you&#x27;ve probably asked them for options when brainstorming solution ideas when you&#x27;re not sure about direction. In this situation, I&#x27;ve found it quite easy, maybe even more logical, to document the decision in a decision record with help from the AI model you have been working with. After all, you got feedback from it anyway.&lt;&#x2F;p&gt;
&lt;p&gt;This post briefly explains how I use Claude Code to write decision records (not necessarily architectural ones) when it&#x27;s helped me make a decision. My goal isn&#x27;t to dive into an elaborate investigation into the pros and cons of this approach, but I will touch upon a few points. The process is not specific to Claude Code but can be adapted to other AI models or tools as well.&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s the process I&#x27;ve been following:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;1. Ask for the decision record during the conversation&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;After going back and forth on options and reaching a decision, I ask something like:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#eff1f5;color:#4f5b66;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Given&lt;&#x2F;span&gt;&lt;span&gt; your feedback, I think Option 2 is the way I want to implement.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Principally&lt;&#x2F;span&gt;&lt;span&gt; I do not want to complicate things with 2 tools at the moment.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Before&lt;&#x2F;span&gt;&lt;span&gt; implementing, summarise this into an ADR in the &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;adr&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; directory as a way of confirming our mutual understanding.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;So,&lt;&#x2F;span&gt;&lt;span&gt; write an ADR first, then ask me to confirm the ADR. Once I do, continue implementing.
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The phrasing is a bit sloppy, as this is what I actually wrote in my recent changes, but that&#x27;s OK, Claude Code can work with this.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;2. Review and edit the generated draft&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;What it comes up with initially is actually pretty good. A lot will depend on the conversation you had with it and the input you gave it, of course. But the decision record mostly contains what was discussed and decided quite well. The text will be structured like an ADR even without me having to explain what an ADR is. It even picked up the decision record&#x27;s next number too.&lt;&#x2F;p&gt;
&lt;p&gt;Usually content editing is needed, but having a complete draft to start with makes a big difference instead of starting from a blank page. So after the draft is written, I edit it mostly on content only.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;3. Use as implementation foundation&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;When done, the decision is basically documented and it can serve as the basis of our next step. To make the continuation based on the decision record only, at this point you could clear or restart the Claude Code session to start fresh.&lt;&#x2F;p&gt;
&lt;p&gt;This last step is meant to ground the decision record in reality. When you include the decision record as basis for implementation, it becomes living documentation that creates a feedback loop. During implementation you may encounter issues not anticipated during the decision making process. These can then be documented in the decision record, creating a continuous improvement cycle.&lt;&#x2F;p&gt;
&lt;p&gt;I often use my home projects as playgrounds to experiment with new ideas, technologies, and methodologies I want to try out because they&#x27;re new to me or because I want to confirm they&#x27;re still useful. This is why most of my home projects serve two purposes: build the thing and apply what I think are best practices.&lt;&#x2F;p&gt;
&lt;p&gt;In this particular project, I felt the need to create decision records. They aren&#x27;t necessarily architecture related decisions but more decisions I&#x27;d like to document to remember why I went this way. I mainly make use of the markdown format of ADRs to document my decisions.&lt;&#x2F;p&gt;
&lt;p&gt;Generally speaking, this is mostly an experiment at the moment. I&#x27;m trying this out in the setting of personal projects, but I think it may lower the bar for writing decision records in general. Not everyone wants to go to great lengths to record decisions, even if they see the value. Personally, I think it doesn&#x27;t need to take a lot of time to document a decision, yet I often end up spending much more time on it than I anticipated or hoped for when I started writing one.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;lhohan&#x2F;references&#x2F;blob&#x2F;main&#x2F;adr-example&#x2F;005-enhanced-notes-status-tracking-build-command.md&quot;&gt;Here&lt;&#x2F;a&gt; is a decision record example for those interested. It is written by an LLM mostly. I know this may be controversial, but it is also useful. I do not think this is &#x27;AI slop&#x27;, if you review it and it all makes sense, I don&#x27;t see much need for a complete rewrite. Having a documented decision is worth more than not documenting because it was written by AI. I haven&#x27;t tried this in a team or organisational setting, but I&#x27;m curious to see how it works out and how people would feel about it. In any case, whoever created the decision record with help of an AI is always responsible for the decision and its recording.&lt;&#x2F;p&gt;
&lt;p&gt;Also, &quot;working with an LLM replaces thinking&quot; is an often heard argument. I agree and it&#x27;s a reason for concern for me too, the impact on my own thinking. But an LLM also comes up with good ideas. It is easy and tempting to simply accept what&#x27;s there. Maybe not all decisions require deep thinking though, and we just want to note down why we&#x27;re doing the thing we&#x27;re doing this way.&lt;&#x2F;p&gt;
&lt;p&gt;I am also thinking it may be useful to add to the decision record to what extent an LLM was used to generate the content. Firstly it will get it out of the way when people are suspicious of AI being used and to what extent. I think this is comparable to time or other constraints one has when writing ADRs or decision records in general: this may be worthwhile to document too. Sometimes there is not enough time to think deeply about the decision or consider more options and you have to make a decision with quite some unknowns. In these cases I recommend documenting this in the decision record too.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, there are quite some interesting things that can be done next. When working with Claude Code, if you would create decision records more often it makes sense to create a command to use as &#x27;saved prompt&#x27;. I actually created an agent for this as well (to try out agents mostly, I admit).&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ve written about ADRs before, if you want to read more about them:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;p&#x2F;less-mentioned-benefits-of-architecture-decision-records&#x2F;&quot;&gt;Less Mentioned Benefits of Architecture Decision Records&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;p&#x2F;ground-your-adrs-with-a-verification-section&#x2F;&quot;&gt;Ground Your ADRs with a Verification Section&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Thank you for reading, Hans&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ground Your ADRs with a Verification Section</title>
        <published>2024-12-11T00:00:00+00:00</published>
        <updated>2024-12-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://hanlho.com/p/ground-your-adrs-with-a-verification-section/"/>
        <id>https://hanlho.com/p/ground-your-adrs-with-a-verification-section/</id>
        
        <content type="html" xml:base="https://hanlho.com/p/ground-your-adrs-with-a-verification-section/">&lt;p&gt;Making architectural decisions is one thing, but have you ever wondered how to make them more effective? Adding a Verification section to Architecture Decision Records (ADRs) can make the difference. This simple addition bridges the gap between theory and practice, making decisions actionable and measurable.&lt;&#x2F;p&gt;
&lt;p&gt;If you&#x27;re new to ADRs, check out &lt;a href=&quot;&#x2F;p&#x2F;less-mentioned-benefits-of-architecture-decision-records&#x2F;&quot;&gt;my post on their benefits&lt;&#x2F;a&gt; first.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;common-adr-challenges&quot;&gt;Common ADR Challenges&lt;&#x2F;h2&gt;
&lt;p&gt;Architecture Decision Records (ADRs) are a valuable tool for capturing architectural choices. However, they can suffer from the following weaknesses:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Decisions can be made, or become, detached from implementation&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Intent and success criteria remain vague or unmeasurable&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;These challenges can lead to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Architectural decisions that exist only on paper&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Difficulty in assessing whether decisions are being followed&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Missed opportunities for feedback and improvement&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;introducing-verification&quot;&gt;Introducing Verification&lt;&#x2F;h2&gt;
&lt;p&gt;Adding a &#x27;Verification&#x27; section to ADRs helps ground these decisions in reality and improve their quality. This section details how decisions will be evaluated or implemented, creating a clear path from decision to implementation.&lt;&#x2F;p&gt;
&lt;p&gt;Writing an ADR is often only the beginning, not the end. Establishing feedback loops helps to crystallise our decisions in actual implementation.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;grounding-architectural-decisions-in-reality&quot;&gt;Grounding Architectural Decisions in Reality&lt;&#x2F;h3&gt;
&lt;p&gt;It is a good idea to state goals in measurable and verifiable ways, and this applies equally to architecture and engineering. This is similar to writing requirements in parallel with the tests for these requirements. Or how writing code can put an analysis to the test. Each of these practices grounds our work in reality and provides feedback on our intentions.&lt;&#x2F;p&gt;
&lt;p&gt;Architecture decisions benefit from a similar grounding. Just as business analysts and developers can collaborate through behavioural tests, architects and developers can collaborate through verification criteria. More broadly, regardless of roles, the architecture function benefits from verification criteria. This creates反馈 loops that improve quality.&lt;&#x2F;p&gt;
&lt;p&gt;Importantly, verification works in both directions. Architecture and implementation connect and as such developers engage with the architecture and in return the architect receives feedback on what is working and what is not. When decisions aren&#x27;t being acted upon, it becomes visible, which is a sign to investigate why and adapt.&lt;&#x2F;p&gt;
&lt;p&gt;A key benefit of keeping verification in mind: ADRs become more actionable and effective.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;verification-approaches&quot;&gt;Verification Approaches&lt;&#x2F;h2&gt;
&lt;p&gt;You might think this adds substantial work to your process. Not necessarily so. Verification methods can range from simple to sophisticated. Different architectural decisions require different verification approaches. Or you may, to get started, decide to go for a very light-weight approach.&lt;&#x2F;p&gt;
&lt;p&gt;Choose an approach that matches your context and needs. Here are some options:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Ask questions: the simplest approach uses straightforward questions for self-assessment.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Automated tests &#x2F; fitness functions: integrate checks in your development pipeline, look for ways to assess architectural characteristics objectively.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Define metrics: what can you measure to determine if decisions are effective?&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Architecture Hoisting: the most comprehensive and strict approach, as described by George Fairbanks:&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Architecture hoisting is a stricter kind of architecture-focused design. When following an architecture hoisting approach, developers design the architecture with the intent of guaranteeing a goal or property of the system. Guarantees are difficult to come by in any kind of software design, but architecture hoisting strives to guarantee a goal or property through architecture choices. The idea is that once a goal or property has been hoisted into the architecture, developers should not need to write additional code to achieve it.&quot;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Let&#x27;s see some examples.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;simple&quot;&gt;Simple&lt;&#x2F;h3&gt;
&lt;p&gt;Suppose the recorded decision is to put all code in a mono-repo. Then the verification step could be as simple as:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#eff1f5;color:#4f5b66;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;## Verification
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Is your service in our mono-repo &amp;lt;include name&amp;gt;?
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This looks too easy right? In some cases it simply can be. Especially if your ADRs apply to multiple teams, and verification is not handled centrally, your verification tends to be more questions or check-based than actual steering towards an implementation.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;self-assessment&quot;&gt;Self-Assessment&lt;&#x2F;h3&gt;
&lt;p&gt;For another example, suppose your cross-team decision is to adopt Continuous Delivery:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#eff1f5;color:#4f5b66;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;## Verification
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;- Is the CI pipeline automated?
&lt;&#x2F;span&gt;&lt;span&gt;- Can you deploy to production without manual steps?
&lt;&#x2F;span&gt;&lt;span&gt;- If not, what manual gates are in place?
&lt;&#x2F;span&gt;&lt;span&gt;- Are feature flags used for in-progress work?
&lt;&#x2F;span&gt;&lt;span&gt;- Are branches short-lived?
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Note the self-assessment tone. This style can be adopted when architecture is an enabling and supporting function.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;automated&quot;&gt;Automated&lt;&#x2F;h3&gt;
&lt;p&gt;An example requiring effort but providing more guarantees to compliance:&lt;&#x2F;p&gt;
&lt;p&gt;Suppose we are all working in the previously mentioned mono-repo and discover that teams are not respecting service boundaries. We decide to establish naming conventions to be able to enforce no inappropriate, accidental dependencies are created. We could again simply ask a question in the Verification section if naming conventions are followed, but automating this checking is relatively easy, so we decide to automate this check.&lt;&#x2F;p&gt;
&lt;p&gt;Here we make compliance with our ADR automatic by hoisting the decision in our way of working.&lt;&#x2F;p&gt;
&lt;p&gt;The verification section in the initial ADR may then look like this:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#eff1f5;color:#4f5b66;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;## Verification
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;A dependency checker will be written and integrated in our build tooling for each service.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;- Are all of your services&amp;#39; build tooling integrated with the dependency checker?
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;**Roles and organizational structures can heavily influence the verification section. If you have, say, a Developer Experience Team they may likely work with the teams and makes sure this gets integrated in their CI-pipeline. Other times seniors in the teams may take this upon them. Ideally these responsibilities are made clear in the Verification section as well.&lt;&#x2F;p&gt;
&lt;p&gt;More examples of self-assessment questions can be found at &lt;a href=&quot;https:&#x2F;&#x2F;engineering-principles.jlp.engineering&#x2F;self-assessment&#x2F;&quot;&gt;John Lewis&#x27; Software Engineering Principles Self-Assessment&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;implementing-the-verification-section&quot;&gt;Implementing the Verification section&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;Verification&lt;&#x2F;code&gt; is my recommended term because of this definition:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!quote] &quot;VERIFY implies the establishing of correspondence of actual facts or details with those proposed or guessed at.&quot; (Merriam-Webster)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;However, depending on your environment a different name could be a pragmatic choice. &lt;code&gt;Compliance&lt;&#x2F;code&gt; often resonates better in regulated environments. I have used &#x27;Validation&#x27; before. While regularly validating or evaluating our decisions is good practice, here we are aiming to put a system in place to check if our decisions are implemented.&lt;&#x2F;p&gt;
&lt;p&gt;Here is an example of a &lt;code&gt;Verification&lt;&#x2F;code&gt; section you could include in your ADR template:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#eff1f5;color:#4f5b66;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;## Verification
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;How will we ensure compliance with this decision?
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Consider:
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;- Questions for self-assessment
&lt;&#x2F;span&gt;&lt;span&gt;- Specific metrics
&lt;&#x2F;span&gt;&lt;span&gt;- Verifications in the form of tests or fitness functions
&lt;&#x2F;span&gt;&lt;span&gt;- Implementation guidance
&lt;&#x2F;span&gt;&lt;span&gt;- Making it easy to adopt
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Based on this, a more extended example for a Continuous Delivery ADR:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#eff1f5;color:#4f5b66;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;## Verification
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Questions:
&lt;&#x2F;span&gt;&lt;span&gt;- Is the CI pipeline automated?
&lt;&#x2F;span&gt;&lt;span&gt;- Can you deploy to production without manual steps?
&lt;&#x2F;span&gt;&lt;span&gt;- Are feature flags used for in-progress work?
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Metrics:
&lt;&#x2F;span&gt;&lt;span&gt;- Deployment frequency (target: daily)
&lt;&#x2F;span&gt;&lt;span&gt;- Lead time for changes (target: &amp;lt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt; day)
&lt;&#x2F;span&gt;&lt;span&gt;- Change failure rate (target: &amp;lt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span&gt;%)
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Implementation:
&lt;&#x2F;span&gt;&lt;span&gt;- Teams must implement automated deployment, Delivery Platform Team will assist
&lt;&#x2F;span&gt;&lt;span&gt;- Regular metrics reporting (data can be collected manually)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;considerations&quot;&gt;Considerations&lt;&#x2F;h2&gt;
&lt;p&gt;Won&#x27;t adding this section complicate writing these ADRs? Well yes, there is another section to write and you need to think about how to make your ADRs more effective. Making them more effective and actionable is something you would want regardless, so the thinking part about this should not be skipped. Instead, incorporate verification thinking while writing the ADR: state decisions in measurable and verifiable ways.&lt;&#x2F;p&gt;
&lt;p&gt;Now if you ask me, is it better to have a record of &lt;em&gt;a&lt;&#x2F;em&gt; decision without this section than not having one at all? Then my answer would be yes. Don&#x27;t let perfection stop you from adopting or recording your decisions - use verification to improve them over time.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;Architecture benefits from being grounded in implementation. Adding a Verification section to your ADRs creates feedback loops and improves their quality.&lt;&#x2F;p&gt;
&lt;p&gt;The verification section serves as more than a checklist. It:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Connects architecture with implementation&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Provides a mechanism for feedback in both directions&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Reveals when decisions aren&#x27;t being acted upon&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Makes ADRs more actionable and effective&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This grounding helps prevent architectural decisions from remaining theoretical or becoming shelfware.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Less Mentioned Benefits of Architecture Decision Records</title>
        <published>2024-11-27T00:00:00+00:00</published>
        <updated>2024-11-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://hanlho.com/p/less-mentioned-benefits-of-architecture-decision-records/"/>
        <id>https://hanlho.com/p/less-mentioned-benefits-of-architecture-decision-records/</id>
        
        <content type="html" xml:base="https://hanlho.com/p/less-mentioned-benefits-of-architecture-decision-records/">&lt;p&gt;Teams adopt &lt;a href=&quot;https:&#x2F;&#x2F;adr.github.io&#x2F;adr-templates&#x2F;&quot;&gt;Architecture Decision Records&lt;&#x2F;a&gt; (ADRs) to document decisions, avoid revisiting settled matters, onboard newcomers, adapt to changing circumstances, and sharpen their thinking. However, there are several other valuable benefits that often go unnoticed.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;a-clear-decision-process&quot;&gt;A clear decision process&lt;&#x2F;h4&gt;
&lt;p&gt;The most basic of these: having a clear decision process beats having none at all.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;objective-evaluation&quot;&gt;Objective evaluation&lt;&#x2F;h4&gt;
&lt;p&gt;ADRs provide a framework to evaluate design choices objectively. Instead of getting caught in personal debates, we focus on documenting and analysing technical trade-offs together.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Developers on the same project will often disagree about design options. The disagreements can often be resolved, or at least reduced from a boil to a simmer, by exposing the decision making process. If the disagreement is simply that one developer thinks option A is better, and another thinks option B is better, it is hard to choose. When the rationale for each is expressed using the template, it may be clear that A helps usability, while B helps testability. This does not immediately resolve the disagreement, since both usability and testability are desirable, but now the question is which quality is a higher priority for the project. It casts the problem as an engineering or requirements decision, not as a judgment about who is the better designer, and can help take egos out of the dispute.&quot; (George Fairbanks, Just Enough Software Architecture)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;grounding-in-reality&quot;&gt;Grounding in reality&lt;&#x2F;h4&gt;
&lt;p&gt;Through ADRs, engineering roles could become more invested in architectural decisions, while architect roles stay connected with practical implementation realities. This grounds architectural decisions in practical reality, bridging vision and practice.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;preventing-paralysis&quot;&gt;Preventing paralysis&lt;&#x2F;h4&gt;
&lt;p&gt;When teams can&#x27;t trace why and by whom past decisions were made, decision paralysis could occur. ADRs overcome this by providing the documented context teams need to more confidently evolve their systems.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;efficiency&quot;&gt;Efficiency&lt;&#x2F;h4&gt;
&lt;p&gt;Capturing architectural decisions through ADRs requires minimal effort compared to the time and resources teams spend rediscovering or reconstructing the reasoning behind past choices. This investment in documentation prevents costly archaeological expeditions through old emails, meetings, and code.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;The cost of recording knowledge is small compared to the cost of acquiring knowledge.&quot; (Software Development Pearls, Karl Wiegers)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;further-reading&quot;&gt;Further Reading&lt;&#x2F;h4&gt;
&lt;p&gt;If you like to learn more about ADRs, here are some of my favorite online resources:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;adr.github.io&quot;&gt;The GitHub adr organization&lt;&#x2F;a&gt; provides additional motivation, tooling, and pointers to public documentation.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Olaf Zimmermann&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;ozimmer.ch&#x2F;index&#x2F;2020&#x2F;04&#x2F;15&#x2F;BlogHighlightsAndOutlook.html&quot;&gt;Architectural Decisions (ADs) and Software Architecture&lt;&#x2F;a&gt; offers insights into the practice.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
</feed>
