<?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>Decision Making · Jared Lynskey</title>
    <link>https://jared.lynskey.co.nz/en/tags/decision-making/</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>Sun, 01 Nov 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/en/tags/decision-making/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>
    <item>
      <title>Using GitHub Issues for Decisions and Project Management: Alan&#39;s Method, With a Template</title>
      <link>https://jared.lynskey.co.nz/en/posts/2024/2024-01-04-githubforprojectmanagement/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/posts/2024/2024-01-04-githubforprojectmanagement/</guid>
      <pubDate>Tue, 09 Apr 2024 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>GitHub</category>
      <category>GitHub Issues</category>
      <category>Project Management</category>
      <category>Decision Making</category>
      <category>Async Communication</category>
      <category>Remote Work</category>
      <category>Team</category>
      <description>How Alan replaces most meetings with written GitHub issues: when a decision earns an issue, the LOCI roles, the writing rules, an issue template you can drop into .github/ISSUE_TEMPLATE, and when to add a GitHub Project on top.</description>
      <content:encoded><![CDATA[<p>I keep coming back to <a href="https://alan.com/en/healthybusiness/media/a/asynchronous-decisions"  target="_blank" rel="noreferrer">this article</a> from Alan, the French health insurance company, about how they make decisions. The short version: instead of booking a meeting, they open a GitHub issue and argue it out in writing. Now that I&rsquo;m managing a team myself, I&rsquo;ve been taking proper notes. What follows is my digest of their system, with my own comments mixed in.</p>

<h2 class="relative group">Why they gave up on meetings
    <div id="why-they-gave-up-on-meetings" 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-they-gave-up-on-meetings" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Their starting point will sound familiar. Nobody comes prepared, the meeting starts late, and the loudest voice wins whether it&rsquo;s right or not. An hour later you&rsquo;re more confused than when you walked in and wondering if there&rsquo;s any paracetamol left in the drawer.</p>
<p>Alan tried fixing meetings first — 15 minutes max, clear agenda, decision required. It didn&rsquo;t hold. Discussions drifted, nobody could remember what was said, and absent or remote people were simply out of luck. So they moved the whole thing into writing.</p>
<p>The claims they make for it ring true to me. Writing forces you to slow down and actually think, so the discussion gets more nuanced and better argued. Everything is documented instead of half-remembered. It stops being an eloquence contest. And because the forum is open to the whole company, anyone can contribute — not just whoever happened to be in the room.</p>

<h2 class="relative group">GitHub as the company forum
    <div id="github-as-the-company-forum" 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="#github-as-the-company-forum" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>The forum itself is GitHub, a platform built for code review that Alan cheerfully hijacked. The setup is almost embarrassingly simple:</p>
<ol>
<li>Create a GitHub account.</li>
<li>Create a private repo with no code in it (theirs is called &ldquo;Topics&rdquo;).</li>
<li>Add a labelling system to categorise conversations.</li>
<li>Use the Issues tab: open issues are live discussions, closed ones are decisions made.</li>
</ol>
<p>They&rsquo;ve passed 17,000 issues. That&rsquo;s a lot of meetings that never had to happen, and — the part I find most appealing — a searchable history of why every decision went the way it did. If you want to challenge an old decision, you can first read which arguments won last time.</p>

<h2 class="relative group">When to open an issue
    <div id="when-to-open-an-issue" 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-open-an-issue" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Not every decision earns an issue. Their filter is four questions: who will be affected? how reversible is it? how urgent is it? do I need more context before deciding?</p>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="image"
    width="1390"
    height="1213"
    src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_9ca1837f8ecdf619.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_9ca1837f8ecdf619.webp 800w, https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_8ecbad24825e93ec.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/decisionchart_hu_c84e7ceb7d35c8e2.webp"></span></figure>
</p>
<p>Broadly, high-impact and hard-to-reverse decisions go to the forum; the rest can stay in Slack. They lean on the one-way vs two-way door distinction: a one-way decision (too expensive or painful to reverse — their example is a price increase) gets the full written treatment, while a two-way decision (cheap to undo, worst case you lose some energy) doesn&rsquo;t need the ceremony.</p>

<h2 class="relative group">LOCI: who does what
    <div id="loci-who-does-what" 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="#loci-who-does-what" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Every discussion assigns roles using the LOCI model — Lead, Owner, Consulted, Informed.</p>
<p>The Lead is accountable for the decision&rsquo;s success and makes sure the context is understood across the team. They say upfront how involved they want to be, then trust the Owner and take responsibility for what the team produces, speaking up only when they strongly disagree. One Lead per discussion.</p>
<p>The Owner makes the final call and drives the project. They keep contributors informed and contributing on time, investigate the problem, open and close the issue, and share the decision. If they hit a wall they can&rsquo;t get past, they go to the Lead. One Owner per decision.</p>
<p>Consulted people are the ones whose input genuinely matters to the trade-off. They&rsquo;re expected to contribute promptly — even if only to say &ldquo;nothing to add&rdquo; — and to raise the alarm (escalating to the Lead if needed) when they think the decision is badly wrong. Alan caps this group at about six, because more input starts costing schedule.</p>
<p>Informed people simply get told, usually once the decision is made. One-way communication, nothing expected back. The Owner decides who&rsquo;s affected enough to be notified.</p>
<p>That works decision by decision. For a whole project, I write the same thing down once, as a <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-06-02-project-frameworks-for-future-cto/" >project communication plan</a>: who needs to hear what, how often, and who tells them.</p>

<h2 class="relative group">The anatomy of an issue
    <div id="the-anatomy-of-an-issue" 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-anatomy-of-an-issue" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Every issue uses the same template, which both sharpens the thinking and quietly teaches junior people how to break a problem down:</p>
<ul>
<li>Scope — the &ldquo;why&rdquo; of the discussion, including the underrated line &ldquo;this issue is NOT about…&rdquo;</li>
<li>Context &amp; materials — links to prior discussions and documents</li>
<li>LOCI — who&rsquo;s Lead, Owner, Consulted, Informed</li>
<li>A deadline — when to contribute by, when the issue closes, when a solution is needed</li>
<li>A solution proposal — one suggested answer, or options to choose between</li>
<li>Questions — aimed at specific people to confirm or refute specific assumptions, so the issue isn&rsquo;t a message in a bottle</li>
</ul>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="image"
    width="1390"
    height="715"
    src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_154de40eb6124f02.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_154de40eb6124f02.webp 800w, https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_ab103b11817c0ef0.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/gitpreview_hu_aada79d3a582942a.webp"></span></figure>
</p>

<h2 class="relative group">Writing rules that keep things moving
    <div id="writing-rules-that-keep-things-moving" 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="#writing-rules-that-keep-things-moving" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>A written debate can drag just as badly as a spoken one, so they have rules. Be concise — they quote Boileau: &ldquo;What is well conceived is clearly stated.&rdquo; If you can&rsquo;t write it simply, you&rsquo;re not actually sure of it yet. Apply the &ldquo;So what?&rdquo; test to everything you write; if the implication of your comment isn&rsquo;t obvious, spell it out.</p>
<p>For the Owner, the follow-up matters as much as the opening. Keep the discussion pointed at the million-dollar question — the one sticking point that actually matters — rather than letting it dissolve into details. Recap regularly what&rsquo;s been agreed and what&rsquo;s still open. And treat Slack reminders as a last resort, reserved for overdue contributions or genuine urgency.</p>
<p><figure><span class="mc-img"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="image"
    width="1390"
    height="910"
    src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_b208cd2844b5ba3a.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_b208cd2844b5ba3a.webp 800w, https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_f44bfed068b95993.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/2024/2024-01-04-githubforprojectmanagement/slackmessage_hu_3f37871d11c679c.webp"></span></figure>
</p>
<p>Owners also hide comments that don&rsquo;t move the conversation forward, and everyone is expected to know their way around GitHub&rsquo;s formatting — headings, footnotes, tables, keyboard shortcuts — because in writing, form carries almost as much as substance.</p>

<h2 class="relative group">No consensus, no spectators
    <div id="no-consensus-no-spectators" 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="#no-consensus-no-spectators" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Two rules stop this from turning into decision-by-committee.</p>
<p>First, the Owner decides as what Alan calls an &ldquo;enlightened despot&rdquo;. They investigate ideas, measure risks, question peers — but they don&rsquo;t seek consensus and they don&rsquo;t have to implement everything they&rsquo;re told. Alan is blunt about not being a democracy: every employee is a shareholder, and the company&rsquo;s interest comes before the team&rsquo;s or the individual&rsquo;s. When the Owner is reasonably sure of the right bet, they decide, everyone tries it, and once the impact is visible they review whether it was the right call.</p>
<p>Second, contributor numbers are controlled. Jeff Bezos&rsquo; two-pizza rule applies to async work too: the more people on an issue, the less each one contributes. Past about six contributors, the spectator effect kicks in and participation quality drops. Notifications follow the same philosophy — Alan trusts everyone to have configured their own GitHub notifications (Settings, then tick &ldquo;Web and Mobile&rdquo; under both &ldquo;Participating&rdquo; and &ldquo;Watching&rdquo;), so direct tags in the Questions section are kept to a minimum.</p>

<h2 class="relative group">What I&rsquo;m taking from it
    <div id="what-im-taking-from-it" 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-im-taking-from-it" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>You can never fully explain a meeting to someone who wasn&rsquo;t there, but anyone can read a decision. Alan doesn&rsquo;t claim this is the best or only system — just the one that fits them: fewer interruptions, less spectator effect, and decisions made with a step back and the facts written down. I&rsquo;m not about to move every decision my team makes into GitHub issues, but the template below is going straight into our repo.</p>

<h3 class="relative group">The template, as a GitHub issue template
    <div id="the-template-as-a-github-issue-template" 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-template-as-a-github-issue-template" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Save this as <code>.github/ISSUE_TEMPLATE/decision.md</code> in whichever repository you use as the forum, and GitHub offers it every time someone opens a new issue. The sections are Alan&rsquo;s; the LOCI lines and the label are my additions.</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="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Decision</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">about</span><span class="p">:</span><span class="w"> </span><span class="l">Propose a decision and collect input in writing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;[Decision] &#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">labels</span><span class="p">:</span><span class="w"> </span><span class="l">decision</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Scope
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> The goal of this issue is ...
</span></span><span class="line"><span class="cl"><span class="k">-</span> This issue is NOT about ...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Why I&#39;m opening this issue
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## LOCI
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> Lead:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Owner:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Consulted:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Informed:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Timeline
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> Contributions by:
</span></span><span class="line"><span class="cl"><span class="k">-</span> Decision by:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Context and materials
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Proposal
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">## Questions</span></span></code></pre></div></div>

<h2 class="relative group">GitHub Issues or GitHub Projects?
    <div id="github-issues-or-github-projects" 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="#github-issues-or-github-projects" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>If you&rsquo;re thinking about GitHub for project management more broadly, the two pieces do different jobs. Issues hold the discussion and, once closed, the decision. A GitHub Project is a board or table laid over issues from one or more repositories, with your own fields for status, owner or deadline. For a decision forum like Alan&rsquo;s, labels and the issue list are enough. Add a Project when you want every open decision on one screen, sorted by the date it has to be made, and when you start tracking delivery work in the same place, which is where most teams end up using both.</p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2024/2024-01-04-githubforprojectmanagement/featured.jpg" medium="image" type="image/jpeg" />
    </item>
    <item>
      <title>What Is Desirability? What Makes a Product Desirable</title>
      <link>https://jared.lynskey.co.nz/en/posts/2023/2023-09-27-what-is-desirable/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/posts/2023/2023-09-27-what-is-desirable/</guid>
      <pubDate>Wed, 27 Sep 2023 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Desirability</category>
      <category>Decision-Making</category>
      <category>Personal Taste</category>
      <category>Irresistibility</category>
      <category>Appeal</category>
      <category>Influence</category>
      <description>Desirability is how much people want something, beyond whether they need it. What it means in product design, the traits that make things desirable, and how to test for it before you build.</description>
      <content:encoded><![CDATA[<p>Desirability is how much people want something: the pull it has on them beyond whether they strictly need it. Something desirable is worth having or wanting, and people will choose it, pay for it or wait for it when cheaper or easier options exist. In product design the word has a narrower meaning. It&rsquo;s one of three tests a product idea has to pass, alongside feasibility (can we build it?) and viability (can it sustain a business?). Desirability asks whether the people it&rsquo;s for actually want it.</p>
<p>Why do people want the things they want? I think about this more than I expected to. When I first wrote this I was working on a platform where people spent all day discussing cosmetics, and why one product got coveted while a nearly identical one sat ignored was basically the whole business. Taste is personal, sure, but the patterns underneath it are surprisingly consistent.</p>

<h4 class="relative group">Desirability, feasibility and viability
    <div id="desirability-feasibility-and-viability" 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="#desirability-feasibility-and-viability" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The three-lens version comes from design thinking, and it&rsquo;s become a common way for product teams to check an idea before they commit to it. The useful part is that the three fail in different ways. A feasible, viable product nobody wants is the classic startup failure: well engineered, sensibly priced and ignored. A desirable product that can&rsquo;t be built, or can&rsquo;t make money, at least fails for a reason you can see coming.</p>
<p>Desirability is the one teams most often skip, because it&rsquo;s the hardest to measure and the easiest to assume. Everyone on the team already wants the thing they&rsquo;re building. That tells you nothing about anyone else.</p>
<p>The rest of this post is about what desirability is made of, and then how to check for it.</p>

<h4 class="relative group">It has to work, and keep working
    <div id="it-has-to-work-and-keep-working" 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="#it-has-to-work-and-keep-working" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Desire usually starts with plain usefulness: the kitchen gadget that genuinely saves you ten minutes, the phone that just keeps you connected. But utility on its own only gets you to &ldquo;fine&rdquo;. The things people actually covet do their job exceptionally well, and keep doing it. Quality and durability are what turn a purchase into a possession someone defends, like a classic car or a knife that outlives its owner. Nobody lusts after something they expect to break.</p>

<h4 class="relative group">It has to make you feel something
    <div id="it-has-to-make-you-feel-something" 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="#it-has-to-make-you-feel-something" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Aesthetics pull harder than we like to admit. The lines of a sports car or the plating of a good dish grab you before the rational part of the brain gets a vote. And the strongest wants are emotional ones: joy, nostalgia, belonging. A battered childhood toy fails every practical test and is still impossible to throw away. Personalisation feeds the same instinct. Something tailored to you feels like yours in a way the stock version never will.</p>

<h4 class="relative group">Other people decide more than we&rsquo;d like to think
    <div id="other-people-decide-more-than-wed-like-to-think" 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="#other-people-decide-more-than-wed-like-to-think" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Desirability is partly a social construct. Trends, peer approval and cultural norms quietly steer what we want. Scarcity does too: limited editions, rare stones, one-off pieces. Rarity signals that wanting this thing puts you in a small club. Reputation then compounds everything. Glowing reviews and word of mouth make a thing feel safe to want. On that cosmetics platform I watched this loop run every single day: one well-liked reviewer, a short-run product, and a week later it was sold out.</p>

<h4 class="relative group">The maths still has to work
    <div id="the-maths-still-has-to-work" 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-maths-still-has-to-work" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Price doesn&rsquo;t kill desire, but a bad deal does. People happily pay a premium for luxury and still walk away from anything that feels like poor value for hard-earned money. And increasingly, values sit inside the same calculation. Whether something was made sustainably and ethically now moves it up or down the wish list for a lot of people. Me included.</p>

<h4 class="relative group">How to test whether something is desirable
    <div id="how-to-test-whether-something-is-desirable" 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="#how-to-test-whether-something-is-desirable" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The trap with desirability is that asking people directly doesn&rsquo;t work. &ldquo;Would you use this?&rdquo; gets a polite yes from almost everyone, because saying yes costs nothing. The tests that work all ask people to give something up, like time, money, an email address or a habit, and watch whether they do.</p>
<p>Ask about the past, not the future. &ldquo;Tell me about the last time you had this problem, and what you did about it&rdquo; gets you real behaviour. If nobody can remember the last time, the problem isn&rsquo;t painful enough to want a solution for.</p>
<p>Put up a fake door. A landing page, or a button in an existing product, for something that doesn&rsquo;t exist yet, and count how many people click through or leave an email. It feels slightly cheeky, but it&rsquo;s the cheapest honest signal there is. Be upfront on the other side of the door that it&rsquo;s coming soon.</p>
<p>Ask for a commitment. A waitlist is weak, a pre-order or deposit is strong. People will sign up for anything, but they only pay for what they want.</p>
<p>For something people already use, ask how they&rsquo;d feel if they could no longer use it. A common rule of thumb in product circles is that if around 40% of your users would be &ldquo;very disappointed&rdquo;, you&rsquo;ve got something people genuinely want. It&rsquo;s a crude measure, but it&rsquo;s far better than asking people whether they like it.</p>
<p>And watch what people do rather than what they say. Which features get used a second time, which ones people come back to without a reminder, what they complain about when it breaks. Complaints are underrated here. Nobody complains about losing something they didn&rsquo;t want.</p>

<h4 class="relative group">Putting it together
    <div id="putting-it-together" 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="#putting-it-together" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>None of these traits carries a product on its own. But stack a few of them, so that it&rsquo;s genuinely useful, well made, good to look at, a little scarce and vouched for by people you trust, and you get the things people queue for. Most of the rest is marketing.</p>

<h4 class="relative group">In short
    <div id="in-short" 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="#in-short" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Desirability is how much people want something, beyond whether they need it. In product terms it&rsquo;s the &ldquo;do people want this?&rdquo; lens that sits alongside feasibility and viability. It comes from usefulness that lasts, an emotional or aesthetic pull, social proof and scarcity, and a price that feels fair. You can&rsquo;t find it by asking people whether they&rsquo;d use something. Test it by asking them to give up something real, and watch what they do.</p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2023/2023-09-27-what-is-desirable/featured.jpeg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
