<?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>Forem: Caleb Ariel</title>
    <description>The latest articles on Forem by Caleb Ariel (@ejakait).</description>
    <link>https://forem.com/ejakait</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%2F107450%2F81e9e40a-170c-4049-b1f8-3f2641dc7cdf.jpeg</url>
      <title>Forem: Caleb Ariel</title>
      <link>https://forem.com/ejakait</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ejakait"/>
    <language>en</language>
    <item>
      <title>The Power of the Paper Trail: Architecture Decision Records (ADRs)</title>
      <dc:creator>Caleb Ariel</dc:creator>
      <pubDate>Fri, 13 Feb 2026 07:56:00 +0000</pubDate>
      <link>https://forem.com/ejakait/the-power-of-the-paper-trail-architecture-decision-records-adrs-3e2d</link>
      <guid>https://forem.com/ejakait/the-power-of-the-paper-trail-architecture-decision-records-adrs-3e2d</guid>
      <description>&lt;p&gt;The ultimate output of knowledge work,in this case software architecture and engineering, is decision making. Regardless of what form it takes, recording the thought process of key decisions is an important part of maintaining clarity before, during and after decision are agreed upon, to help prevent hind-sight bias and to allow your future self and others, understand the environment in which the decisions were made. &lt;/p&gt;

&lt;p&gt;In this post I will be sharing what I have been learning about Architecture Decision Records their applications in software and data projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are ARDs anyway?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe5c6uomybamhvzpputoi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe5c6uomybamhvzpputoi.jpg" alt="What are ADRs" width="612" height="397"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Architecture Decision Records&lt;/strong&gt; are essentially a paper trail for &lt;strong&gt;significant&lt;/strong&gt; architectural decisions that you make in the lifecyle of a project. I will mostly refer to them as ADRs from now on.&lt;/p&gt;

&lt;p&gt;In my years as an software engineer and data engineer, I have scarcely, if at all come across this ADRs. Documentation has taken many forms in the projects I have been apart of; abandoned Notion pages, diagrams and sparsely detailed text files about what was going to be implemented or has already been implemented, or no documentation at all. When decison change, ADRs help track this by introducing states to these documents i.e Propose, Accepted, Rejected, Superseded&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you care?
&lt;/h2&gt;

&lt;p&gt;Architectural decisions are some of the most costly in any organization. They have impacts on how easy it will be to add features or how resilient and flexible the system will be to changing requirements of the business. Interrogating and justifying these decisions with a decent amount of rigour, within the required time-frame becomes that much more important. Not to mention the framework can be adopting to many other fields and types of decision processes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you know what to document?
&lt;/h2&gt;

&lt;p&gt;Not every decision warrants a paper trail; the administrative overhead would be a nightmare. Michael Nygard describes "architecturally significant" decisions as those affecting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structure and construction techniques.&lt;/li&gt;
&lt;li&gt;Non-functional characteristics, for example how it affects scalability or security.&lt;/li&gt;
&lt;li&gt;Dependencies and interfaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask yourself: &lt;em&gt;Is this decision reversible, and what is the cost of reversing it?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Olaf Zimmermann goes into great detail on this in his &lt;a href="https://ozimmer.ch/practices/2020/09/24/ASRTestECSADecisions.html" rel="noopener noreferrer"&gt;blog post&lt;/a&gt; about what criteria to use. regarding decision criteria &lt;/p&gt;

&lt;h2&gt;
  
  
  Lightweight ADRs: Setting Them Up
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9dxyojiqailz8sith7i.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9dxyojiqailz8sith7i.jpg" alt="Architectural Plans" width="612" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll be the first to hold up a cross to administrative overhead and because gaining initial velocity on the habit of documentation is hard enough, lightweight ADRs make for the best format to help reap the benefits of documenting your decision without dramatically affecting your workflow.There are even tools that help you manage ADRs, which you can find in this &lt;a href="https://github.com/npryce/adr-tools" rel="noopener noreferrer"&gt;gihub repo&lt;/a&gt; to help grease the wheels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvdq5v0kphr1ibuh8woz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvdq5v0kphr1ibuh8woz.gif" alt="Admin Overhead" width="220" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my projects, I simply add an &lt;code&gt;/adr&lt;/code&gt; folder consisting of one Markdown document per decision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ADR 001 - Postgres for Operational Database.md&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ADR 002 - Microservice Architecture for Orders Module.md&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I include diagrams directly in the folder and commit everything to source control. This allows the documentation to version-match the code. When a decision changes, I don’t edit the old ADR; I create a new one, mark the old one as Superseded, and link to the replacement.&lt;/p&gt;

&lt;h3&gt;
  
  
  The lifecycle of ADRs
&lt;/h3&gt;

&lt;p&gt;The lifecycle of these documents vary and are affected by team dynamics and roles and responsibilities of different stakeholder in the decision making process. There is always a main contact person or team responsible for communicating, publishing and maintaining these documents where maintenance is moving an adr from one state to the next.&lt;/p&gt;

&lt;p&gt;I have come to interprete the states as below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proposed&lt;/strong&gt;: The draft phase; getting stakeholders to poke holes in the logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accepted&lt;/strong&gt;: The green light; ensuring everyone is aligned on the path.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rejected&lt;/strong&gt;: Recording why we said "no" so we don't repeat the debate next year.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Superseded&lt;/strong&gt;: Signaling that a new ADR has taken its place, ensuring there is only one "source of truth."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;Documentation is a habit and one that is important especially with the changing landscape of tools and technologies that teams adopt. Though many of the organizational consideration that go into documentation frameworks haven't been touched on here, the rigour required to fill-in and socializing ADRs alone should help stave off some of the pitfalls that come with insufficient documentation and decision silos that are created as a result. Where ADRs live is just as important as writing them and it affects how they are versioned and maintained which is, in my opinion, the biggest battle with technical documentiation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/joelparkerhenderson/architecture-decision-record/tree/main" rel="noopener noreferrer"&gt;More on ARDs and Templates&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=rwfXkSjFhzc" rel="noopener noreferrer"&gt;Communicating and documenting architectural decisions - David Ayers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions" rel="noopener noreferrer"&gt;Documenting Architecture Decisions - Michael Nygard 2011&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>adr</category>
      <category>software</category>
      <category>architecture</category>
      <category>data</category>
    </item>
    <item>
      <title>I am a junior data engineer without a senior engineer. What should I do?</title>
      <dc:creator>Caleb Ariel</dc:creator>
      <pubDate>Mon, 30 Sep 2019 07:33:58 +0000</pubDate>
      <link>https://forem.com/ejakait/i-am-a-junior-data-engineer-without-a-senior-engineer-what-should-i-do-3cck</link>
      <guid>https://forem.com/ejakait/i-am-a-junior-data-engineer-without-a-senior-engineer-what-should-i-do-3cck</guid>
      <description>&lt;p&gt;I am working at a startup and i was promoted to a junior data engineer a couple of months ago. This is my first rodeo with most things data engineering, coming from a dev background. I feel like I have too many blind spots and no one to help cover them.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>dataengineering</category>
    </item>
  </channel>
</rss>
