<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: George Michalakis</title>
    <description>The latest articles on DEV Community by George Michalakis (@thegm26).</description>
    <link>https://dev.to/thegm26</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3823163%2Fad37f758-bf59-43eb-8bb7-537b099906ff.jpeg</url>
      <title>DEV Community: George Michalakis</title>
      <link>https://dev.to/thegm26</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thegm26"/>
    <language>en</language>
    <item>
      <title>Save yourself from Architectural Amnesia: ADRs</title>
      <dc:creator>George Michalakis</dc:creator>
      <pubDate>Sat, 14 Mar 2026 02:03:07 +0000</pubDate>
      <link>https://dev.to/thegm26/save-yourself-from-architectural-amnesia-adrs-506p</link>
      <guid>https://dev.to/thegm26/save-yourself-from-architectural-amnesia-adrs-506p</guid>
      <description>&lt;h2&gt;
  
  
  When you see it...
&lt;/h2&gt;

&lt;p&gt;From smaller teams to larger ones, from the senior SWE managing the entire backlog to EOs, POs, and SMs juggling overlapping responsibilities, I have often found myself in meetings or PR discussions nitpicking scope details and suddenly realizing one of two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I disagree with the broader implementation picture.&lt;/li&gt;
&lt;li&gt;I do not even remember whether I agreed with it in the first place.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That second one is worse.&lt;/p&gt;

&lt;p&gt;For context, I am working in a SAFe Scrum setup, so these roles and handoffs are a very real part of day-to-day delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Half-measures (Best-case scenario)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Uhh, there is a Confluence page about this decision. We had a meeting for that."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Clicks the link.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Scans a page with 10 comments&lt;/em&gt; (8 resolved, 2 still open).&lt;br&gt;&lt;br&gt;
OK, this makes a bit more sense now.&lt;/p&gt;

&lt;p&gt;Still, I do not remember what we said. I do not remember how long it took, and it probably took longer than it should have.&lt;/p&gt;

&lt;p&gt;Even in this best-case scenario, I am still left with two problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I do not remember the back-and-forth, and some of it was probably important.&lt;/li&gt;
&lt;li&gt;If I now have a different opinion, I really do not want to reopen the topic. That usually means more meetings, more pages, and more comments. Atlassian may be doing a great job with version control, but I do not want to be stuck restoring version 23 of a Confluence page that nobody will care about two weeks later.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Give credit where it is due
&lt;/h2&gt;

&lt;p&gt;That does not mean Confluence is useless.&lt;/p&gt;

&lt;p&gt;Architects, PMs, and business stakeholders need version control, comments, and discussions too. You cannot expect a product owner:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To log in to GitHub every time they want to sync with the architect on whether the team is migrating the DB.&lt;/li&gt;
&lt;li&gt;To align on the confidence level of PI objectives with different POs inside a pull request.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Confluence has its place.&lt;/p&gt;

&lt;p&gt;But at the same time, nobody wants to spend all of this just to discuss something like a new or existing PR label:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10 minutes to raise it during the daily stand-up&lt;/li&gt;
&lt;li&gt;5 minutes to schedule a call&lt;/li&gt;
&lt;li&gt;20 minutes to prepare a page explaining the current state and the proposal&lt;/li&gt;
&lt;li&gt;35 minutes for the meeting itself&lt;/li&gt;
&lt;li&gt;20 minutes for the notes afterward&lt;/li&gt;
&lt;li&gt;20 minutes updating the page with the latest comments and decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And yes, those numbers are completely realistic.&lt;/p&gt;
&lt;h2&gt;
  
  
  Architecture Decision Records
&lt;/h2&gt;

&lt;p&gt;This is where ADRs help.&lt;/p&gt;

&lt;p&gt;An ADR is a lightweight record of an important technical decision: why it was needed, what options were considered, what was chosen, and what tradeoffs came with that choice.&lt;/p&gt;

&lt;p&gt;At its simplest, it is just a markdown file living in your repo, somewhere like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docs/
  adrs/
    0001-use-topic-a.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is basically it.&lt;/p&gt;

&lt;p&gt;A small document, committed with the code, with sections such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Context: what problem are we trying to solve?&lt;/li&gt;
&lt;li&gt;Decision: what did we choose?&lt;/li&gt;
&lt;li&gt;Alternatives considered: what were the other realistic options?&lt;/li&gt;
&lt;li&gt;Consequences: what do we gain, and what do we give up?&lt;/li&gt;
&lt;li&gt;Status: proposed, accepted, superseded, deprecated&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nothing fancy. Just enough to preserve the reasoning behind a technical decision close to the codebase where engineers will actually look for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic rules
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Keep ADRs for technical topics that are likely to be searched while someone is working in the repo. If you used a specific pattern, tool, or extension, I would much rather &lt;code&gt;Ctrl+F&lt;/code&gt; the repo and find the reasoning in the docs than dig through a GitHub page or old meeting notes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make the person opening the PR the driver of the discussion. They should gather feedback, collect comments, help the team converge on a decision, and eventually merge or close the PR with the ADR alongside the change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not optimize for unanimous agreement. Optimize for a clear decision with explicit tradeoffs and enough context that the next person can understand why it happened.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the real value: not perfect documentation, but recorded reasoning close to the codebase.&lt;/p&gt;

&lt;p&gt;If you want a good collection of ADR templates, look &lt;a href="https://github.com/joelparkerhenderson/architecture-decision-record" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS1: Use this as a starting point for introducing ADRs to your team.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS2: An agent helped with syntax refactoring. The expressions, the main writing, the flow and the pain is mine :)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>adr</category>
      <category>documentation</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
