<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>ADR · Jared Lynskey</title>
    <link>https://jared.lynskey.co.nz/en/tags/adr/</link>
    <description>Short stories of value on software engineering and engineering leadership — performance reviews, hiring and scaling teams, CI/CD, DevOps monitoring and agentic AI. Written from Seoul.</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>© 2026 Jared Lynskey</copyright>
    <lastBuildDate>Sat, 24 Oct 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/en/tags/adr/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>What Is a Decision Document? A Practical Guide with Templates</title>
      <link>https://jared.lynskey.co.nz/en/posts/2024/2024-12-03-decision-docs/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/posts/2024/2024-12-03-decision-docs/</guid>
      <pubDate>Tue, 03 Dec 2024 00:00:00 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>decision-making</category>
      <category>documentation</category>
      <category>ADR</category>
      <category>architecture</category>
      <category>team alignment</category>
      <description>A decision document records a choice at the moment it&#39;s made: the context, the options considered, and why one won, so nobody re-argues it six months later. How to write ADRs and RFCs that actually get used, with an example ADR and a template to steal.</description>
      <content:encoded><![CDATA[<p>Every team makes decisions. Most teams forget why they made them. Six months later someone asks &ldquo;why did we choose PostgreSQL over MongoDB?&rdquo;, nobody remembers the constraints that applied at the time, and the whole debate happens again, usually with worse attendance.</p>
<p>Decision documents fix that. Call them ADRs, RFCs, or decision logs — the label doesn&rsquo;t matter. What matters is writing down the context, the options, and the reasoning at the moment of the choice. Running a dev team this year has made me appreciate them more than ever: they&rsquo;re the difference between institutional memory and institutional folklore.</p>
<hr>

<h3 class="relative group">Why they&rsquo;re worth the effort
    <div id="why-theyre-worth-the-effort" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-theyre-worth-the-effort" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The obvious payoff is not having the same argument twice. &ldquo;Didn&rsquo;t we already decide on the API versioning strategy?&rdquo; With a clear record of what was decided and why, settled issues stay settled and the team spends its energy on execution instead of retracing its steps.</p>
<p>The quieter payoff shows up over time. Projects run for months or years, people join and leave, and what survives is the code — which tells you <em>what</em> was decided but never <em>why</em>. A decision doc preserves the reasoning: the constraints that existed, the alternatives that were rejected, who made the call. New joiners get context instead of folklore. Cross-team decisions get real buy-in, because everyone can see the factors being weighed rather than just the verdict. And naming a decision-maker and contributors means follow-through has an actual owner.</p>
<hr>

<h3 class="relative group">When to write one
    <div id="when-to-write-one" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#when-to-write-one" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Not every decision deserves a document. I reach for one when the decision is:</p>
<ul>
<li><strong>Expensive to reverse</strong> — technology stack choices (frameworks, databases, cloud providers), architectural patterns (microservices vs. monolith, event-driven vs. request-response), third-party vendors, security and compliance approaches</li>
<li><strong>Long-lived</strong> — API contracts that external systems depend on, data models that span services, breaking changes to established patterns</li>
<li><strong>Cross-team</strong> — anything needing buy-in from multiple teams or non-technical stakeholders, resource allocation and prioritisation calls</li>
<li><strong>The outcome of a <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/" >spike</a></strong> — when a time-boxed investigation wraps up, capture the findings and the resulting decision before they evaporate</li>
</ul>
<p>Skip the formality for easily reversible decisions, team-internal implementation details, and anything with minimal impact outside your immediate scope. A document nobody needed is just homework.</p>
<hr>

<h3 class="relative group">The lifecycle
    <div id="the-lifecycle" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-lifecycle" aria-label="Anchor">#</a>
    </span>
    
</h3>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
</span></span><span class="line"><span class="cl">│   Draft     │ ──► │   Review    │ ──► │  Approved   │ ──► │ Implemented │
</span></span><span class="line"><span class="cl">│  Proposed   │     │  Feedback   │     │  Accepted   │     │  Completed  │
</span></span><span class="line"><span class="cl">└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
</span></span><span class="line"><span class="cl">                           │
</span></span><span class="line"><span class="cl">                           ▼
</span></span><span class="line"><span class="cl">                    ┌─────────────┐
</span></span><span class="line"><span class="cl">                    │  Rejected/  │
</span></span><span class="line"><span class="cl">                    │  Superseded │
</span></span><span class="line"><span class="cl">                    └─────────────┘</span></span></code></pre></div></div>
<p>The author drafts the problem and the candidate solutions. Stakeholders review — this is the phase that earns the whole exercise, because it&rsquo;s where assumptions get challenged and blind spots surface. A decision-maker (usually a tech lead, architect, or product owner) makes the final call, the team implements, and the doc gets updated if reality forced changes along the way. Some documents die in review; others get superseded later as circumstances change. Mark both clearly, because a stale &ldquo;accepted&rdquo; doc is a trap for whoever finds it next.</p>
<hr>

<h3 class="relative group">What makes one worth reading
    <div id="what-makes-one-worth-reading" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-makes-one-worth-reading" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Start with the problem, not your favourite solution. What are we solving, why does it matter now, and what happens if we do nothing? If people don&rsquo;t agree on the problem, debating solutions is theatre.</p>
<p>Then present real options — at least two or three, even when you have a strong preference. For each one: a brief description, pros and cons, a rough effort estimate (T-shirt sizing is fine: S/M/L/XL), and the risks with how you&rsquo;d mitigate them. Documenting the alternatives is how future readers understand why the winner won.</p>
<p>Name the trade-offs out loud. &ldquo;We&rsquo;re choosing speed-to-market over architectural purity.&rdquo; &ldquo;We&rsquo;re accepting increased operational complexity for better scalability.&rdquo; &ldquo;We&rsquo;re prioritising developer experience over raw performance.&rdquo; Sentences like these do more for a future reader than pages of analysis.</p>
<p>Ground the discussion in something concrete: code snippets showing how a solution would look, diagrams of the system interactions, links to proof-of-concept work from <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/" >spikes</a>. Abstract discussions produce abstract decisions.</p>
<p>Finally, give it a deadline — when the decision must be made, who owes input by when, and what&rsquo;s blocked while it drifts. Decisions without deadlines drift forever.</p>
<hr>

<h3 class="relative group">Example: Architecture Decision Record (ADR)
    <div id="example-architecture-decision-record-adr" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#example-architecture-decision-record-adr" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Here&rsquo;s a practical example of a decision document:</p>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gh"># ADR-001: API Authentication Strategy
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Status:**</span> Accepted
</span></span><span class="line"><span class="cl"><span class="gs">**Date:**</span> 2024-11-15
</span></span><span class="line"><span class="cl"><span class="gs">**Decision Maker:**</span> Sarah Chen (Platform Architect)
</span></span><span class="line"><span class="cl"><span class="gs">**Contributors:**</span> Backend Team, Security Team, Mobile Team
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Context
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Our public API currently uses API keys for authentication. As we expand to
</span></span><span class="line"><span class="cl">support third-party integrations and mobile apps, we need a more robust
</span></span><span class="line"><span class="cl">authentication mechanism that supports:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Token expiration and refresh
</span></span><span class="line"><span class="cl"><span class="k">-</span> Scoped permissions
</span></span><span class="line"><span class="cl"><span class="k">-</span> User-level authentication (not just service-level)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Decision
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">We will implement OAuth 2.0 with JWT tokens for API authentication.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Options Considered
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Option 1: OAuth 2.0 with JWT (Recommended)
</span></span></span><span class="line"><span class="cl">**Description:** Industry-standard protocol with self-contained tokens
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">| Pros | Cons |
</span></span><span class="line"><span class="cl">|------|------|
</span></span><span class="line"><span class="cl">| Industry standard, well-documented | More complex initial implementation |
</span></span><span class="line"><span class="cl">| Self-contained tokens reduce database lookups | Tokens cannot be revoked instantly |
</span></span><span class="line"><span class="cl">| Broad library support | Requires refresh token management |
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Effort:**</span> Medium (2-3 sprints)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Option 2: Session-based Authentication
</span></span></span><span class="line"><span class="cl">**Description:** Traditional server-side sessions with cookies
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">| Pros | Cons |
</span></span><span class="line"><span class="cl">|------|------|
</span></span><span class="line"><span class="cl">| Simple to implement | Not suitable for mobile apps |
</span></span><span class="line"><span class="cl">| Easy to revoke sessions | Requires sticky sessions or shared session store |
</span></span><span class="line"><span class="cl">| Familiar to most developers | Doesn&#39;t scale as well |
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Effort:**</span> Small (1 sprint)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Option 3: Custom Token System
</span></span></span><span class="line"><span class="cl">**Description:** Build our own token-based authentication
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">| Pros | Cons |
</span></span><span class="line"><span class="cl">|------|------|
</span></span><span class="line"><span class="cl">| Fully customizable | Reinventing the wheel |
</span></span><span class="line"><span class="cl">| No external dependencies | Security risks from custom implementation |
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Effort:**</span> Large (4+ sprints)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Consequences
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">-</span> Mobile team can implement standard OAuth flows
</span></span><span class="line"><span class="cl"><span class="k">-</span> We&#39;ll need to set up a token refresh mechanism
</span></span><span class="line"><span class="cl"><span class="k">-</span> API documentation will need updates for OAuth flows
</span></span><span class="line"><span class="cl"><span class="k">-</span> Existing API key users will need a migration path (6-month deprecation)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## References
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">-</span> [<span class="nt">OAuth 2.0 RFC 6749</span>](<span class="na">https://tools.ietf.org/html/rfc6749</span>)
</span></span><span class="line"><span class="cl"><span class="k">-</span> Internal spike document: [<span class="nt">Authentication Options Spike</span>](<span class="na">/spikes/auth-spike-2024</span>)
</span></span><span class="line"><span class="cl">- Security team review: SEC-2024-042</span></span></code></pre></div></div>
<hr>

<h3 class="relative group">A template to steal
    <div id="a-template-to-steal" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#a-template-to-steal" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Use this as a starting point and trim it to fit your team:</p>
<table>
	<thead>
			<tr>
					<th><strong>Attribute</strong></th>
					<th><strong>Details</strong></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Decision/Issue Name</strong></td>
					<td>[Clear, descriptive title]</td>
			</tr>
			<tr>
					<td><strong>Status</strong></td>
					<td>[Draft / In Review / Accepted / Rejected / Superseded]</td>
			</tr>
			<tr>
					<td><strong>Impact</strong></td>
					<td>[High / Medium / Low]</td>
			</tr>
			<tr>
					<td><strong>Owner</strong></td>
					<td>[Name of the person driving the decision]</td>
			</tr>
			<tr>
					<td><strong>Decision Maker</strong></td>
					<td>[Person with final authority]</td>
			</tr>
			<tr>
					<td><strong>Due Date</strong></td>
					<td>[Deadline for making the decision]</td>
			</tr>
	</tbody>
</table>

<h4 class="relative group">Problem Statement
    <div id="problem-statement" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#problem-statement" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><em>What problem are we solving? Why does it matter? What&rsquo;s the cost of inaction?</em></p>

<h4 class="relative group">Background
    <div id="background" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#background" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><em>Provide context, history, and any relevant details. Link to related documents, previous decisions, or spike results.</em></p>

<h4 class="relative group">Constraints
    <div id="constraints" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#constraints" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><em>What limitations or requirements must any solution respect?</em></p>
<ul>
<li>Budget constraints</li>
<li>Timeline requirements</li>
<li>Technical constraints (existing systems, skill sets)</li>
<li>Compliance or security requirements</li>
</ul>

<h4 class="relative group">Solutions Considered
    <div id="solutions-considered" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#solutions-considered" aria-label="Anchor">#</a>
    </span>
    
</h4>
<table>
	<thead>
			<tr>
					<th><strong>Option</strong></th>
					<th><strong>Description</strong></th>
					<th><strong>Pros</strong></th>
					<th><strong>Cons</strong></th>
					<th><strong>Effort</strong></th>
					<th><strong>Risk</strong></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Option 1</strong></td>
					<td><em>Description</em></td>
					<td><em>Pro A, Pro B</em></td>
					<td><em>Con A, Con B</em></td>
					<td><em>S/M/L/XL</em></td>
					<td><em>Low/Med/High</em></td>
			</tr>
			<tr>
					<td><strong>Option 2</strong></td>
					<td><em>Description</em></td>
					<td><em>Pro A, Pro B</em></td>
					<td><em>Con A, Con B</em></td>
					<td><em>S/M/L/XL</em></td>
					<td><em>Low/Med/High</em></td>
			</tr>
			<tr>
					<td><strong>Option 3</strong></td>
					<td><em>Description</em></td>
					<td><em>Pro A, Pro B</em></td>
					<td><em>Con A, Con B</em></td>
					<td><em>S/M/L/XL</em></td>
					<td><em>Low/Med/High</em></td>
			</tr>
	</tbody>
</table>

<h4 class="relative group">Recommendation
    <div id="recommendation" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#recommendation" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><em>State your recommended option and summarize why it&rsquo;s the best choice given the constraints and trade-offs.</em></p>

<h4 class="relative group">Decision
    <div id="decision" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#decision" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><em>Document the final decision once made. If different from the recommendation, explain why.</em></p>

<h4 class="relative group">Consequences
    <div id="consequences" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#consequences" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><em>What are the implications of this decision? What follow-up work is required?</em></p>

<h4 class="relative group">Action Items
    <div id="action-items" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#action-items" aria-label="Anchor">#</a>
    </span>
    
</h4>
<table>
	<thead>
			<tr>
					<th><strong>Action</strong></th>
					<th><strong>Owner</strong></th>
					<th><strong>Due Date</strong></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><em>Action 1</em></td>
					<td><em>Name</em></td>
					<td><em>Date</em></td>
			</tr>
			<tr>
					<td><em>Action 2</em></td>
					<td><em>Name</em></td>
					<td><em>Date</em></td>
			</tr>
	</tbody>
</table>

<h4 class="relative group">References
    <div id="references" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p><em>Links to related documents, external resources, spike results, or prior decisions.</em></p>
<hr>

<h3 class="relative group">Making the habit stick
    <div id="making-the-habit-stick" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#making-the-habit-stick" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Store the docs somewhere consistent — a dedicated folder in the repo, a wiki space — because a decision nobody can find might as well not exist. Keep them lightweight; a document that takes days to write won&rsquo;t get written. Reference them from code comments, commit messages and pull requests, so the &ldquo;why&rdquo; stays attached to the &ldquo;what&rdquo;. When a decision is superseded, don&rsquo;t delete the old doc — mark it superseded and link to the new one; the history is the point. And revisit old decisions in your <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-09-01-retrospecs/" >retrospectives</a>: which ones held up, which you&rsquo;d make differently now.</p>
<p>The failure modes are just as predictable. Analysis paralysis: set a deadline, decide with the information you have, and remember most decisions can be revisited. Rubber-stamp reviews that never produce real critique add process without adding value. Orphaned documents that never lead to action are worse than no documents at all. Too much detail: the doc should cover the why and the what, not the how — implementation belongs in technical specs. And when stakeholders disagree, write the dissent down. The decision may stand anyway, but the objection is exactly the context someone will need a year from now.</p>
<p>Start with your next significant decision. Write it up, even if it&rsquo;s rough, and refine the process as you go. Every &ldquo;why did we choose X?&rdquo; meeting that doesn&rsquo;t happen because someone just read the ADR is an hour your team gets back.</p>
<hr>

<h3 class="relative group">Further Reading
    <div id="further-reading" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#further-reading" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p><strong>Related Articles on This Site:</strong></p>
<ul>
<li><a href="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/" >Understanding Spikes in Agile Software Development</a> - gather information with a spike before making the big call</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2023/2023-09-01-retrospecs/" >Retrospectives: The Power of Feedback Loops</a> - review past decisions as part of continuous improvement</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2023/2023-10-08-planning-an-api/" >Planning an API</a> - decision-document thinking applied to API design</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2024/2024-01-04-githubforprojectmanagement/" >GitHub for Project Management</a> - keep decision documents next to your code</li>
</ul>
<p><strong>External Resources:</strong></p>
<ul>
<li><a href="https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions"  target="_blank" rel="noreferrer">Documenting Architecture Decisions - Michael Nygard</a> - the original post that popularised ADRs</li>
<li><a href="https://adr.github.io/"  target="_blank" rel="noreferrer">ADR GitHub Organization</a> - tools, templates and examples for Architecture Decision Records</li>
<li><a href="https://www.industrialempathy.com/posts/design-docs-at-google/"  target="_blank" rel="noreferrer">Design Docs at Google</a> - how Google approaches design documentation</li>
<li><a href="https://rust-lang.github.io/rfcs/"  target="_blank" rel="noreferrer">RFC Process at Rust</a> - a well-documented RFC process from the Rust language</li>
<li><a href="https://engineering.atspotify.com/2020/04/when-should-i-write-an-architecture-decision-record/"  target="_blank" rel="noreferrer">Spotify&rsquo;s Decision Record Template</a> - Spotify&rsquo;s take on when to write an ADR</li>
</ul>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2024/2024-12-03-decision-docs/featured.jpg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
