<?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>Scrum · Jared Lynskey</title>
    <link>https://jared.lynskey.co.nz/en/tags/scrum/</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>Wed, 28 Oct 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/en/tags/scrum/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>What Is a Spike in Agile? When Your Team Can&#39;t Estimate a Story</title>
      <link>https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/</guid>
      <pubDate>Wed, 18 Oct 2023 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Managing</category>
      <category>Spikes</category>
      <category>Agile</category>
      <category>Development</category>
      <category>Scrum</category>
      <category>Technical Debt</category>
      <category>XP</category>
      <category>Sprint Planning</category>
      <category>Risk Management</category>
      <description>In agile and Scrum, a spike is a short, time-boxed investigation that answers one specific question, so a story nobody could estimate can be. When one is worth running, technical vs functional spikes, how I structure one, and the template I use.</description>
      <content:encoded><![CDATA[<p>In agile and Scrum teams, a spike is a short, time-boxed investigation, usually one to three days, that answers one specific question so the story that was stuck on it can be estimated. You come out of it with findings and a recommendation, not code you&rsquo;d ship. Run one instead of estimating when it&rsquo;s the unknowns, not the size of the work, that stop the team putting a number on a story.</p>
<p>Every so often in sprint planning, a story lands that nobody can point. Estimates range from a 2 to a 13, someone says &ldquo;well, it depends&rdquo;, and the discussion goes in circles. <em>Should we use GraphQL or REST? Can the system actually handle 10,000 concurrent users? Is this third-party library production-ready?</em> You can&rsquo;t estimate your way out of questions like that. You have to go and find out. That&rsquo;s what a spike is for.</p>
<figure><video
    class="my-0 rounded-md"
    controls playsinline preload="none"
    poster="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/spike-film-poster.jpg" style="background:url('data:image/webp;base64,UklGRmoAAABXRUJQVlA4IF4AAAAQBQCdASogABIAPw1qpkemIyGYBABjEMT0gAA1cWIXGJs2LD6BmCYzHU6rXeJ2rfBgAP7ueaFWdAS7Wg/a9Absx0adTGm5KJURtiYmXfxVcs0TIltNDc4MndOlEAAA') center/cover no-repeat"
    width="1280"
    height="720"
    aria-label="A short narrated film of this post">
    <source src="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/spike-film.webm" type="video/webm">
    <track kind="subtitles" src="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/spike-film_en.vtt" srclang="en" label="English">
    <track kind="subtitles" src="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/spike-film_ja.vtt" srclang="ja" label="日本語">
    <track kind="subtitles" src="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/spike-film_ko.vtt" srclang="ko" label="한국어">
    <track kind="subtitles" src="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/spike-film_vi.vtt" srclang="vi" label="Tiếng Việt">
    <track kind="subtitles" src="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/spike-film_zh-cn.vtt" srclang="zh-cn" label="简体中文">
  </video><figcaption>This post as an eight-minute film, if you&rsquo;d rather watch than read.</figcaption>
</figure>


<h4 class="relative group">Where spikes come from
    <div id="where-spikes-come-from" 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="#where-spikes-come-from" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The term is from Extreme Programming, where it meant a &ldquo;very simple program to explore potential solutions&rdquo; — driving a spike through the problem. The modern version is a short, time-boxed research task whose output is knowledge, not working software. A spike isn&rsquo;t a user story and delivers no customer value on its own, and that&rsquo;s fine. Its job is to answer one specific question so the real work can be estimated and planned honestly.</p>
<p>In practice they come in two flavours. Technical spikes explore the how: evaluating a framework or library, prototyping an architectural pattern, performance-testing under realistic conditions, or finding out how painful an integration will really be. Functional spikes explore the what: clarifying an ambiguous story, testing a UI idea with a throwaway prototype, or poking at domain complexity until it makes sense.</p>

<h4 class="relative group">Why they&rsquo;re worth the time
    <div id="why-theyre-worth-the-time" 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-time" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Trying to estimate work with big unknowns gives you one of two things: padded estimates or missed deadlines. A spike converts &ldquo;no idea&rdquo; into actual data, so the team can commit to something with a straight face. It also replaces opinion wars with evidence — instead of arguing about which database is better, you spend two days measuring, and the findings feed straight into your <a href="https://jared.lynskey.co.nz/en/posts/2024/2024-12-03-decision-docs/" >decision documents</a>.</p>
<p>Mostly, though, it&rsquo;s cheap insurance. A two-day spike that reveals a library&rsquo;s limitations costs far less than discovering the same limitation three sprints into development.</p>

<h4 class="relative group">When a spike is (and isn&rsquo;t) the right call
    <div id="when-a-spike-is-and-isnt-the-right-call" 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-a-spike-is-and-isnt-the-right-call" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Reach for a spike when the team can&rsquo;t confidently estimate a story because of technical unknowns, when several viable options exist and you need data to pick one, when you&rsquo;re considering a new technology or integration, when performance is both uncertain and critical, or when requirements stay ambiguous no matter how many stakeholder meetings you sit through.</p>
<p>Don&rsquo;t use one for work the team already knows how to do, or as a way to delay a decision you could make with the information you have. And a spike is not a substitute for proper requirements gathering or <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-08-27-user-acceptance-testing/" >user acceptance testing</a> — it answers a question, it doesn&rsquo;t validate a product.</p>

<h4 class="relative group">How I run one
    <div id="how-i-run-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="#how-i-run-one" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>Start by writing down the question. Not &ldquo;research caching&rdquo; but &ldquo;can a Redis cluster meet our 50ms latency requirement?&rdquo; Give it explicit scope — what&rsquo;s in, what&rsquo;s out — a time-box of one to three days (if it needs more, the question is too broad), and success criteria so you&rsquo;ll know when you&rsquo;re done.</p>
<p>Then investigate: read the docs and case studies, build a minimal proof of concept, talk to people who&rsquo;ve done it before, and measure things with real code. Spike code is disposable by design.</p>
<p>When the time-box ends, write up findings, a recommendation with the reasoning, and any risks you uncovered, with links to the prototype clearly marked as spike output. Present it to the team, take questions, and adjust the backlog — create, refine, or kill stories based on what you learned. It&rsquo;s also worth reflecting on how the spike itself went in your next <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-09-01-retrospecs/" >retrospective</a>; teams get noticeably better at spiking with practice.</p>

<h4 class="relative group">The template I use
    <div id="the-template-i-use" 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-i-use" aria-label="Anchor">#</a>
    </span>
    
</h4>
<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="gu">## Spike: [Title]
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Time-box**</span>: [X days]
</span></span><span class="line"><span class="cl"><span class="gs">**Owner**</span>: [Name]
</span></span><span class="line"><span class="cl"><span class="gs">**Sprint**</span>: [Sprint number/name]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Question to Answer
</span></span></span><span class="line"><span class="cl">[Single, focused question this spike will answer]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Background
</span></span></span><span class="line"><span class="cl">[Why this spike is needed; what triggered the uncertainty]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Assumptions
</span></span></span><span class="line"><span class="cl"><span class="k">-</span> [Assumption 1]
</span></span><span class="line"><span class="cl"><span class="k">-</span> [Assumption 2]
</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">**In Scope**:
</span></span><span class="line"><span class="cl"><span class="k">-</span> [Item 1]
</span></span><span class="line"><span class="cl"><span class="k">-</span> [Item 2]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Out of Scope**</span>:
</span></span><span class="line"><span class="cl"><span class="k">-</span> [Item 1]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Success Criteria
</span></span></span><span class="line"><span class="cl"><span class="k">- [ ]</span> [Criterion 1]
</span></span><span class="line"><span class="cl"><span class="k">- [ ]</span> [Criterion 2]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Findings
</span></span></span><span class="line"><span class="cl">[To be completed during spike]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Recommendation
</span></span></span><span class="line"><span class="cl">[To be completed after spike]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### Follow-up Stories
</span></span></span><span class="line"><span class="cl"><span class="k">- [ ]</span> [Story 1]
</span></span><span class="line"><span class="cl">- [ ] [Story 2]</span></span></code></pre></div></div>
<p>The assumptions section earns its place. Writing down &ldquo;our data model is primarily relational&rdquo; and &ldquo;reads will outnumber writes 10:1&rdquo; before you start does two things: it lets people challenge your framing before you burn the time-box, and it means that if an assumption turns out to be wrong mid-spike, you&rsquo;ve learned something valuable rather than wasted two days.</p>

<h4 class="relative group">Ways spikes go wrong
    <div id="ways-spikes-go-wrong" 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="#ways-spikes-go-wrong" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>The classic failure is scope creep — the spike quietly becomes an open-ended research project. When new questions appear (they will), write them down as candidate spikes rather than expanding the current one. The second failure is goldplating: the moment you catch yourself adding error handling or tests to spike code, you&rsquo;ve crossed from exploration into implementation. Third, skipping the write-up — six months later someone will face the same question, and your two days of learning will be gone. And finally, treating the spike as a commitment to a predetermined answer. A spike that proves an approach won&rsquo;t work has done its job perfectly.</p>

<h4 class="relative group">Fitting them into sprint planning
    <div id="fitting-them-into-sprint-planning" 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="#fitting-them-into-sprint-planning" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>A few habits that have worked when <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-10-08-planning-an-api/" >planning sprints</a>: if a story has real unknowns, spike it this sprint and schedule the actual work for a later one. Keep it to one or two spikes per sprint — more than that and focus evaporates. Don&rsquo;t put story points on spikes; they produce knowledge, not software, so track them by their time-box. And present spike findings during refinement, before the team estimates the related stories, not after.</p>
<p>The next time a story generates more questions than answers, consider that a spike might be the most useful work in the sprint. Sometimes the fastest way forward is to stop and learn.</p>

<h4 class="relative group">The short version
    <div id="the-short-version" 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-short-version" aria-label="Anchor">#</a>
    </span>
    
</h4>
<p>A spike is a time-boxed investigation, one to three days, into a single question the team can&rsquo;t estimate its way past. It&rsquo;s the right call when unknowns are what&rsquo;s blocking the estimate: several viable options and no data to choose between them, a new technology or integration, performance that&rsquo;s both uncertain and critical, or requirements that stay vague. It isn&rsquo;t for work the team already knows how to do, or for putting off a decision you could make with what you already know.</p>
<p>What it produces is knowledge rather than software: findings, a recommendation with the reasoning, the risks you uncovered and a throwaway prototype. The backlog changes to match. Spikes get a time-box rather than story points, and the findings should reach refinement before anyone estimates the related stories.</p>

<h4 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>
    
</h4>
<p><strong>Related Articles on This Site:</strong></p>
<ul>
<li><a href="https://jared.lynskey.co.nz/en/posts/2023/2023-09-01-retrospecs/" >Retrospectives: Reflecting on Spike Outcomes</a> - Folding spike learnings into continuous improvement</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2023/2023-08-27-user-acceptance-testing/" >User Acceptance Testing</a> - Validating that spike-informed decisions meet user needs</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2024/2024-12-03-decision-docs/" >Decision Documents</a> - Structuring the decisions that come out of spike findings</li>
<li><a href="https://jared.lynskey.co.nz/en/posts/2023/2023-10-08-planning-an-api/" >API Planning</a> - How spikes can inform API design decisions</li>
</ul>
<p><strong>External Resources:</strong></p>
<ul>
<li><a href="https://scaledagileframework.com/spikes/"  target="_blank" rel="noreferrer">Spikes - Scaled Agile Framework (SAFe)</a> - The SAFe guide to spikes at scale</li>
<li><a href="http://www.extremeprogramming.org/rules/spike.html"  target="_blank" rel="noreferrer">Spike Solutions - Extreme Programming</a> - The original XP concept</li>
<li><a href="https://scrumguides.org/"  target="_blank" rel="noreferrer">The Scrum Guide</a> - Where spikes fit into sprint planning</li>
<li><a href="https://martinfowler.com/bliki/TechnicalDebt.html"  target="_blank" rel="noreferrer">Martin Fowler on Technical Debt</a> - How spikes help prevent technical debt</li>
</ul>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/featured.jpeg" medium="image" type="image/jpeg" />
    </item>
    <item>
      <title>What Does a Scrum Master Do? Focus on Process, Not Just Results</title>
      <link>https://jared.lynskey.co.nz/en/posts/2023/2023-10-16-outcome-indepedent/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/en/posts/2023/2023-10-16-outcome-indepedent/</guid>
      <pubDate>Mon, 16 Oct 2023 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Scrum</category>
      <category>Scrum Master</category>
      <category>Agile</category>
      <category>Retrospectives</category>
      <category>Team Management</category>
      <description>What a Scrum Master is accountable for under the Scrum Guide, how the role differs from a project manager, and why the job is improving the process rather than chasing sprint results.</description>
      <content:encoded><![CDATA[<p>The short answer first. Under the 2020 Scrum Guide, a Scrum Master is accountable for establishing Scrum as the guide defines it, and for the Scrum Team&rsquo;s effectiveness. In practice that means serving the Developers, the Product Owner and the wider organisation: coaching the team to manage itself, getting impediments removed, and making sure the Scrum events happen, stay productive and stay within their timebox. Nothing in the guide asks a Scrum Master to assign work or chase the team for results, and that difference is most of what this post is about.</p>
<p>The worst retrospectives I&rsquo;ve sat through all had the same shape: we missed the sprint goal, so the whole hour turned into an inquest about the goal. The best ones barely mentioned the goal at all. We talked about how we&rsquo;d worked, what got in the way, and what we&rsquo;d try differently next time. That difference is what people mean by an outcome-independent mindset, and having run sprints myself for a while now, I think it&rsquo;s the most useful attitude a Scrum Master can hold.</p>
<p>To be clear: results matter. Nobody pays us to have a lovely process and ship nothing. But delivering the sprint is the team&rsquo;s job. The Scrum Master&rsquo;s job is to improve the machine that delivers sprints. Those are different jobs, and mixing them up causes most of the dysfunction I&rsquo;ve seen around Scrum.</p>

<h3 class="relative group">Scrum Master vs project manager
    <div id="scrum-master-vs-project-manager" 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="#scrum-master-vs-project-manager" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The two roles get confused all the time, partly because plenty of companies hand both to the same person. The core difference:</p>
<table>
	<thead>
			<tr>
					<th></th>
					<th>Scrum Master</th>
					<th>Project manager</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Looks after</td>
					<td>How the team works, and how well</td>
					<td>Scope, schedule and budget</td>
			</tr>
			<tr>
					<td>Assigns work?</td>
					<td>No. The Developers plan their own work</td>
					<td>Often, yes</td>
			</tr>
			<tr>
					<td>Success looks like</td>
					<td>A team that gets better sprint by sprint</td>
					<td>The project delivered on time and on budget</td>
			</tr>
	</tbody>
</table>
<p>Scrum itself has no project manager role. Much of what a project manager would usually do is split between the Product Owner, who decides what gets built and in what order, and the Developers, who plan how to build it.</p>

<h3 class="relative group">What changes when you let go of the outcome
    <div id="what-changes-when-you-let-go-of-the-outcome" 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-changes-when-you-let-go-of-the-outcome" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The team gets room to actually own things. Scrum is supposedly built on self-organising teams, but a Scrum Master who sweats every result ends up steering decisions, and the team quickly learns that decisions aren&rsquo;t really theirs. Focus on process instead and you can let people experiment, make the occasional wrong call, and learn from it — which is the only way real ownership ever develops.</p>
<p><a href="https://jared.lynskey.co.nz/en/posts/2023/2023-09-01-retrospecs/" >Retrospectives</a> get honest. When the question in the room is &ldquo;why did we miss the number?&rdquo;, the true answers go into hiding. When it&rsquo;s &ldquo;what slowed us down, and what do we try next?&rdquo;, people talk. The same goes for impediments mid-sprint: an outcome-obsessed Scrum Master panics about the deadline, while a process-focused one just gets on with removing the blocker, or suggests a time-boxed <a href="https://jared.lynskey.co.nz/en/posts/2023/2023-10-18-spike/" >spike</a> when the blocker is something nobody knows enough about yet.</p>
<p>Stakeholders calm down too. If the only story you can tell is the burndown chart, every wobble looks like failure. If you can also talk about what the team learned and how it&rsquo;s adapting, expectations become more realistic — and the team gets shielded from a lot of pressure that would otherwise land on them halfway through a sprint.</p>

<h3 class="relative group">If you&rsquo;re already fixated on a result
    <div id="if-youre-already-fixated-on-a-result" 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="#if-youre-already-fixated-on-a-result" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Easier said than done, I know. When you&rsquo;re deeply invested in something turning out a particular way, &ldquo;just focus on the process&rdquo; sounds like a fridge magnet.</p>
<p>A few things that actually help. First, don&rsquo;t beat yourself up for caring — wanting a result is normal, and pretending otherwise doesn&rsquo;t work. Second, translate the outcome goal into process goals you control: not &ldquo;win the competition&rdquo; but &ldquo;practise 30 minutes a day&rdquo;. You can&rsquo;t control whether the release lands well; you can control whether it was reviewed, tested, and demoed early. Third, notice what&rsquo;s feeding the fixation. If you&rsquo;re refreshing a dashboard or a stock price ten times a day, pick set times to check and stop otherwise. And celebrate the small wins along the way, because the distant goal will happily eat all your attention if you let it. If the fixation is genuinely wrecking your sleep or your daily life, that&rsquo;s worth talking to a professional about — no shame in it.</p>
<p>Results still matter. But the teams I&rsquo;ve seen get them consistently are the ones where somebody is looking after the how, not just the what.</p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2023/2023-10-16-outcome-indepedent/featured.jpeg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
