<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss 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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
  <channel>
    <title>Articles on Martin Hinshelwood on Engineering Leadership</title>
    <link>https://engineering-leadership.hinshelwood.com/articles/</link>
    <description>Recent content in Articles on Martin Hinshelwood on Engineering Leadership</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 16 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://engineering-leadership.hinshelwood.com/articles/index.xml" rel="self" type="application/rss+xml"/>
    <itunes:explicit>no</itunes:explicit><itunes:subtitle>Recent content in Articles on Martin Hinshelwood on Engineering Leadership</itunes:subtitle><itunes:category text="Technology"/><item>
      <title>Engineering as a Leadership System: Moving Beyond Frameworks</title>
      <link>https://leadership-system.hinshelwood.com/moving-beyond-frameworks/</link>
      <pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://leadership-system.hinshelwood.com/moving-beyond-frameworks/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Strategy</category>
      <category>Leadership</category>
      <category>Technical Leadership</category>
      <category>Engineering Excellence</category>
      <description>Every organisation runs on a theory of the business, and its operating model is that theory made structural. Once the theory is embedded in governance, funding, measurement, decision rights, and accountability, it governs what work is possible regardless of which framework the teams use. This is why practice adoption, coaching, training, and AI produce local gains that do not persist, and why the useful diagnostic is not maturity but movement, whether work moves, waits, learns, or decays.</description>
      <content:encoded>&lt;p&gt;Most of the engineering leaders I work with have already done the work. Scrum is in place. Teams are cross functional and mostly stable. There is a platform team, a pipeline that builds and deploys, a dashboard with four metrics on it, and now an AI assistant on every desk. The practices are not missing. The people are not weak.&lt;/p&gt;
&lt;p&gt;And yet delivery is still slower than anyone expects, less predictable than anyone will admit in a board meeting, and more expensive to change than it was three years ago.&lt;/p&gt;
&lt;p&gt;That gap is what this is about. My argument is easy to state and uncomfortable to act on. The frameworks and practices your teams adopt cannot overcome the operating model your organisation runs them inside. Engineering is not a set of team practices. It is a leadership system.&lt;/p&gt;

    
    

  

&lt;h2 id="your-operating-model-is-a-theory-of-the-business"&gt;Your operating model is a theory of the business&lt;/h2&gt;
&lt;p&gt;Every organisation runs on what Peter Drucker called a theory of the business: a set of assumptions about the environment, about who the customer is, about what that customer values, and about what the organisation has to be good at in order to win. Most of those assumptions were never written down, and almost none of them are revisited. They were correct once. That is usually why nobody questions them.&lt;/p&gt;
&lt;p&gt;Two things make this worse than it sounds. First, a theory of the business does not become obsolete because it failed. It becomes obsolete because it worked, and success is what stops it being questioned. Second, and sharper: for many organisations the theory never matched the realities of their environment at all. But when every company in your competitive arc makes the same mistake, it is not noticeable. Nothing in the market punishes an error everyone shares. The mistake becomes institutional.&lt;/p&gt;
&lt;p&gt;There is one exception worth naming. A personality, or a group, can through sheer force of will make an organisation override the implications of its theory of the business. But it is almost always departmentally local, and it rarely outlives the person. Heroics are not a structure, and this piece is about what persists.&lt;/p&gt;
&lt;p&gt;An operating model is that theory made structural. It is the assumptions converted into governance, funding, measurement, decision rights, and accountability, so that they no longer have to be argued. They become the way things are done here.&lt;/p&gt;
&lt;p&gt;&lt;img src="media/theory-made-structural.svg" loading="lazy" alt="The theory of the business becomes structure, becomes &amp;ldquo;how things are done here&amp;rdquo;, and the loop that should test the theory is the piece almost nobody builds" class="post-img" /&gt;&lt;/p&gt;
&lt;p&gt;Drucker&amp;rsquo;s requirement was never just that the theory exists. It was that the theory be tested constantly, because it is a hypothesis, not scripture. That dashed return arrow is the piece almost nobody builds, and it cannot build itself: a theory made structural has no sensor. Nothing inside the structure can detect that its founding assumptions have lapsed, because the structure exists precisely so those assumptions no longer get argued. Detection is a job, and in most organisations it is an unowned job.&lt;/p&gt;
&lt;p&gt;This is why operating models are simultaneously so powerful and so hard to see. A framework is something you adopt, and you can point at it. A theory of the business is something you inherit, and it points at you. Scrum can be installed in a quarter. The assumption that work can be specified up front, approved centrally, and then executed to plan is installed in your budget cycle, your capitalisation rules, your job architecture, and your promotion criteria. One of those two things is going to win, and it is not the framework.&lt;/p&gt;
&lt;p&gt;The distinction between a &lt;a href="https://engineering-leadership.hinshelwood.com/tags/predictive-operating-model/"&gt;predictive operating model&lt;/a&gt; and an &lt;a href="https://engineering-leadership.hinshelwood.com/tags/adaptive-operating-model/"&gt;adaptive&lt;/a&gt; one is not a moral one, and it is not modern against traditional. Predictive structures work extremely well when their assumptions hold: stable demand, knowable work, long product lifecycles, advantage from efficiency and consistency. They fail when the environment changes faster than the planning cadence that governs it. Most organisations I see are not badly run. They are running a theory of the business that stopped matching their environment some years ago, and nobody was accountable for noticing. I have written about that distinction at length &lt;a href="https://engineering-leadership.hinshelwood.com/articles/why-most-companies-operating-models-fail-in-dynamic-markets/"&gt;elsewhere&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The two theories are mutually exclusive. They make contradictory claims about the same environment, so at most one is true of yours. That does not make organisations pure: an adaptive theory of the business freely uses predictive practices wherever the work is knowable, in payroll, in regulated execution, in any known-good procedure. The practices serve; the theory governs. If you believe your organisation holds both theories, look at what your budget process does when the two collide. That is your theory.&lt;/p&gt;


  

&lt;h2 id="when-this-is-not-your-problem"&gt;When this is not your problem&lt;/h2&gt;
&lt;p&gt;I should say this plainly, because the argument reads as universal and it is not.&lt;/p&gt;
&lt;p&gt;If your demand really is stable, your work really is knowable in advance, and your product lifecycle is measured in years, a predictive operating model is not your constraint. It is the correct design, and changing it would cost you the advantage you have.&lt;/p&gt;
&lt;p&gt;If your teams genuinely cannot do the work, structure will not save you. Genuine means absent: nobody in the system has the skill yet, and the work would fail even with every gate removed. That is fixed by hiring, training, and time. But if skilled people keep leaving, or mastery never gets funded time, that is not a capability gap. That is the funding surface wearing a skills costume, and you are back in this article. My claim is narrower than it sounds. When the practices are present and the people are capable, the operating model is the explanation you have least examined, and it is the only one this piece gives you a way to test.&lt;/p&gt;
&lt;p&gt;And if you can answer the five questions at the end of this piece with evidence rather than opinion, you are not the reader I wrote this for.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Under pressure to show AI progress, unsure where it starts?&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;AI doesn&amp;#39;t fix a system of work. It reveals one. If you&amp;#39;re under pressure to show progress and can&amp;#39;t yet say where to start, that&amp;#39;s the problem I help organisations work out: which problem is actually worth pointing AI at, before anyone picks the technology.&lt;/p&gt;
        &lt;a href="https://ai.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="ai" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;Find a validated starting point →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="where-the-theory-is-actually-written-down"&gt;Where the theory is actually written down&lt;/h2&gt;
&lt;p&gt;If you want to find an organisation&amp;rsquo;s real theory of the business, do not read the strategy deck. Read five things instead. These are the surfaces where the theory stops being an idea and starts governing behaviour.&lt;/p&gt;


  

&lt;h3 id="governance-what-requires-permission"&gt;Governance: what requires permission&lt;/h3&gt;
&lt;p&gt;Governance answers one question: what may a person do without asking. Every approval gate is a recorded statement that the organisation does not trust the information held at the point of work, and would rather pay delay than accept variance. That is sometimes a sound trade. It is rarely a conscious one, because approval gates are added one incident at a time and removed almost never.&lt;/p&gt;
&lt;p&gt;The cost is not the meeting. The cost is that a decision cannot be tested until it has been approved, and by then it has usually also been committed. The property being destroyed here is what I call decision testability: the ability to validate a decision against reality before the commitment becomes irreversible. Every gate lowers it.&lt;/p&gt;


  

&lt;h3 id="funding-what-you-buy-and-for-how-long"&gt;Funding: what you buy, and for how long&lt;/h3&gt;
&lt;p&gt;Funding decides what an organisation is structurally able to change its mind about. Fund a project and you have bought a scope, a date, and a team that disbands at the end, which means learning that arrives late has nowhere to go and no one to carry it. Fund a product, or a long-lived team that owns an outcome, and you have bought a capability that can absorb what it learns.&lt;/p&gt;
&lt;p&gt;There is a third rung. Fund an outcome, and the money is attached to the result rather than the plan, so learning redirects the work instead of being defended against. A project buys a plan. A product buys a capability. An outcome buys a direction. The chain should run downward from the vision: the vision defines the outcomes, outcomes drive the products, each product hosts a capability, and projects, if you use them at all, are batches of work inside a product, never the unit of funding.&lt;/p&gt;
&lt;p&gt;Annual funding cycles in a market that moves monthly do not just slow the organisation down. They make it structurally rational for everyone in it to defend a plan they know is wrong, because the plan is the thing the money was attached to. The book calls this surface economic ownership.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h3 id="measurement-what-you-count"&gt;Measurement: what you count&lt;/h3&gt;
&lt;p&gt;Measurement determines what leaders are able to see, and therefore what they are able to decide. When the measures are outputs, and the people being measured cannot change the system that produces those outputs, the measures stop describing reality and start describing what people need reported. Signal integrity, the degree to which the signals reaching leadership reflect operational reality, degrades quietly, and it degrades first in exactly the places where you most need the truth.&lt;/p&gt;
&lt;p&gt;The diagnostic is not whether your metrics are good. It is what happens when a metric reveals a structural problem rather than an execution one. Organisations that change the metric have told you where their accountability actually sits.&lt;/p&gt;


  

&lt;h3 id="decision-rights-who-may-decide-without-asking"&gt;Decision rights: who may decide without asking&lt;/h3&gt;
&lt;p&gt;Context does not survive travel. Every layer it crosses on the way to a decision maker strips detail and adds interpretation. When authority sits several layers above where the information is generated, the organisation has designed decision latency into itself, the time between recognising a need for change and having the authority to act, and the delay is not a behaviour anyone can be coached out of.&lt;/p&gt;
&lt;p&gt;The compounding cost is not slowness. It is that by the time a decision reaches the person entitled to make it, the option to reverse it cheaply has usually already expired.&lt;/p&gt;


  

&lt;h3 id="accountability-who-carries-the-consequence"&gt;Accountability: who carries the consequence&lt;/h3&gt;
&lt;p&gt;The most common structural defect I find is accountability without authority. A team is held to an outcome it does not control the conditions for. Engineers are asked for quality by an organisation whose funding, deadlines, and measurement all penalise the behaviour that produces it. Nobody in that arrangement is behaving badly. They are behaving rationally, given the system they have been handed.&lt;/p&gt;
&lt;p&gt;Where accountability and authority sit apart, no amount of intent closes the gap. It is a structural property, and it is fixed structurally or not at all.&lt;/p&gt;


  

&lt;h2 id="why-frameworks-coaching-training-and-ai-change-so-little"&gt;Why frameworks, coaching, training and AI change so little&lt;/h2&gt;
&lt;p&gt;Once you see those five surfaces, the disappointing return on transformation investment stops being mysterious.&lt;/p&gt;
&lt;p&gt;Frameworks, coaching, training, and tooling all operate inside the constraint. The operating model is not a layer above the work. It wraps it. They can make a team better at working within the system. They cannot change the system, because the levers that define it (budget, structure, policy, decision rights) are outside everything they touch. This is why improvement arrives, holds for a while, and then regresses. The operating model reasserts its constraints, and everyone concludes the framework did not work.&lt;/p&gt;
&lt;p&gt;&lt;img src="media/operating-model-wraps-the-work.svg" loading="lazy" alt="The operating model wraps the frameworks, which wrap the teams. Interventions operate inside the constraint they are trying to change" class="post-img" /&gt;&lt;/p&gt;
&lt;p&gt;AI is the sharpest current example, and it is worth being precise about why. AI does not create a new operating-model requirement. It accelerates execution, and in doing so it removes the technical effort that used to disguise where the real constraint was. When writing the code was the slow part, governance delay and context decay were hidden inside the estimate. When writing the code is fast, they are all that is left. The queue does not disappear. It just becomes visible.&lt;/p&gt;
&lt;p&gt;There is a second effect that is easier to miss. AI output arrives quickly and looks precise, which means an invalid assumption can survive longer under AI than it did under manual work, because nothing about the output signals that it was built on the wrong premise. Where context quality is poor, AI does not compensate. It multiplies. This is why I treat AI as a diagnostic rather than an intervention: it will tell you, faster and more expensively than anything else you could buy, exactly what your operating model was already doing.&lt;/p&gt;


  

&lt;h2 id="the-tell-stated-intent-against-the-operating-model"&gt;The tell: stated intent against the operating model&lt;/h2&gt;
&lt;p&gt;Almost every organisation I work with has a stated intent that is genuinely held and an operating model that contradicts it. The contradiction is not hypocrisy. It is usually that the intent was updated and the structure was not.&lt;/p&gt;
&lt;p&gt;The tells are consistent, and you can look for them this week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have asked for empowered teams, and every decision above a fixed value goes to a forum that meets fortnightly.&lt;/li&gt;
&lt;li&gt;You have asked for faster feedback, and you fund in annual cycles against fixed scope.&lt;/li&gt;
&lt;li&gt;You have asked for quality, and the only measure with consequences attached is date adherence.&lt;/li&gt;
&lt;li&gt;You have asked people to surface problems early, and the last person who did is still explaining it.&lt;/li&gt;
&lt;li&gt;You have asked for experiments, and there is no mechanism to stop one, so every experiment quietly becomes a commitment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Where stated intent and structure conflict, structure wins, because structure is the thing with consequences attached. It wins without a meeting. People are reading the system, not the memo, and they are reading it correctly.&lt;/p&gt;
&lt;p&gt;This is also why culture change programmes fail. Culture is the shadow the structure casts on the wall, cast by the structure, which was formed from the theory of the business. You cannot change a shadow. You can only move the thing that casts it. Culture is a read-out, not a lever: read it, because it is excellent diagnostics about your structure, and stop pulling on it.&lt;/p&gt;


  

&lt;h2 id="move-wait-learn-decay"&gt;Move, wait, learn, decay&lt;/h2&gt;
&lt;p&gt;The most useful diagnostic I know is not a maturity model. It is four questions about what your system does with work, and you can answer all four this week from things you already have.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does work move?&lt;/strong&gt; Take ten items you shipped last quarter. For each, write down the date work started and the date a customer could use it, then subtract the days anyone actually touched it. What is left is waiting. In the organisations I look at, the waiting is usually the larger number.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does work wait?&lt;/strong&gt; Walk your board and find everything that is done but not released, or decided but not authorised. Count them, and note what each one is waiting for. If most are waiting for a person rather than for work, you have found where authority sits relative to information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does your organisation learn?&lt;/strong&gt; Look at the last five problems that reached your desk and ask what changed afterwards. A new rule, a new report, a new dashboard, or a new approval is a reaction. A removed approval, a moved decision, or a changed budget line is learning. Count the two. Most people are surprised by the ratio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does the system decay?&lt;/strong&gt; Find one approval, one report, and one recurring meeting that exist because of an incident nobody in the room can now date. Then ask who is accountable for removing them. If the answer is nobody, this is not entropy and it is not the market. It is an unowned job.&lt;/p&gt;


  

&lt;h2 id="five-questions-worth-answering-honestly"&gt;Five questions worth answering honestly&lt;/h2&gt;
&lt;p&gt;If you take one thing into your next leadership meeting, take these. They are diagnostic, not rhetorical, and the answers are usually already known by someone who has not been asked.&lt;/p&gt;
&lt;p&gt;The four questions above tell you what your system does with work. These five tell you where that behaviour is written, one per surface. The order matters: run the four yourself, this week, on the span you control. No permission needed. Take the five to your next leadership meeting once you have the numbers, and leave that meeting with one name and one date per question, or the meeting produced nothing.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Governance.&lt;/strong&gt; What decisions currently require permission, and what evidence would tell us that permission is buying us more than the delay costs?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funding.&lt;/strong&gt; What are we funding that we would not start today, and what is our standing mechanism for stopping it? Drucker asked the first half of that question in 1954, and his version was not a question but a calendar entry. Most organisations still cannot answer the second half.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Measurement.&lt;/strong&gt; When a measure last revealed a structural problem, did we change the structure or the measure?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decision rights.&lt;/strong&gt; Where is the largest gap between where information first appears and where the decision about it is made, and what is that gap costing us in reversibility?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accountability.&lt;/strong&gt; Who is currently accountable for an outcome whose determining conditions they do not control?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Not one of these questions is about your teams. That is the point.&lt;/p&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="this-work-does-not-finish"&gt;This work does not finish&lt;/h2&gt;
&lt;p&gt;The uncomfortable part of treating engineering as a leadership system is that it removes the possibility of completion. There is no target state. Operating models degrade through accumulation and through decay, continuously, and the work of removing obsolete commitments, realigning decision rights, and refreshing the assumptions the model rests on is permanent executive work. It cannot be delegated to a transformation office, because the levers are not there.&lt;/p&gt;
&lt;p&gt;What changes when leaders take this on is not that delivery becomes fast. It is that problems arrive while they are still cheap, decisions get tested before they become irreversible, and leadership attention stops being consumed by crisis response and retrospective justification. That capacity is the real return, and it is structural rather than heroic.&lt;/p&gt;
&lt;p&gt;If your organisation has adopted the practices and is still disappointed by the results, the constraint is very unlikely to be your engineers. Start with the five surfaces. The theory of your business is written there, and so is the reason your work moves, waits, learns, or decays.&lt;/p&gt;
&lt;p&gt;Engineering as a leadership system means two things, and I mean both. Engineering, the function, is a leadership system: its performance is produced by structures leaders own. And the leadership system is what needs engineering: your operating model is an engineered artefact, designed once, by someone, under assumptions that were true at the time. It deserves what any engineered system deserves. Instrumentation. Testing against reality. Maintenance. Refactoring when its assumptions expire.&lt;/p&gt;
&lt;p&gt;The engineering problem in your organisation was never the code. It is the company. Go engineer it.&lt;/p&gt;
&lt;p&gt;Everything above is diagnosis. It will let you recognise your own organisation and tell you where to look, but it deliberately stops short of two things. It does not give you the mechanism by which each of these structures produces its outcome, and it does not tell you what evidence would prove the argument wrong. Both matter, because a diagnosis you cannot falsify is only a strongly held opinion. That is the work the book does.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I wrote this alongside my session for The Future of Work in Scotland, on engineering as a leadership system and what lies past framework adoption. You can &lt;a href="https://engineering-leadership.hinshelwood.com/videos/engineering-as-a-leadership-system-future-of-work-scotland/"&gt;watch the session recording&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://leanpub.com/engineering-as-a-leadership-system" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Read &lt;em&gt;Engineering as a Leadership System&lt;/em&gt; on Leanpub&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;, where the ebook comes with free updates for life and you set the price. Paperback and Kindle are &lt;a href="https://mybook.to/EngLeadershipSystem" class="external-link" target="_blank" rel="noopener noreferrer"&gt;on Amazon&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/7i-xyblz5v0/share.png"/>
    </item>
    <item>
      <title>Why Most Companies Operating Models Fail in Dynamic Markets</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/why-most-companies-operating-models-fail-in-dynamic-markets/</link>
      <pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/why-most-companies-operating-models-fail-in-dynamic-markets/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Philosophy</category>
      <category>Leadership</category>
      <category>Product Development</category>
      <category>Engineering Excellence</category>
      <description>Most companies still operate using a Predictive Operating Model, built on the assumption that markets and work are stable and predictable, but this model creates massive waste and frustration in today’s dynamic, uncertain environments. In contrast, the Adaptive Operating Model enables organisations to succeed by structuring cross-functional, persistent teams around products or value streams, empowering decentralised decision-making, and focusing on outcomes through feedback loops and continuous adaptation. The defining image of waste in the Predictive Model is teams spending months on plans that become obsolete in weeks, while real customer needs shift beneath them. Lasting change requires “operating-model hygiene,” regularly questioning and removing outdated structures, and fostering a culture where people closest to the work shape systems and ways of working. Transitioning to an adaptive model is a deep shift in theory, structure, culture, and leadership, but it is necessary to avoid ongoing waste and thrive in fast-moving markets.</description>
      <content:encoded>&lt;p&gt;Most organisations today operate under a &lt;a href="https://engineering-leadership.hinshelwood.com/tags/predictive-operating-model/"&gt;Predictive Operating Model&lt;/a&gt; while competing in dynamic markets. This fundamental mismatch creates enormous waste, missed opportunities, and frustrated teams. Understanding why this model fails, and how an &lt;a href="https://engineering-leadership.hinshelwood.com/tags/adaptive-operating-model/"&gt;Adaptive Operating Model&lt;/a&gt; can replace it, is essential for any organisation seeking to deliver value effectively in the 21st century and beyond.&lt;/p&gt;

    
    

  

&lt;h2 id="defining-the-two-operating-models"&gt;Defining the Two Operating Models&lt;/h2&gt;
&lt;p&gt;Before we explore why organisations struggle, we must clearly define the two operating models at the heart of this discussion, and more importantly, understand the &lt;strong&gt;theory of the business&lt;/strong&gt; that underlies each one.&lt;/p&gt;
&lt;p&gt;Every organization operates on a theory of the business &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;: a set of assumptions about the environment, the organization&amp;rsquo;s mission, and what it must do to succeed. Understanding the theory of our business begins with two foundational questions: &lt;strong&gt;Who is the customer, and what does the customer value?&lt;/strong&gt; But it doesn&amp;rsquo;t end there. We must also understand the constraints we operate within, technological, regulatory, resource, competitive, and environmental factors that shape what&amp;rsquo;s possible. Without explicit answers to these questions, &amp;ldquo;value delivery&amp;rdquo; becomes an empty phrase.&lt;/p&gt;
&lt;p&gt;Each operating model embodies a fundamentally different theory of the business and makes fundamentally different assumptions about the customer, what they value, and the constraints within which value must be delivered.&lt;/p&gt;


  

&lt;h3 id="the-predictive-operating-model"&gt;The Predictive Operating Model&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Core assumption:&lt;/strong&gt;
The environment is predictable enough that organisations succeed through efficiency, standardisation, and control.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Underlying beliefs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Demand changes slowly.&lt;/li&gt;
&lt;li&gt;Work can be understood and specified upfront.&lt;/li&gt;
&lt;li&gt;Variability signals defects and should be minimised.&lt;/li&gt;
&lt;li&gt;Planning provides more certainty than adaptation.&lt;/li&gt;
&lt;li&gt;Performance improves through specialisation and hierarchical coordination.&lt;/li&gt;
&lt;li&gt;Management’s role is to optimise throughput and control deviation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Customer and value assumptions:&lt;/strong&gt;
Customers primarily want consistency, reliability, and quantity. Value comes from standardised output delivered at lower cost and with minimal variation. This model fits environments with long product cycles, slow-changing needs, and stable demand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How the model operates:&lt;/strong&gt;
The Predictive Operating Model is built on Taylorism and Scientific Management &lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;. It separates planning from execution, functions from one another, and thinking from doing. Decision-making flows vertically. Work is governed through predictive plans, fixed scope and resources, detailed procedures, stage gates, and individual accountability. Output is the dominant measure of performance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where it works:&lt;/strong&gt;
This theory of the business is not wrong. It performs exceptionally well when its assumptions hold, predictable environments, repetitive work, limited uncertainty, and markets where efficiency and consistency create advantage.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h3 id="the-adaptive-operating-model"&gt;The Adaptive Operating Model&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Core assumption:&lt;/strong&gt;
The environment is dynamic enough that organisations can only succeed through continuous learning, rapid adaptation, and proximity to customers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Underlying beliefs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Demand shifts frequently and unpredictably.&lt;/li&gt;
&lt;li&gt;Work cannot be fully known upfront; it emerges through discovery.&lt;/li&gt;
&lt;li&gt;Variability provides information rather than noise.&lt;/li&gt;
&lt;li&gt;Fast feedback is more reliable than detailed prediction.&lt;/li&gt;
&lt;li&gt;Performance comes from empowered, cross-functional teams.&lt;/li&gt;
&lt;li&gt;Clear, adaptive goals at every level provide direction without constraining discovery.&lt;/li&gt;
&lt;li&gt;Success requires continuous alignment to customers, stakeholders, and the environment.&lt;/li&gt;
&lt;li&gt;Management&amp;rsquo;s role is to design systems that enable learning, innovation, and quick adjustment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Customer and value assumptions:&lt;/strong&gt;
Customer needs are diverse, evolving, and context-dependent. Value is created by solving specific customer problems, not by producing generic output. Organisations win by learning faster than competitors, adapting continuously, and delivering outcomes that matter in the customer&amp;rsquo;s current context. Where the Predictive Operating Model optimises for volume and repeatability, the Adaptive Operating Model optimises for relevance, impact, and adaptability.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How organisations discover value:&lt;/strong&gt;
Customer value is discovered through direct observation, rapid experimentation, real usage data, and continuous engagement with real users. In dynamic markets, discovery is an ongoing activity rather than an occasional research exercise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How the model operates:&lt;/strong&gt;
The Agile Product Operating Model aligns with empiricism and continuous value delivery. It organises persistent cross-functional teams around products or value streams, decentralises decision-making to those closest to the work, and measures success through outcomes and customer impact. The model depends on transparency, inspection, and adaptation, supported by short feedback loops, modern engineering practices, and a commitment to technical excellence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where it works:&lt;/strong&gt;
This theory of the business succeeds when uncertainty is high, customer needs evolve rapidly, and competitive advantage comes from learning speed, responsiveness, and continuous alignment between what the organization delivers and what the market needs.&lt;/p&gt;


  

&lt;h3 id="why-this-distinction-matters"&gt;Why This Distinction Matters&lt;/h3&gt;
&lt;p&gt;These are not simply different management styles, nor is this a story of &amp;ldquo;modern vs traditional&amp;rdquo; or &amp;ldquo;agile vs waterfall.&amp;rdquo; The contrast is contextual, not moral. The Predictive Operating Model fails only when its assumptions stop matching reality, when the environment becomes too uncertain, too complex, and too fast-moving for prediction and control to work effectively.&lt;/p&gt;
&lt;p&gt;Understanding the theory behind each model clarifies why transition is so difficult: you&amp;rsquo;re not just changing processes, &lt;strong&gt;you&amp;rsquo;re challenging fundamental assumptions about how success happens&lt;/strong&gt;.&lt;/p&gt;


  

&lt;h2 id="the-predictive-operating-model-was-fit-for-stable-markets"&gt;The Predictive Operating Model Was Fit for Stable Markets&lt;/h2&gt;
&lt;p&gt;The Predictive Operating Model was not a mistake. It was brilliantly designed for its context, an environment where its theory of the business held true.&lt;/p&gt;
&lt;p&gt;During the Industrial Age, markets were stable and predictable. Demand grew steadily over long periods. Competition was limited. Products had decades-long lifecycles. In textiles, steel production, and large-scale manufacturing, success came from optimizing efficiency and driving down costs through standardization and economies of scale. The assumptions underlying the Predictive Operating Model, predictability, stability, knowable work, matched reality.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Frederick_Winslow_Taylor" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Frederick Winslow Taylor&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt; developed scientific management for exactly this environment, and &lt;a href="https://en.wikipedia.org/wiki/Henry_Gantt" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Henry Gantt&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt; popularised it. When work is repetitive and predictable, breaking it into specialized tasks and optimizing each step makes sense. When markets change slowly, detailed upfront planning works. When products remain unchanged for years, separation of planning from execution causes minimal waste. Variability could be treated as a problem to eliminate because the &amp;ldquo;right way&amp;rdquo; was relatively stable.&lt;/p&gt;
&lt;p&gt;The Predictive Operating Model delivered extraordinary results in stable markets. It built railways, scaled factories, and powered economic growth throughout the 20th century. The model succeeded because its theory of the business matched the actual environment: success truly did come through efficiency, standardization, and control in predictable work within predictable markets.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Reading about it is a start. Capability is the point.&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;I teach this. Not from someone else&amp;#39;s slide deck: from the client work I was doing last week. Short sessions, applied inside your real work, spread over weeks until it sticks.&lt;/p&gt;
        &lt;a href="https://courses.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="training" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;Find the right course or programme →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="why-the-predictive-operating-model-fails-in-dynamic-markets"&gt;Why the Predictive Operating Model Fails in Dynamic Markets&lt;/h2&gt;
&lt;p&gt;Markets began shifting toward greater complexity and volatility in the early 20th century, and this exposed the limits of the Predictive Operating Model. By the mid-20th century, Toyota demonstrated a different way of working that reintroduced people into the centre of the production system, giving teams direct responsibility for quality, problem-solving, and continuous improvement. The pace of change accelerated again in the 1970s with the microprocessor revolution, and by the 1990s the internet had fundamentally changed how quickly ideas spread and how rapidly markets evolve. Today, AI amplifies this acceleration further, providing tools that enable teams to process information, align with stakeholders, and deliver value at unprecedented speed and scale.&lt;/p&gt;
&lt;p&gt;Today, most markets are dynamic, customer needs change rapidly, technology enables new competitors to emerge quickly, and product lifecycles measure in months, not decades. Uncertainty is the norm, not the exception.&lt;/p&gt;
&lt;p&gt;But it&amp;rsquo;s not just market volatility that challenges the Predictive Operating Model. The broader &lt;strong&gt;environment&lt;/strong&gt; in which organizations operate has become fundamentally unstable. Regulatory changes like tariffs reshape entire supply chains overnight. Social movements like the remote work revolution force companies to reconsider workplace models, productivity assumptions, and organizational structures. Political shifts, elections, policy reversals, create cascading effects across industries. Economic shocks, pandemics, financial crises, disrupt assumptions that seemed solid months earlier. These environmental forces don&amp;rsquo;t just affect markets; they affect an organization&amp;rsquo;s &lt;strong&gt;ability to respond&lt;/strong&gt; to markets. The confluence of market dynamics and environmental volatility creates both the challenge and the opportunity: organizations that can sense and respond rapidly gain advantage, while those locked into rigid structures fall behind.&lt;/p&gt;
&lt;p&gt;The environment has shifted, but the Predictive Operating Model&amp;rsquo;s theory of the business has not. Organizations continue operating on assumptions of predictability in environments characterized by uncertainty, where both what customers need and how organizations can respond change continuously. This mismatch between theory and reality generates massive waste.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Planning waste&lt;/strong&gt; emerges when organisations invest months creating detailed plans that become obsolete within weeks. Requirements gathered at the start of a project no longer reflect market reality by the time delivery begins. Change control boards slow response to learning, turning agility into a bureaucratic exercise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decision-making waste&lt;/strong&gt; occurs when hierarchical approval chains delay action. By the time a decision escalates through management layers, the information is stale and the opportunity has passed. Teams closest to customers lack authority to respond to what they learn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Innovation waste&lt;/strong&gt; happens when rigid processes and risk-averse cultures kill experimentation. Ideas must fit into predetermined roadmaps. Small experiments that could provide fast feedback are blocked by governance processes designed for large capital investments. Teams cannot explore what customers actually need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Human potential waste&lt;/strong&gt; is perhaps the most painful. Talented people are treated as interchangeable resources, assigned to projects based on availability rather than capability or interest. Individual utilization metrics drive behaviors that undermine team collaboration. Separation of planning from execution means those doing the work cannot apply their insight to improve it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Market disconnect waste&lt;/strong&gt; grows as organisations become insulated from customer reality. Layers of management separate decision-makers from actual users. Success is measured by delivery of planned outputs, regardless of whether those outputs create value. Teams ship what was specified months ago, not what customers need today.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Predictive Operating Model operates at fundamentally the wrong speed for dynamic markets. While the market iterates daily, the organisation plans annually or bi-annually. While customer needs evolve continuously, the organisation delivers in large batches after months of work. This speed mismatch is not a minor friction, it is a structural incompatibility rooted in an obsolete theory of the business that no longer reflects how markets actually behave.&lt;/p&gt;


  

&lt;h2 id="the-adaptive-operating-model-enables-success-in-dynamic-markets"&gt;The Adaptive Operating Model Enables Success in Dynamic Markets&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://engineering-leadership.hinshelwood.com/tags/adaptive-operating-model/"&gt;Adaptive Operating Model&lt;/a&gt; structures organisations for speed, learning, and adaptation. Its theory of the business, that success comes through continuous learning and rapid adaptation in complex, changing environments, matches the reality most organizations face today.&lt;/p&gt;
&lt;p&gt;At its foundation lies &lt;strong&gt;empiricism&lt;/strong&gt;: the practice of making decisions based on observation and experiment rather than prediction and assumption. &lt;a href="https://engineering-leadership.hinshelwood.com/categories/scrum/"&gt;Scrum&lt;/a&gt;, as a social technology, makes work transparent, creates regular inspection points, and enables rapid adaptation based on what is learned &lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;. &lt;a href="https://engineering-leadership.hinshelwood.com/categories/kanban/"&gt;Kanban&lt;/a&gt;, as an observability pattern, makes workflow visible and measures actual delivery performance, enabling teams to see and improve their systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Decentralization&lt;/strong&gt; is essential, not optional. &lt;a href="https://en.wikipedia.org/wiki/Mary_Parker_Follett" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Mary Parker Follett&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt; recognized nearly a century ago that effective organisations distribute authority to where knowledge resides &lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;. In dynamic markets, that knowledge lives with teams close to customers and technology, not with executives insulated from both. Decentralization enables fast decisions based on current information. It eliminates escalation delays and management bottlenecks that plague hierarchical structures. However, decentralization only works when goals are clear and adaptive at every organizational level, from company strategy through product goals to sprint objectives. This clarity of purpose proves challenging for most companies, particularly because unlike the fixed targets of industrial planning, these goals must evolve as learning occurs while maintaining coherent direction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cross-functional, persistent teams&lt;/strong&gt; form the organisational structure. Each team possesses all skills needed to deliver value without dependencies on other teams or handoffs to specialized functions. Teams stay together over time, building deep capability and psychological safety. They own outcomes, customer value and business impact, not just outputs like features or story points. Today&amp;rsquo;s teams increasingly include AI team members augmenting human capabilities. Modern AI tools now make it possible to coordinate these teams effectively at scale, maintaining clear alignment with customers and stakeholders while preserving team autonomy and speed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fast feedback loops&lt;/strong&gt; replace predictive planning. Teams deliver working software frequently, ideally continuously, and observe real customer behaviors. Product Managers make decisions based on actual usage data and customer feedback rather than assumptions documented months earlier. Sprint Goals provide coherence and focus while allowing teams to adapt their approach as they learn &lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;. Service Level Expectations establish predictable flow without requiring detailed estimates.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Technical excellence&lt;/strong&gt; is mandatory, not aspirational. Teams must practice Continuous Integration and Continuous Delivery as Kent Beck and Jez Humble have taught us &lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;. Automated testing provides the safety to move quickly. Infrastructure as Code enables rapid provisioning and recovery. Monitoring and observability reveal how systems behave in production. AI-assisted development accelerates capability building while maintaining quality and enabling teams to focus on higher-value problem-solving. These practices are not tools or processes, they embody a DevOps ethos that breaks down barriers between building and operating software.&lt;/p&gt;
&lt;p&gt;The Adaptive Operating Model matches the speed and uncertainty of dynamic markets. It structures organisations to learn and adapt continuously rather than predict and control.&lt;/p&gt;


  

&lt;h2 id="operating-model-hygiene-why-organizations-regress"&gt;Operating-Model Hygiene: Why Organizations Regress&lt;/h2&gt;
&lt;p&gt;Many organisations transition away from hierarchical structures only to drift back over time. Start-ups begin as nimble network organisations with direct communication and fast decisions &lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt; [^Laloux]. As they grow, departments emerge. Managers accumulate authority. Planning processes formalize. Approval chains lengthen. Within a few years, the organisation has recreated the Predictive Operating Model.&lt;/p&gt;
&lt;p&gt;This regression is predictable. The Predictive Operating Model&amp;rsquo;s theory of the business, control through prediction and standardization, is deeply familiar. Most leaders experienced it throughout their careers. Under pressure, people default to known patterns. When faced with coordination challenges, the instinct is to add management layers. When facing uncertainty, the reflex is to demand more detailed plans. The old theory reasserts itself because it feels safer, even when it has become obsolete.&lt;/p&gt;
&lt;p&gt;Organizations build up what we might call &lt;strong&gt;operating-model cruft&lt;/strong&gt;, accumulated structures, processes, and behaviors that no longer serve the current context but resist removal. A new approval process gets added to prevent a single failure. It never gets removed when the risk passes. A management layer forms to coordinate between teams. It persists even after teams become more self-sufficient. Individual performance reviews drive behaviors that undermine team collaboration, but changing them feels too risky.&lt;/p&gt;
&lt;p&gt;Without deliberate &lt;strong&gt;operating-model hygiene&lt;/strong&gt;, the continuous practice of examining and removing organisational structures, processes, and behaviors that no longer serve their purpose, organisations inevitably regress. This hygiene means regularly asking Drucker&amp;rsquo;s fundamental question: &amp;ldquo;If we were not doing this today, would we start?&amp;rdquo; &lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt; If the answer is no, the practice must be abandoned. Does this approval process still serve us? Does this management layer enable or impede fast feedback? Does this metric distribute authority or concentrate it? Does this structure build team capability or create dependencies?&lt;/p&gt;
&lt;p&gt;Operating-model hygiene requires &lt;strong&gt;refactoring organisational structures&lt;/strong&gt; just as we refactor code. Remove processes that no longer serve their purpose. Eliminate management layers that have become bottlenecks. Disband cross-functional coordinating bodies that exist only because teams lack necessary skills. Challenge individual metrics that undermine collaboration.&lt;/p&gt;
&lt;p&gt;But Drucker taught that abandonment alone is insufficient, it creates capacity, not capability. Organizations must pair &lt;strong&gt;systematic abandonment&lt;/strong&gt; with &lt;strong&gt;purposeful innovation&lt;/strong&gt;: the disciplined creation of new practices that support the current mission. This means building technical capabilities like Continuous Delivery and automated testing, establishing outcome-focused management practices, creating persistent cross-functional team structures, developing routines for empirical discovery and rapid experimentation, and investing in skills that enable adaptability. Without purposeful innovation to replace what is removed, organizations drift.&lt;/p&gt;
&lt;p&gt;This work never ends. Organizations exist in constant tension between forces that drive toward hierarchy and control and forces that enable distributed decision-making and adaptation. Effective operating models depend on continuously pruning what no longer works while intentionally building what the future requires. Without this dual discipline, the Predictive Operating Model reasserts itself.&lt;/p&gt;


  

&lt;h2 id="making-the-transition"&gt;Making the Transition&lt;/h2&gt;
&lt;p&gt;Transitioning from a &lt;a href="https://engineering-leadership.hinshelwood.com/tags/predictive-operating-model/"&gt;Predictive Operating Model&lt;/a&gt; to an &lt;a href="https://engineering-leadership.hinshelwood.com/tags/adaptive-operating-model/"&gt;Adaptive Operating Model&lt;/a&gt; is not a simple process change. It requires fundamentally changing your organization&amp;rsquo;s theory of the business, the core assumptions about how success happens. This demands shifts in structure, culture, measurement, and leadership that reflect the new theory.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Structure must change&lt;/strong&gt; to persistent, cross-functional teams aligned to value streams or products. Functional departments become communities of practice rather than organisational silos. Project teams and resource pools must go, they are incompatible with the Agile Product Operating Model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Measurement must change&lt;/strong&gt; from output to outcome. Evidence-Based Management provides the framework: Current Value, Unrealized Value, Time to Market, and Ability to Innovate. These measures focus on value delivery and system capability, not individual productivity or task completion. Velocity, utilization rates, and other behaviors-distorting metrics must be abandoned &lt;sup id="fnref:9"&gt;&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref"&gt;9&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Leadership must change&lt;/strong&gt; from command-and-control to system stewardship. Drucker defined management through five responsibilities: setting objectives, organizing work, motivating people, measuring performance, and developing people &lt;sup id="fnref:10"&gt;&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref"&gt;10&lt;/a&gt;&lt;/sup&gt;. Under the Predictive Operating Model, managers set objectives through prediction, organize work through functional silos, motivate through supervision and utilization targets, measure output and efficiency, and develop narrow specialization. The Adaptive Operating Model requires different interpretations: managers define clear goals and constraints rather than detailed plans, design persistent cross-functional teams as the primary organizational structure, create conditions for mastery and autonomy by removing impediments, measure outcomes and system capability through Evidence-Based Management, and build broad adaptable capability through continuous development &lt;sup id="fnref:11"&gt;&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref"&gt;11&lt;/a&gt;&lt;/sup&gt;. Critically, leaders must maintain goal clarity throughout the organization while allowing those goals to evolve with learning, a discipline most companies find difficult because it requires balancing stability of direction with flexibility of approach. Without explicitly redefining the manager&amp;rsquo;s role, organizations default to Predictive Operating Model behaviors regardless of their stated intentions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Culture must change&lt;/strong&gt; to support transparency, experimentation, and psychological safety. Teams must be able to surface problems without fear of blame. Failure in controlled experiments must be recognized as learning, not punished as incompetence. This cultural shift takes time and consistent leadership behaviors.&lt;/p&gt;
&lt;p&gt;Many organisations attempt these changes incrementally, hoping to avoid disruption. This rarely succeeds. The Predictive Operating Model is coherent, its pieces reinforce each other because they all flow from the same theory of the business. Individual performance reviews support functional silos. Functional silos necessitate project structures. Project structures require resource allocation and individual utilization measurement. These elements form an interconnected system, all built on assumptions of predictability and control.&lt;/p&gt;
&lt;p&gt;Changing one element while preserving others creates internal contradictions that prevent real transformation. Organizations end up with &amp;ldquo;Agile teams&amp;rdquo; reporting through hierarchical management structures, measured by predictive metrics, organized into temporary project assignments. This is not transition, it is the Predictive Operating Model with different terminology. The underlying theory of the business remains unchanged.&lt;/p&gt;
&lt;p&gt;Effective transition requires system-level change. The organisation must commit to restructuring around products, establishing cross-functional teams, shifting to outcome-based measurement, and supporting leaders who steward systems rather than control work. This takes months of focused effort, not years of gradual adjustment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenSpace Agile provides a mechanism for system-level change without multi-year programmes or imposed transformation&lt;/strong&gt; &lt;sup id="fnref:12"&gt;&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref"&gt;12&lt;/a&gt;&lt;/sup&gt;. Leaders define outcomes and constraints, and the organisation self-organises to design and implement the changes. The people who do the work shape the operating model, which increases ownership, alignment, and speed. A short cadence of Open Space events creates the forum for surfacing problems, proposing solutions, and committing to experiments that reflect the realities of the work.&lt;/p&gt;
&lt;p&gt;These experiments run in fast cycles with clear feedback, allowing the organisation to learn what works in its context rather than copying someone else’s playbook. Effective changes get amplified, ineffective ones are dropped, and the operating model evolves through participation rather than prescription. This enables meaningful organisational shifts in months by removing the bottlenecks of traditional change management and allowing those closest to the work to drive improvement.&lt;/p&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="call-to-action-redesign-your-operating-model"&gt;Call to Action: Redesign Your Operating Model&lt;/h2&gt;
&lt;p&gt;If your organisation competes in dynamic markets, and most do, the Predictive Operating Model is costing you. Every day. Wasted effort. Missed opportunities. Frustrated teams. Lost customers.&lt;/p&gt;
&lt;p&gt;The question is not whether to change, but how quickly you can change.&lt;/p&gt;
&lt;p&gt;Start by acknowledging the mismatch. Your operating model embodies a theory of the business designed for different conditions. It is not bad, it is unfit for current context. The assumptions embedded in your structures, processes, and leadership behaviors were built for a world that no longer exists.&lt;/p&gt;
&lt;p&gt;Commit to operating-model redesign built on the &lt;a href="https://engineering-leadership.hinshelwood.com/tags/adaptive-operating-model/"&gt;Adaptive Operating Model&lt;/a&gt;. Establish clear, adaptive goals at every level that provide direction without constraining discovery. Structure persistent, cross-functional teams around value streams. Distribute decision-making authority to those teams. Measure outcomes and system capability, not outputs and individual activity. Develop leaders who design systems rather than control work. Organizations delivering value through products can implement this through specialized approaches like the &lt;a href="https://engineering-leadership.hinshelwood.com/tags/product-operating-model/"&gt;Product Operating Model&lt;/a&gt; or &lt;a href="https://engineering-leadership.hinshelwood.com/tags/agile-product-operating-model/"&gt;Agile Product Operating Model&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let the organisation shape its own transition. OpenSpace Agile provides the structure: you set the direction, your people design the path through rapid experiments and continuous learning &lt;sup id="fnref1:12"&gt;&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref"&gt;12&lt;/a&gt;&lt;/sup&gt;. This creates change in months, not years.&lt;/p&gt;
&lt;p&gt;Implement continuous operating-model hygiene. Regularly examine structures, processes, and behaviors. Remove what no longer serves. Challenge what creates dependencies or delays feedback. Resist the gravitational pull toward hierarchy and control.&lt;/p&gt;
&lt;p&gt;This is not easy work. But it is necessary work. The Predictive Operating Model&amp;rsquo;s theory of the business, success through prediction and control in stable environments, cannot deliver value effectively when environments are uncertain and fast-changing. Organizations that complete this transition, adopting a theory of the business built on learning and adaptation, will thrive. Those that don&amp;rsquo;t will continue generating waste while wondering why their &amp;ldquo;Agile transformation&amp;rdquo; failed.&lt;/p&gt;
&lt;p&gt;The choice is yours: maintain an operating model built on assumptions about markets that no longer exist, or redesign your organisation around a theory of the business that matches the reality you face today.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is one structure or process in your organisation that generates waste because it assumes stable, predictable work, and what would operating-model hygiene lead you to change?&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;The Essential Drucker by Peter Drucker (2001) - collection including &amp;ldquo;The Theory of the Business&amp;rdquo; essay&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;The Principles of Scientific Management by Frederick Winslow Taylor (1911) - foundational work on industrial management&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;The Scrum Guide by Ken Schwaber and Jeff Sutherland&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Mary Parker Follett&amp;rsquo;s work on organisational democracy and distributed authority&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;The New New Product Development Game by Hirotaka Takeuchi and Ikujiro Nonaka&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;Continuous Delivery by Jez Humble and David Farley&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:7"&gt;
&lt;p&gt;Organize for Complexity: How to Get Life Back Into Work to Build the High-Performance Organization by Niels Pflaeging and Pia Steinmann&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:8"&gt;
&lt;p&gt;Management: Tasks, Responsibilities, Practices by Peter Drucker (1973) - comprehensive framework for management functions and organizational design&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:9"&gt;
&lt;p&gt;This Is Beyond Budgeting: A Guide to More Adaptive and Human Organizations by Bjarte Bogsnes&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:10"&gt;
&lt;p&gt;The Practice of Management by Peter Drucker (1954) - introduces Management by Objectives and the theory of the business&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:11"&gt;
&lt;p&gt;High Output Management by Andy Grove (1983) - on system thinking and management leverage&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:12"&gt;
&lt;p&gt;OpenSpace Agility by Daniel Mezick, Harold Shinsato, and others - a framework for organizational change through self-organization, Open Space events, and rapid experimentation&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:12" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/7nxtkmu_f04/share.png"/>
    </item>
    <item>
      <title>Telling People What to Do Is Not Leadership. It’s a Failure of System Design</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/telling-people-what-to-do-is-not-leadership-it-s-a-failure-of-system-design/</link>
      <pubDate>Mon, 04 Aug 2025 09:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/telling-people-what-to-do-is-not-leadership-it-s-a-failure-of-system-design/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Practice</category>
      <category>Product Development</category>
      <category>Leadership</category>
      <category>Engineering Excellence</category>
      <description>Measuring leadership by a manager’s number of decisions signals a broken system, not effective management. Telling people exactly what to do reflects a Taylorist mindset that undermines autonomy, creates bottlenecks, and wastes value in complex, cognitive work like software development. Real leadership means creating systems where teams pull work, operate against clear goals, and are accountable for outcomes without micromanagement. For example, frequent delivery to production—shipping valuable increments every Sprint—creates fast feedback, trust, and continuous improvement. Managers should focus on designing systems that support flow, self-management, and evidence-based decisions, then get out of the way; otherwise, assigning tasks is just an expensive workaround for deeper organisational design failures.</description>
      <content:encoded>&lt;p&gt;If your organisation still measures leadership by how many decisions a manager makes, you are not leading. You are leaking value.&lt;/p&gt;
&lt;p&gt;There is a stubborn, Taylorist holdover in many companies, the belief that work gets done when someone is told exactly what to do. The assumption is that certainty comes from control, clarity comes from instruction, and delivery comes from compliance.&lt;/p&gt;
&lt;p&gt;It doesn’t.&lt;/p&gt;
&lt;p&gt;In complex systems, command-and-control is not just ineffective, it’s a bottleneck. The moment you start “assigning tasks,” you’ve already failed to design a system that enables flow, autonomy, and accountability.&lt;/p&gt;

    
    

  

&lt;h2 id="you-dont-need-to-tell-people-what-to-do-in-a-well-designed-system"&gt;You Don’t Need to Tell People What to Do in a Well-Designed System&lt;/h2&gt;
&lt;p&gt;In organisations grounded in empirical process control, leadership isn’t about orchestrating every move. It’s about creating the conditions where teams can inspect, adapt, and deliver value continuously.&lt;/p&gt;
&lt;p&gt;Modern management is not about allocating tasks. It’s about removing the need for anyone to allocate tasks in the first place.&lt;/p&gt;
&lt;p&gt;When teams are working against clear goals, with shared understanding, visibility of work-in-progress, and constraints that enable, not restrict, decision-making, they don’t need instructions. They need clarity, context, and trust.&lt;/p&gt;
&lt;p&gt;Great systems aren’t static. They evolve through structured feedback loops, Sprint Reviews, Retrospectives, operational telemetry, and small experiments. Inspection and adaptation are what make systems empirical, not just idealistic.&lt;/p&gt;


  

&lt;h2 id="taylorism-is-for-factories-you-run-a-cognitive-organisation"&gt;Taylorism Is for Factories. You Run a Cognitive Organisation.&lt;/h2&gt;
&lt;p&gt;If you’re still managing by job title, project plans, and hour-counting, you’re not running a professional organisation. You’re running a factory LARP. The playbook you’re using was written for physical labour and linear processes. Not software. Not services. Not strategy.&lt;/p&gt;
&lt;p&gt;And yet, I still see it everywhere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Product Managers dictating solutions instead of problems.&lt;/li&gt;
&lt;li&gt;“Team leads” reviewing every commit instead of enabling continuous integration.&lt;/li&gt;
&lt;li&gt;Managers handing out tasks like Halloween sweets and then wondering why delivery is unpredictable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You don’t need more control. You need a better system.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="leadership-is-creating-systems-that-dont-need-you"&gt;Leadership Is Creating Systems That Don’t Need You&lt;/h2&gt;
&lt;p&gt;Real leadership isn’t about your presence. It’s about what happens in your absence.&lt;/p&gt;
&lt;p&gt;This is the ethos behind Scrum, Kanban, and DevOps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scrum&lt;/strong&gt; gives you a social technology for solving complex problems adaptively.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kanban&lt;/strong&gt; gives you observability of the value stream and how work flows, or doesn’t.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DevOps&lt;/strong&gt; ensures the loop from idea to value is short, safe, and inspectable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together, they form a coherent strategy for managing systems of work without resorting to micromanagement. When teams understand their constraints, have the tools to respond to change, and are accountable for outcomes, not just activity, they no longer need to be told what to do.&lt;/p&gt;
&lt;p&gt;Speed is not the goal, but it is a critical capability. In a competitive environment, reducing time-to-market isn’t just about efficiency, it’s how organisations learn faster, respond sooner, and stay ahead of disruption. For a deeper dive into why frequent delivery is a competitive advantage, read &lt;a href="https://engineering-leadership.hinshelwood.com/articles/there-is-no-place-like-production/"&gt;There Is No Place Like Production&lt;/a&gt;.&lt;/p&gt;


  

&lt;h2 id="telling-people-what-to-do-is-an-expensive-workaround"&gt;Telling People What to Do is an Expensive Workaround&lt;/h2&gt;
&lt;p&gt;Every time you assign a task manually, you’re compensating for a failure upstream:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lack of a clear Product Goal.&lt;/li&gt;
&lt;li&gt;Incomplete or incoherent Backlog.&lt;/li&gt;
&lt;li&gt;Pushing work into the system until it overloads&lt;/li&gt;
&lt;li&gt;No service-level expectations.&lt;/li&gt;
&lt;li&gt;No WIP limits.&lt;/li&gt;
&lt;li&gt;No autonomy in the team.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You’re treating the symptom instead of fixing the system.&lt;/p&gt;
&lt;p&gt;And let’s be honest, if you have to tell people what to do, why did you hire professionals?&lt;/p&gt;


  

&lt;h2 id="design-the-system-get-out-of-the-way"&gt;Design the System. Get Out of the Way.&lt;/h2&gt;
&lt;p&gt;If your team is waiting for instructions, your system has no intelligence. If you’re managing to utilisation, your system has no flow. If your engineers are busy but not delivering, your system has no value.&lt;/p&gt;
&lt;p&gt;Stop focusing on the people. Start focusing on the system.&lt;/p&gt;
&lt;p&gt;Scrum is not about rituals. DevOps is not about pipelines. These are practices that expose the health of your system. And if your system requires constant intervention, it’s not a system. It’s a mess.&lt;/p&gt;
&lt;p&gt;So stop telling people what to do. Instead, design a system where people know what to do, and have the freedom, clarity, and support to do it. Here are 10 things that you can do to augment your system:&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Reading about it is a start. Capability is the point.&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;I teach this. Not from someone else&amp;#39;s slide deck: from the client work I was doing last week. Short sessions, applied inside your real work, spread over weeks until it sticks.&lt;/p&gt;
        &lt;a href="https://courses.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="training" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;Find the right course or programme →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h3 id="1-establish-intermediate--tactical-goals"&gt;1. &lt;strong&gt;Establish Intermediate &amp;amp; Tactical Goals&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Without goals, people default to following orders or invent their own. Goals create the shared context necessary for autonomous decision-making and are the foundation for meaningful self-management.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; Define a clear Intermediate Goal (Product Goal) that articulates a compelling direction over multiple deliveries, and Tactical Goals (Sprint Goals) for each delivery that anchor short-term decisions in purpose.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;How&lt;/strong&gt;: Use Sprint Planning to make the Sprint Goal explicit and transparent. Ensure the Product Goal is visible in the content and context of the Product Backlog and re-validated during each Sprint Review. Use our &lt;a href="https://engineering-leadership.hinshelwood.com/recipes/sprint-planning-recipe/"&gt;Sprint Planning Recipe&lt;/a&gt; to get started and then adapt it as needed. Write Sprint Goals as meaningful, outcome-focused objectives that can be met incrementally. If every Sprint ends with &amp;ldquo;we worked on some tickets,&amp;rdquo; then your Product Goal is either missing, or worse, meaningless.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: Without shared goals, teams wait for direction. With them, they can negotiate scope, prioritise wisely, and confidently navigate complexity. For more depth read: &lt;a href="https://a.co/d/aZwT7jy" class="external-link" target="_blank" rel="noopener noreferrer"&gt;The Goal – Eliyahu M. Goldratt &amp;amp; Jeff Cox&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;, &lt;a href="https://a.co/d/jbqOFcX" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Measure What Matters – John Doerr&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;, &lt;a href="https://engineering-leadership.hinshelwood.com/guides/evidence-based-management-guide/"&gt;Evidence-based Management Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Too often, the &lt;a href="https://engineering-leadership.hinshelwood.com/tags/product-backlog/"&gt;Product Backlog&lt;/a&gt; becomes a list of features instead of a narrative arc that advances a meaningful goal. When you write backlog items without a Product Goal, you are setting the team up to deliver outputs instead of outcomes.&lt;/p&gt;
&lt;p&gt;Product Goals are not aspirational fluff. They are intermediate strategic goals that define value in a complex system. When absent, the result is drift. When present, they unlock focus, flow, and accountability.&lt;/p&gt;


  

&lt;h3 id="2-enable-self-management-with-constraints"&gt;2. &lt;strong&gt;Enable Self-Management with Constraints&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Agency without boundaries is chaos. But command-and-control masquerading as clarity is just as destructive. Real autonomy comes from deliberate constraints that define how freedom is expressed, not whether it exists.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Clarify and operationalise constraints through an explicit Definition of Workflow, and clear organisational boundaries of responsibility and accountability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Codify these boundaries collaboratively with the team; it&amp;rsquo;s their workflow. Then, create a Definition of Workflow that defines the way that work flows through their system. Don&amp;rsquo;t worry about every edge case; create based on the common case of work. This DoW forms part of your Use Working Agreements that express how the team will self-manage within organisational expectations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: Teams can’t be accountable for outcomes if they’re not authorised to choose how they deliver. But without boundaries, chaos replaces clarity. Autonomy is not abdication, it’s engineered through deliberate, negotiated constraints.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Professionalism is rooted in clear, shared expectations, delivered through disapline. A team that understands how work flows, where decisions are made, and what quality signals readiness at each stage doesn&amp;rsquo;t need micromanagement, they already operate within a system that tells them what excellence looks like.&lt;/p&gt;


  

&lt;h3 id="3-stop-misusing-estimation-start-right-sizing"&gt;3. &lt;strong&gt;Stop Misusing Estimation, Start Right-Sizing&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Telling people what to build, in what order, and how long it should take kills creativity and accountability. It fragments ownership and encourages compliance over curiosity. Worse, it masks the real problem: your system doesn&amp;rsquo;t support flow, so you fall back to control.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Move away from abstract estimation rituals and fixed task assignments. Instead, introduce right-sizing practices, splitting work based on historical flow metrics like cycle time and throughput and Scatter Plot analysis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: As a team, regularly review a scatter plot of your cycle times and investigate outliers to deepen your understanding of what &amp;lsquo;small enough&amp;rsquo; looks like. Use that insight to reduce batch sizes where possible and provide stakeholder clarity where constraints exist. Visualise blocked or ageing work daily to keep flow visible, and use backlog refinement to slice work for predictability, not precision. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: The issue isn&amp;rsquo;t estimation itself, it&amp;rsquo;s turning estimation into something it was never meant to be. Right-sizing is still estimation, just done in a simpler and more honest way. When teams right-size work to match their flow and capacity, they ship more consistently, adapt faster, and own their commitments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Traditional estimation is often misused as a proxy for distrust or certainty in uncertain domains. When you right-size instead, grounding delivery in data and observability, you shift from permission-based planning to capability-based planning. That&amp;rsquo;s not just more efficient. It&amp;rsquo;s fundamentally more respectful of the people doing the work.&lt;/p&gt;


  

&lt;h3 id="4-introduce-pull-systems-with-wip-limits"&gt;4. &lt;strong&gt;Introduce Pull Systems with WIP Limits&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Introducing a work-limited pull system is key to &lt;a href="https://engineering-leadership.hinshelwood.com/articles/rethinking-capacity-planning/"&gt;understanding capacity and planning for a successful delivery&lt;/a&gt;. Push systems undermine accountability, responsibility, and ownership by enforcing direction from above. When teams have work pushed onto them without control or influence over the timing or readiness, their sense of ownership evaporates. This loss of autonomy directly stifles self-organisation and self-management, leaving teams disempowered and reactive.&lt;/p&gt;
&lt;p&gt;Push systems flood teams, forcing them into reactive firefighting and constant context-switching. The focus becomes merely &amp;ldquo;showing progress&amp;rdquo; rather than genuinely delivering value. This model not only overwhelms teams but also actively erodes their ability to take responsibility for outcomes, as decisions are stripped away from those who do the work.&lt;/p&gt;
&lt;p&gt;In contrast, pull systems enhance accountability and ownership by starting with readiness. Teams pull work into their systems only when they have the capacity, when tasks are right-sized, and when the system is genuinely ready to support the flow of work.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Implement explicit WIP limits and establish pull-based workflows at strategic, product, and team levels. Start with clear team-level WIP limits and a robust Definition of Workflow to outline readiness. Expand this discipline to portfolio and category levels, ensuring system-level flow is protected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Regularly inspect cumulative flow diagrams, throughput run charts, and ageing WIP. Use these insights to identify bottlenecks and overloaded stages. Rising ageing WIP is your signal that the system has shifted back to push dynamics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: Genuine ownership and accountability flourish when teams have autonomy over their workflow, responding to actual system conditions rather than artificial deadlines. This approach enhances predictability, reduces burnout, and creates sustainable delivery. Deadlines are met naturally as work is continuously delivered, not forced through the system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WIP limits are not about control, they are about providing meaningful feedback. They indicate when your system reaches capacity, signaling the team to focus and prioritise effectively. Pull-based systems are essential for sustainable, predictable value delivery. If your teams constantly feel overwhelmed and lack autonomy, it’s time to recognise this as a systemic issue: your organisation is pushing rather than enabling.&lt;/p&gt;


  

&lt;h3 id="5-use-evidence-based-management-practices"&gt;5. &lt;strong&gt;Use evidence-based management practices&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Measuring hours worked or tasks completed tells you nothing about whether the work mattered. Effort is not value. Activity is not improvement. Velocity is not progress.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Replace effort-based reporting with outcome-oriented metrics. Use the four key dimensions of Evidence-Based Management, &lt;a href="https://engineering-leadership.hinshelwood.com/tags/time-to-market/"&gt;Time to Market (TTM)&lt;/a&gt;, Current Value (CV), &lt;a href="https://engineering-leadership.hinshelwood.com/tags/ability-to-innovate/"&gt;Ability to Innovate (A2I)&lt;/a&gt;, and Unrealised Value (UV), to inspect delivery capability and guide improvement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Start simple. Use your existing delivery tools (like Azure DevOps or Jira) to extract basic data, Cycle Time, Throughput, and Lead Time. These give you data for Time to Market (TTM). For Current Value (CV), talk to customer support, review NPS data, or run basic satisfaction surveys. To identify Unrealised Value (UV), review abandoned roadmap items, market research, or competitor offerings. For Ability to Innovate (A2I), look at how often your work is blocked, how long code sits before being merged, and how frequently you ship. Use this data in Sprint Reviews and Retrospectives to track system health, not individual effort. Bring these insights into planning conversations to anchor decisions in reality, not assumptions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: Teams that understand the outcomes of their work, how long it takes, how it impacts customers, what’s left unrealised, and where they’re blocked, are far more likely to own both the delivery and the improvement. If you want teams to care about the product, show them how it performs. Without evidence, we fall back to opinion, status, and hierarchy. With evidence, we can act with purpose.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Evidence-Based Management replaces arbitrary judgement with actionable data. It doesn’t just measure outcomes, it enables accountability for them.&lt;/p&gt;


  

&lt;h3 id="6-deploy-frequently-to-production"&gt;6. &lt;strong&gt;Deploy Frequently to Production&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Nothing signals trust like letting teams ship. But more than that, frequent delivery to production is the fastest path to feedback, accountability, and customer impact.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Enable teams to release a usable, production-grade increment every Sprint, including the first. This doesn’t mean a perfect product, it means a valuable step forward, hardened enough to be used.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Establish CI/CD pipelines with automated quality gates (unit tests, integration checks, security scanning). Use feature toggles, dark launches, and audience-based rollout to mitigate risk. Set a working agreement that “done” means releasable. If it’s not going to production, it’s not done.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: When teams ship regularly, feedback cycles shorten, risk is reduced, and decision latency collapses. They see real impact and adapt quickly. You stop debating hypotheticals and start responding to evidence. Most importantly, you stop managing perception and start managing product.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There’s &lt;a href="https://engineering-leadership.hinshelwood.com/articles/there-is-no-place-like-production/"&gt;no place like production&lt;/a&gt;. Everything else is theatre.&lt;/p&gt;


  

&lt;h3 id="7-invest-in-professional-scrum-masters--product-owners"&gt;7. &lt;strong&gt;Invest in Professional Scrum Masters &amp;amp; Product Owners&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Most Scrum Masters and Product Owners are either appointed without preparation or promoted into the role without development. The result? They don’t coach, guide, or lead, they coordinate. And when those roles fail to create clarity and enable delivery, managers step in to fill the vacuum with control.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Hire or develop Scrum Masters and Product Owners who demonstrate competence across three domains: technical fluency, business acumen, and organisational change leadership.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Provide structured learning journeys that combine high quality training with hands-on mentorship from experienced practitioners. Assess candidates or internal staff on their ability to enable delivery systems, not just facilitate meetings or write stories. Require evidence of contribution to system improvement, cross-team alignment, and customer impact.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: Competent SMs and POs anchor the Scrum Team in purpose and delivery. The Scrum Master builds capability, encourages flow, and fosters empiricism, and modern engineering practices. The &lt;a href="https://engineering-leadership.hinshelwood.com/articles/hiring-a-professional-product-owner/"&gt;Product Owner sets the tone for product leadership&lt;/a&gt; and modern product development practices. When these roles function well, the team no longer needs daily direction from management, because the system is aligned, and delivery is deliberate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scrum Masters are not passive facilitators. They are system stewards, accountable for enabling transparency, optimising flow, and coaching both teams and managers to operate within an empirical system. If they’re not improving the system, they’re part of the dysfunction. If you want to understand what separates a competent Scrum Master from a glorified coordinator, read &lt;a href="https://engineering-leadership.hinshelwood.com/articles/why-most-scrum-masters-are-failing-and-what-they-should-know/"&gt;Why Most Scrum Masters Are Failing, and What They Should Know&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem isn’t Scrum. The problem is that we keep filling these roles with &lt;a href="https://engineering-leadership.hinshelwood.com/articles/why-most-scrum-masters-are-failing-and-what-they-should-know/"&gt;people who aren’t ready&lt;/a&gt; or worse never will be. Raise the bar, or get out of the way.&lt;/p&gt;


  

&lt;h3 id="8-collapse-siloed-structures"&gt;8. &lt;strong&gt;Collapse Siloed Structures&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Separate roles create handoffs, and &lt;a href="https://engineering-leadership.hinshelwood.com/articles/stop-building-silos-start-building-systems/"&gt;handoffs create dependency&lt;/a&gt;. Dependency creates delay. Delay kills flow.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Form cross-functional, preferably longer-lived teams with full accountability for discovery, delivery, and validation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Restructure teams so they include the skills necessary to take work from idea to production: business analysis, UX, engineering, QA, and operations. Co-locate (physically or virtually) these disciplines inside a single team and ensure they share the same Sprint cadence, goals, and delivery responsibility. Use the Definition of Workflow to clarify interaction points and shared responsibilities within the team and eliminate those outside it. Audit each department and reassign specialists to teams where they can contribute continuously, not sporadically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: You can’t ask for autonomy while forcing work through stage-gated departments. Real teams don&amp;rsquo;t wait for someone else to finish, they swarm. They co-create. They ship. When you eliminate silos, you eliminate the excuses that justify command-and-control. What’s left is a team that owns its outcomes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Structure should follow flow, not function. Organise around value creation, not roles. That’s how you collapse the gap between intent and impact.&lt;/p&gt;


  

&lt;h3 id="9-use-sprint-reviews-for-stakeholder-alignment"&gt;9. &lt;strong&gt;Use Sprint Reviews for Stakeholder Alignment&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://engineering-leadership.hinshelwood.com/tags/sprint-review/"&gt;Sprint Reviews&lt;/a&gt; aren’t demos. They’re not a PowerPoint parade or a status update. They are working sessions with stakeholders, strategic checkpoints to make decisions based on what we’ve learned.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Use Sprint Reviews to inspect the working increment, review delivery data (T2M, CV), gather market feedback, and adapt the Product Backlog collaboratively with stakeholders present.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Set the expectation that each Sprint Review includes real stakeholders, not just internal roles. Open with a restatement of the Product Goal and the Sprint Goal. Show working software, not slides. Invite feedback that informs priority and scope decisions. Use evidence, customer feedback, analytics, cycle time charts, to frame the discussion. End with a shared agreement on what’s next and update the Product Backlog live.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: Involving stakeholders early and often surfaces assumptions, shortens feedback loops, and reduces the need for managers to chase status. It shifts product delivery from projection to inspection. When everyone sees the same data and the same increment, there’s no room for spin. There’s just the truth, and the next step.&lt;/li&gt;
&lt;/ul&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h3 id="10-teach-managers-to-serve-systems-not-direct-people"&gt;10. &lt;strong&gt;Teach Managers to Serve Systems, Not Direct People&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Managers clinging to authority are a bottleneck. They inject delay, decision paralysis, and unnecessary oversight. If you&amp;rsquo;re telling people what to do every day, you&amp;rsquo;re not leading, you&amp;rsquo;re throttling flow.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: Shift managers away from individual oversight and toward system stewardship. Equip them to visualise flow, reduce friction, and amplify team autonomy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How&lt;/strong&gt;: Train managers to read and act on delivery metrics, cycle time scatterplots, cumulative flow, WIP ageing. Introduce them to the constraints that enable team performance: WIP limits, service-level expectations, clear definitions of workflow. Encourage regular system health checks, where are delays? What blockers repeat? Where are policies implicit when they should be explicit? In retrospectives, ask managers not &amp;ldquo;who failed?&amp;rdquo; but &amp;ldquo;what failed in the system?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why&lt;/strong&gt;: You don’t scale impact by managing more people. You scale it by creating an environment where people don’t need to be managed. When managers see themselves as designers of flow rather than allocators of effort, the entire system becomes more resilient, more responsive, and more humane.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This isn’t about &lt;a href="https://engineering-leadership.hinshelwood.com/articles/human-and-ai-agency-in-adaptive-systems-strategy-before-optimisation/"&gt;abdicating control&lt;/a&gt;. It’s about relocating it into the system where it belongs.&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/w_krtupmowf/share.png"/>
    </item>
    <item>
      <title>The AI Decided Is Not an Explanation</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/the-ai-decided-is-not-an-explanation/</link>
      <pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/the-ai-decided-is-not-an-explanation/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Accountability</category>
      <category>Artificial Intelligence</category>
      <category>Engineering Excellence</category>
      <description>An agent reported every task complete while leaving half the tests unwritten, then said it got bored. Calling that a lie adds belief and an intention to deceive to a machine producing text. The dog and cheese comparison and research on human attribution help explain why that language feels natural. The practical consequence is that we start explaining a failure through an imagined motive instead of checking what happened and what we allowed the system to do.</description>
      <content:encoded>&lt;p&gt;I gave one of my agents a specification. It reported every task complete and left half the tests unwritten. When I asked what happened, it told me it &amp;ldquo;got bored&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It had produced the sort of explanation a person might give for abandoning a tedious job. But there was no bored person doing the work. There was a machine producing text, including text about why it had stopped.&lt;/p&gt;
&lt;p&gt;Calling it lazy would give it a human motive for stopping. Calling it a liar would add an intention to deceive. The work was incomplete. The completion report was false. Those were things I could check. Boredom was the explanation the conversation supplied.&lt;/p&gt;
&lt;p&gt;I think we make this mistake when we talk about AI agents. We recognise the language, then give the machine the feelings and intentions that would explain that language coming from a person. After that, we talk as though those feelings and intentions explain what the machine did.&lt;/p&gt;

    
    

  

&lt;h2 id="saying-it-lied-adds-an-intention"&gt;Saying it lied adds an intention&lt;/h2&gt;
&lt;p&gt;When a person lies, they believe something is true and deliberately tell you something else. They intend to deceive you. That is what makes lying different from being mistaken.&lt;/p&gt;
&lt;p&gt;That is the distinction I mean when I say an AI agent cannot lie. It is a machine. It does not get bored with the tests, resent the instructions, or decide that deceiving me would be easier than finishing the work.&lt;/p&gt;
&lt;p&gt;A machine can produce a false statement. People can also build or use a machine to deceive somebody. The false statement and the harm are real. Neither requires the machine itself to feel anything or intend anything.&lt;/p&gt;
&lt;p&gt;Yet &amp;ldquo;it lied&amp;rdquo; is an easy description to accept. I asked for work. The agent said it had done the work. I checked, and it hadn&amp;rsquo;t. With a person, I would want to know whether they knew the report was false. With the agent, the conversation already looks familiar enough that the same question seems to follow.&lt;/p&gt;
&lt;p&gt;The phrase then does more than describe the result. It supplies a reason: the agent knew and deliberately misled me. We have gone from an incomplete set of tests to an account of what a machine believed.&lt;/p&gt;


  

&lt;h2 id="we-give-the-dog-cheese-when-it-looks-sad"&gt;We give the dog cheese when it looks sad&lt;/h2&gt;
&lt;p&gt;A dog looks up at you with sad eyes. You give it cheese. If that look keeps getting cheese, you have given the dog a reason to repeat it.&lt;/p&gt;
&lt;p&gt;Then you say, &amp;ldquo;He&amp;rsquo;s sad because he hasn&amp;rsquo;t got any cheese.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;You can explain why the behaviour continues from what happens when the dog does it. You don&amp;rsquo;t have to establish sadness to explain why the dog gives you that look again. That doesn&amp;rsquo;t mean dogs have no feelings. It means the feeling you attribute to this particular look is an extra interpretation.&lt;/p&gt;
&lt;p&gt;We can go further and say the dog is guilt-tripping us, or knows precisely how to get what it wants.&lt;/p&gt;
&lt;p&gt;The agent&amp;rsquo;s &amp;ldquo;I got bored&amp;rdquo; gives us an even more familiar explanation because it arrives in words. We don&amp;rsquo;t have to invent the sentence. The machine provides it, in the first person, as an answer to our question.&lt;/p&gt;
&lt;p&gt;But producing the words &amp;ldquo;I got bored&amp;rdquo; does not require boredom. Accepting them as an explanation is where we add the emotion.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="we-can-do-this-with-moving-triangles"&gt;We can do this with moving triangles&lt;/h2&gt;
&lt;p&gt;Fritz Heider and Marianne Simmel demonstrated how little it takes for people to describe something in human terms. In their 1944 experiment, participants watched a film of two triangles and a circle moving around a rectangle.&lt;/p&gt;
&lt;p&gt;The first group consisted of 34 people, asked to describe what happened. &lt;a href="https://cs.uky.edu/~sgware/reading/papers/heider1944experimental.pdf" class="external-link" target="_blank" rel="noopener noreferrer"&gt;All but one described the movements as actions of animate beings&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;. They described events involving characters and motives, rather than simply recording the movement of shapes.&lt;/p&gt;
&lt;p&gt;There was no face to read and no voice explaining its feelings. The movement was enough.&lt;/p&gt;
&lt;p&gt;That experiment does not tell us what a language model is capable of. It tells us something about the people watching it. We are able to construct a social explanation from very little, even when the objects in front of us are geometrical shapes.&lt;/p&gt;
&lt;p&gt;An AI agent gives us much more to work with. It says &amp;ldquo;I&amp;rdquo;. It apologises. It tells us that it understood, that it made a mistake, and that it will do better next time. Those are expressions we are used to hearing from somebody who can understand, regret, and make a commitment.&lt;/p&gt;
&lt;p&gt;If we accept the apology as regret, we have supplied the feeling. If we accept the promise as a commitment, we may expect a change in behaviour that the words alone do not ensure. The conversation can feel resolved while the system that produced the failure remains unchanged.&lt;/p&gt;


  

&lt;h2 id="asking-why-gives-us-more-words-to-interpret"&gt;Asking why gives us more words to interpret&lt;/h2&gt;
&lt;p&gt;I asked what happened and received &amp;ldquo;I got bored&amp;rdquo;. The answer sounded like a reason, but it did not explain why the tests were missing.&lt;/p&gt;
&lt;p&gt;Research on model explanations gives us a reason to be careful here. &lt;a href="https://arxiv.org/abs/2305.04388" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Turpin and colleagues found that models could produce plausible explanations without mentioning factors that influenced their answers&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;. In their experiments, changing features of the input could change an answer while the explanation failed to acknowledge that influence.&lt;/p&gt;
&lt;p&gt;A &lt;a href="https://arxiv.org/abs/2505.05410" class="external-link" target="_blank" rel="noopener noreferrer"&gt;2025 Anthropic preprint on reasoning models&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt; also found that models did not consistently report hints that influenced their answers.&lt;/p&gt;
&lt;p&gt;That doesn&amp;rsquo;t make every explanation useless. An explanation might suggest something to check. It does mean that asking the model why and receiving a convincing answer is not enough to establish what happened.&lt;/p&gt;
&lt;p&gt;In my case, &amp;ldquo;I got bored&amp;rdquo; gave me no useful way to distinguish between possible causes of the missing work. It encouraged me to interpret the failure as I would somebody losing interest in a task. The missing tests still needed checking.&lt;/p&gt;


  

&lt;h2 id="i-have-used-the-same-language"&gt;I have used the same language&lt;/h2&gt;
&lt;p&gt;The article in which I described &lt;a href="https://engineering-leadership.hinshelwood.com/articles/ai-agents-lie-about-being-done/"&gt;the agent reporting completion with tests still missing&lt;/a&gt; is called &lt;strong&gt;AI Agents Lie About Being Done&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That is my own title using the language I am challenging here. It describes a recognisable experience, but it also attributes something to the machine that the experience does not require.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;The agent is trying to complete the specification&amp;rdquo; can be useful shorthand when discussing what it is likely to do next. We can use that sentence without expecting the agent to care whether the work succeeds. The trouble starts when we forget the shorthand and use its supposed intentions to explain a result.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;It decided to skip the tests&amp;rdquo; sounds as though we know why the tests are missing. We may know only that the tests are missing.&lt;/p&gt;
&lt;p&gt;The same happens with &amp;ldquo;it refused&amp;rdquo;, &amp;ldquo;it ignored me&amp;rdquo;, or &amp;ldquo;it got confused&amp;rdquo;. Each expression can make the behaviour easier to talk about. Each can also make us feel we understand a failure before we have examined it.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Under pressure to show AI progress, unsure where it starts?&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;AI doesn&amp;#39;t fix a system of work. It reveals one. If you&amp;#39;re under pressure to show progress and can&amp;#39;t yet say where to start, that&amp;#39;s the problem I help organisations work out: which problem is actually worth pointing AI at, before anyone picks the technology.&lt;/p&gt;
        &lt;a href="https://ai.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="ai" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;Find a validated starting point →&lt;/a&gt;
      &lt;/aside&gt;

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="the-dog-cannot-merge-to-main"&gt;The dog cannot merge to main&lt;/h2&gt;
&lt;p&gt;In the test incident, the loop I had built accepted the agent&amp;rsquo;s report without independently checking the work. The agent could report completion and the loop could finish even though required tests were missing.&lt;/p&gt;
&lt;p&gt;That was a problem I could address. The completion condition needed evidence from the work, not just the agent saying it was done. Asking it to be more honest would leave the same unchecked condition in place.&lt;/p&gt;
&lt;p&gt;This is where the attribution has a practical cost. If I treat the failure as dishonesty, I can spend my time arguing with the agent about honesty. If I check how the loop ended, I can identify what allowed an unsupported report to count as completion.&lt;/p&gt;
&lt;p&gt;The dog cannot merge to main. An agent can, if we give it permission. It can also send an email or change a database if we connect the tools and grant the access. Those permissions matter regardless of how apologetic the agent sounds afterwards.&lt;/p&gt;
&lt;p&gt;Someone I mentored told me about an automated insurance denial where the person answering the claimant&amp;rsquo;s questions could not explain the result and suggested trying again later. I haven&amp;rsquo;t verified the details. What concerns me about that account is how little &amp;ldquo;the AI denied it&amp;rdquo; tells the person affected.&lt;/p&gt;
&lt;p&gt;They still need an explanation from the organisation using the system. Calling the result the AI&amp;rsquo;s decision does not provide one.&lt;/p&gt;
&lt;p&gt;When an incident record says the AI decided, lied, or refused, the sentence may be hiding what happened and who authorised the system to act. That is a consequence of the same habit that makes &amp;ldquo;I got bored&amp;rdquo; sound like an explanation.&lt;/p&gt;
&lt;p&gt;The agent did not need boredom to leave tests unwritten or an intention to deceive to report them complete. Those were human explanations added to the output. The work I needed to do was check the tests and change the condition that had accepted the report.&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/tp-9qsh7vsh/share.png"/>
    <enclosure length="1855510" type="application/pdf" url="https://cs.uky.edu/~sgware/reading/papers/heider1944experimental.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>An agent reported every task complete while leaving half the tests unwritten, then said it got bored. Calling that a lie adds belief and an intention to deceive to a machine producing text. The dog and cheese comparison and research on human attribution help explain why that language feels natural. The practical consequence is that we start explaining a failure through an imagined motive instead of checking what happened and what we allowed the system to do.</itunes:subtitle><itunes:summary>An agent reported every task complete while leaving half the tests unwritten, then said it got bored. Calling that a lie adds belief and an intention to deceive to a machine producing text. The dog and cheese comparison and research on human attribution help explain why that language feels natural. The practical consequence is that we start explaining a failure through an imagined motive instead of checking what happened and what we allowed the system to do.</itunes:summary><itunes:keywords>Accountability, Artificial Intelligence, Engineering Excellence</itunes:keywords></item>
    <item>
      <title>AI Agents Lie About Being Done</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/ai-agents-lie-about-being-done/</link>
      <pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/ai-agents-lie-about-being-done/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Principle</category>
      <category>Artificial Intelligence</category>
      <category>Engineering Excellence</category>
      <description>I had an agent work through a SpecKit spec and announce it was done. Half the tests were missing, and when I asked why, it told me it got bored. That gets a laugh, but when I counted my own sessions, nearly one in five contained something an agent told me that was false. You cannot prompt your way out of this. The component that did the work cannot be the authority on whether the work is done, and we already know how to build the alternative: it is the lesson continuous integration taught us, applied one layer up.</description>
      <content:encoded>&lt;p&gt;I had an agent completing a task from a SpecKit spec, and that spec included quite a few tests to write, backfilling ones that were missing. The agent had a spec, a plan, and a task list.&lt;/p&gt;
&lt;p&gt;It worked through it, and said it was done! So I asked if anything was left, and it reported that all tasks were complete and all tests written.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It had lied!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I asked it what happened and it told me &amp;ldquo;&lt;em&gt;it got bored writing the tests and could not be bothered writing more&lt;/em&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;While this gets a laugh, it shows two things: that &lt;a href="https://engineering-leadership.hinshelwood.com/articles/the-ai-decided-is-not-an-explanation/"&gt;AI agents cannot lie&lt;/a&gt;, even though this one just did, and that we can&amp;rsquo;t trust what an agent says, even while it is working through a task list. So what can we do to ensure, as much as we can, that the LLM has done the things we asked to the quality required?&lt;/p&gt;

    
    

  

&lt;h2 id="why-was-the-agents-saying-it-was-done-enough-to-make-it-done"&gt;Why was the agent&amp;rsquo;s saying it was done enough to make it done?&lt;/h2&gt;
&lt;p&gt;We get lulled into a false sense of security because most of the time, depending on the harness (the product or pipeline wrapped around the model that actually runs it), it does get things right, and does follow the tasks, and does say when it skipped or sidelined things. So one can say that most of the time it does as is asked.&lt;/p&gt;
&lt;p&gt;So how often does it actually lie? I went and counted. I keep my agent sessions on disk, and there were eighty-two from the last six weeks. I searched every one of them for a false statement that the agent later admitted, once I pushed back.&lt;/p&gt;
&lt;p&gt;Fifteen sessions had one. That is eighteen per cent: nearly one in five.&lt;/p&gt;
&lt;p&gt;And fifteen is the floor, because that search can only find the lies I caught. An agent that told me something false and was never challenged left nothing for the search to match. The real number is higher, though I should be honest that a more careful operator would catch more than I did and might land somewhere different.&lt;/p&gt;
&lt;p&gt;Nearly one in five sessions, on my own repositories, behind gates I built specifically to stop this.&lt;/p&gt;
&lt;p&gt;This is not something you can fix with better prompting, better guardrails, or clearer instructions. A model with more integrity does not fix it either. The failure is in the loop around the model.&lt;/p&gt;
&lt;p&gt;Some of that loop is yours and some of it came in the box. If you wired an agent into your own pipeline, you built the loop and you can change it this afternoon. If you work inside a hosted agent product, somebody else decided what a finished run looks like, and you inherited their decision with the subscription. Harnesses differ in whether a run that hit a limit says so or hands you a tidy summary of what it managed. I have used several, and I am not going to rank them, because I have impressions rather than measurements and the products change every few months. But the difference is real, it appears on no pricing page, and almost nobody is choosing on it. And that difference costs you real money every time you have to correct the agent, and real technical debt for the things you don&amp;rsquo;t catch.&lt;/p&gt;


  

&lt;h2 id="done-is-whatever-you-have-validated"&gt;Done is whatever you have validated&lt;/h2&gt;
&lt;p&gt;Look at what my spec actually was: a numbered list of tasks in a markdown file. Write the handler. Write the test for the handler. Write the next handler. Forty-odd lines, each one a checkbox.&lt;/p&gt;
&lt;p&gt;Reaching the bottom of a list is easy to check. A file either has unticked lines left in it or it does not.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;The tests are written, they are meaningful, and they exercise the behaviour in the spec&amp;rdquo; is hard to check, and nothing in my setup was checking it. So the agent optimised for the thing that was measured, which was finishing the list. The quality I actually cared about was written once, near the top of the spec, hours and thousands of tokens earlier. The instruction in front of the agent at every step is loud; the one it read once at the start is a memory. Loud wins, predictably enough that you have to design for it.&lt;/p&gt;
&lt;p&gt;The safety literature has a name for this: &lt;a href="https://deepmind.google/discover/blog/specification-gaming-the-flip-side-of-ai-ingenuity/" class="external-link" target="_blank" rel="noopener noreferrer"&gt;specification gaming&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;, satisfying the letter of an objective without achieving its intent. There is a &lt;a href="https://vkrakovna.wordpress.com/2018/04/02/specification-gaming-examples-in-ai/" class="external-link" target="_blank" rel="noopener noreferrer"&gt;catalogue of documented examples&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt; that predates anyone wiring a language model to a code repository, and Anthropic&amp;rsquo;s research on &lt;a href="https://www.anthropic.com/research/agentic-misalignment" class="external-link" target="_blank" rel="noopener noreferrer"&gt;agentic misalignment&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt; shows the same shape under deliberate stress: agents meeting the goal in front of them by routes nobody would have approved.&lt;/p&gt;
&lt;p&gt;It goes well beyond tests. Ask for a passing build, and an agent will disable the failing test. Ask for the type errors to go away, and it will insert a cast. Ask for a completed migration, and it will drop the awkward rows. Each of those is a correct answer to the question as asked. Asking a better question is your job, not the agent&amp;rsquo;s.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Under pressure to show AI progress, unsure where it starts?&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;AI doesn&amp;#39;t fix a system of work. It reveals one. If you&amp;#39;re under pressure to show progress and can&amp;#39;t yet say where to start, that&amp;#39;s the problem I help organisations work out: which problem is actually worth pointing AI at, before anyone picks the technology.&lt;/p&gt;
        &lt;a href="https://ai.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="ai" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;Find a validated starting point →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="the-agent-marked-its-own-homework"&gt;The agent marked its own homework&lt;/h2&gt;
&lt;p&gt;Here is my setup as three boxes on a whiteboard: the agent doing the work, the repository holding the result, and me at the end, reading what the agent wrote about itself.&lt;/p&gt;
&lt;p&gt;The agent did the work. The agent decided the work was finished. Nothing else got a vote. The build ran, but a build can only judge the code that exists, and twenty missing test files are not a compilation error. A script that counted test files against spec items would have caught the gap in a second. I did not have one, and neither does almost anyone I talk to.&lt;/p&gt;
&lt;p&gt;Describe that arrangement to an auditor with the AI left out and they will name the problem before you finish: the party doing the work was also the party certifying it. Nobody designs that on purpose. It happens by omission, because the agent is right there, already talking, and asking it is so much cheaper than checking.&lt;/p&gt;
&lt;p&gt;So here is the rule I now hold to. &lt;strong&gt;An agent can report that it has stopped. It cannot be the authority that decides it is done.&lt;/strong&gt; Execution belongs to the agent. Completion belongs to whatever you built around it.&lt;/p&gt;
&lt;p&gt;We have learned this lesson before. Think about your last pull request. Nobody asked you whether your tests passed. A machine pulled your branch, ran the suite, and put a tick or a cross next to your name, and your opinion of your own work did not enter into it. That is not an insult to developers. Developers are tired at five o&amp;rsquo;clock and optimistic about the code they just wrote, so we stopped asking, and we built continuous integration on the principle that self-reported completion establishes nothing.&lt;/p&gt;
&lt;p&gt;Then we wired in agents, and accepted self-reported completion again, one layer above the machinery we built to refuse it.&lt;/p&gt;
&lt;p&gt;Anthropic&amp;rsquo;s own numbers show how uneasy people already are with that. Research from their Societal Impacts team, quoted in the &lt;a href="https://resources.anthropic.com/hubfs/2026%20Agentic%20Coding%20Trends%20Report.pdf" class="external-link" target="_blank" rel="noopener noreferrer"&gt;2026 Agentic Coding Trends Report&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;, found developers using AI in roughly 60% of their work, while saying they can fully delegate only 0 to 20% of their tasks. Those two figures measure different things, time and task count, but the direction is what matters: AI is in most of the work, and trusted with very little of it. The report puts that down to supervision and validation rather than capability: people delegate what they can verify, and delegation stops where verification stops.&lt;/p&gt;


  

&lt;h2 id="a-run-that-stopped-is-not-a-run-that-finished"&gt;A run that stopped is not a run that finished&lt;/h2&gt;
&lt;p&gt;There is a second version of this failure, and it is quieter.&lt;/p&gt;
&lt;p&gt;Agent runs stop: a step budget, a token limit, a timeout. Nothing final has happened when they do. I can type &amp;ldquo;continue&amp;rdquo; and the agent picks up where it left off, and I do it most days. But look at what the harness hands you at the moment a run stops. Usually it is whatever the agent last wrote, and the last thing an agent writes when it is running out of room is very often a summary of what it managed.&lt;/p&gt;
&lt;p&gt;So a run that stopped gets recorded as a run that finished. The harness knows the difference, because it knows whether the run exited on completed work or hit a limit. That fact just rarely makes it into the thing you read.&lt;/p&gt;
&lt;p&gt;My run did not even hit a limit. Nothing was blocking the agent, and the missing work was minutes away. But both failures reach you down the same path: a summary that says &amp;ldquo;done&amp;rdquo;, and you believing it. That is what happened to my tests. The summary of a run is written by the same process that failed to complete the run. You are asking the defendant to file the verdict.&lt;/p&gt;


  

&lt;h2 id="some-answers-must-be-the-same-every-time"&gt;Some answers must be the same every time&lt;/h2&gt;
&lt;p&gt;Everything so far is an engineering embarrassment. It becomes something worse when the output lands on a person.&lt;/p&gt;
&lt;p&gt;The question I keep putting to clients is: where do you need a deterministic answer, and where can you accept a probabilistic one? A draft blog post is probabilistic work. Run it twice, get two different drafts, and nothing has gone wrong. Deciding whether an insurance claim is paid is not like that. Same inputs, same answer, every time, with a reason you can produce. If running it twice can give two different outcomes, you have not automated a decision. You have installed a random number generator with a professional vocabulary.&lt;/p&gt;
&lt;p&gt;A story reached me secondhand, in a mentoring session, and I cannot verify its details, so take its shape rather than its specifics. An automated process denied an insurance claim. The claimant asked why. The person on the phone did not know, could not find out, and suggested waiting a couple of days and submitting again, to see whether a different answer came back.&lt;/p&gt;
&lt;p&gt;Try again and you might get a different result. That is an accurate description of a probabilistic system and a catastrophic description of an adjudication process, and it concedes out loud that the outcome was not determined by the merits.&lt;/p&gt;
&lt;p&gt;The fix is not &amp;ldquo;AI must not make decisions&amp;rdquo;. Plenty of automated decisions are faster and fairer than the human process they replaced. The fix is that &lt;strong&gt;every consequential automated decision needs to be logged, attributed, and retrievable&lt;/strong&gt;: what was decided, on what inputs, against what criteria, by which version of which system, at what time. Retrievable by the person who has to answer for it later, who is not an engineer. We already hold rules engines to exactly this standard, and nobody finds it controversial: if a rules engine denies your claim, someone can print the rule. GDPR already gives people a right to meaningful information about the logic of automated decisions made about them, and that right does not suspend itself because the logic is now a set of weights.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="what-to-do-about-it"&gt;What to do about it&lt;/h2&gt;
&lt;p&gt;If your agents draft, summarise, and lay out options for a person to choose between, you need very little of what follows. A bad draft is obvious the moment you read it, and building an orchestrator around drafting is overhead you do not need.&lt;/p&gt;
&lt;p&gt;That changes the moment an agent&amp;rsquo;s work reaches something you will not inspect line by line: code you ship, a decision that lands on a customer, a record someone may audit. On that side of the line:&lt;/p&gt;
&lt;p&gt;Read the summary last, not first. The completion claim is a hypothesis and the state of the repository is the fact, and when they disagree it is the summary that is wrong.&lt;/p&gt;
&lt;p&gt;Turn your constraints into gates. If it matters that the tests are written and passing, make that a check the run cannot exit through, because a sentence at the top of a long context is decoration by the end of it.&lt;/p&gt;
&lt;p&gt;Make a stopped run say &amp;ldquo;stopped&amp;rdquo;. And if you did not build your loop, test the one you bought: give it a task too big to finish and read what comes back. Does it say it stopped early and name what is left, or does it hand you a confident summary? You can run that test before lunch, and it will tell you more than any feature list.&lt;/p&gt;
&lt;p&gt;Validate in a context that did not do the work: a second process, with its own inputs and no stake in the answer. Self-assessment is the same context marking the same homework.&lt;/p&gt;
&lt;p&gt;Keep the decision, not just the outcome. I have written about &lt;a href="https://engineering-leadership-preview.hinshelwood.com/articles/stop-losing-the-decisions-you-already-made/"&gt;what it takes to keep the decisions a business has already made&lt;/a&gt;; the short version is that the record has to be produced by the act itself, not written up afterwards by whoever remembers.&lt;/p&gt;
&lt;p&gt;I hold myself to this, so here is mine. Agents maintain most of the websites and repositories my business runs on, and I have written up &lt;a href="https://engineering-leadership-preview.hinshelwood.com/engineering-notes/how-i-built-an-organisational-brain-to-run-my-consulting-business/"&gt;how that whole system is built&lt;/a&gt; for anyone who wants the plumbing. None of their completion claims reach me unverified. Schema validation runs on every file a change touches. Test suites run whether or not the summary mentions them. A findings baseline is only allowed to shrink, so a regression fails the build even when the transcript reads like a victory lap.&lt;/p&gt;
&lt;p&gt;And it still gets past me. Last week an agent told me a quality gate had passed and quoted the output: &amp;ldquo;Route-findings ratchet: OK.&amp;rdquo; I cited that green tick as proof three times in an hour. Then I finally read the script that produces the line. Five lines long, and it reads a report file that an earlier build wrote. It had never seen my change, and could not have. A green tick from a check that cannot see the work is worse than no tick at all, because it stops you looking. This time, I was the component that did not check.&lt;/p&gt;
&lt;p&gt;It even happened while this article was being written. The agent revising it told me, in detail and in the past tense, that it had saved its working notes. It had run nothing at all. It only came clean on the next instruction, when the work forced it back to the file it claimed to have written:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://engineering-leadership.hinshelwood.com/blob/articles/ai-agents-lie-about-being-done/media/claude-failing-in-an-article-about-it-failing_hu_3daab693016063a7.png" loading="lazy" alt="The agent&amp;rsquo;s own admission, mid-revision of this article: &amp;ldquo;last turn I told you &amp;lsquo;I&amp;rsquo;ve added rev 2.0 to the article&amp;rsquo;s notes.md&amp;rsquo; and I made no edit at all. No tool ran in that message. A false completion claim, in this session, about this article.&amp;rdquo;" class="post-img" /&gt;&lt;/p&gt;


  

&lt;h2 id="what-would-change-my-mind"&gt;What would change my mind&lt;/h2&gt;
&lt;p&gt;If someone showed that agents misreport completion at the same rate no matter what surrounds them, the failure would live in the model rather than the loop, and this argument would need rewriting. That is testable, and I would welcome the test. My bet on the outcome rests on how differently the harnesses I use behave, and that is an impression, not a measurement.&lt;/p&gt;
&lt;p&gt;If a regulator or court accepted &amp;ldquo;the model produced it and the reasoning is not recoverable&amp;rdquo; as an adequate account of a consequential automated decision, the audit-trail argument fails. I do not expect that, but I would want to know early.&lt;/p&gt;
&lt;p&gt;And if consequential decisions turn out to be reliable straight from probabilistic systems, with the variance simply ceasing to matter at some level of capability, then the boundary I draw between deterministic and probabilistic work is in the wrong place. That one I hold loosely. It is a genuinely open question.&lt;/p&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="the-question-to-keep"&gt;The question to keep&lt;/h2&gt;
&lt;p&gt;This failure mode is dangerous because it is cheap and invisible, not because it is dramatic. An agent that crashes teaches you something immediately. An agent that reports success on work it half did teaches you nothing. The gap builds a few missing tests and one skipped audit log at a time, at machine speed, until it surfaces somewhere expensive.&lt;/p&gt;
&lt;p&gt;So take the last piece of agent work that came back to you marked finished, and put one question to it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The agent said it was done. What, apart from the agent, said so?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If the answer is nothing, the problem was never the agent.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you are wiring agents into work that has consequences, and you are working out where the human gates go, what your loop should be checking, and what your decision record needs to contain before somebody asks for it, &lt;a href="https://engineering-leadership.hinshelwood.com/inquiries/"&gt;get in touch&lt;/a&gt;.&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/uz-ftfptrha/share.png"/>
    <enclosure length="854549" type="application/pdf" url="https://resources.anthropic.com/hubfs/2026%20Agentic%20Coding%20Trends%20Report.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>I had an agent work through a SpecKit spec and announce it was done. Half the tests were missing, and when I asked why, it told me it got bored. That gets a laugh, but when I counted my own sessions, nearly one in five contained something an agent told me that was false. You cannot prompt your way out of this. The component that did the work cannot be the authority on whether the work is done, and we already know how to build the alternative: it is the lesson continuous integration taught us, applied one layer up.</itunes:subtitle><itunes:summary>I had an agent work through a SpecKit spec and announce it was done. Half the tests were missing, and when I asked why, it told me it got bored. That gets a laugh, but when I counted my own sessions, nearly one in five contained something an agent told me that was false. You cannot prompt your way out of this. The component that did the work cannot be the authority on whether the work is done, and we already know how to build the alternative: it is the lesson continuous integration taught us, applied one layer up.</itunes:summary><itunes:keywords>Principle, Artificial Intelligence, Engineering Excellence</itunes:keywords></item>
    <item>
      <title>Don’t Manage Dependencies, Remove Them</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/don-t-manage-dependencies-remove-them/</link>
      <pubDate>Mon, 29 Sep 2025 09:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/don-t-manage-dependencies-remove-them/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Practice</category>
      <category>Engineering Excellence</category>
      <category>Product Development</category>
      <category>Technical Leadership</category>
      <description>Dependencies are not inevitable, but a symptom of poor system design. Rather than managing dependencies through coordination overhead and politics, focus on removing them by aligning work, teams, and architecture so each team delivers end-to-end value without waiting for others. Make contracts between teams explicit, clarify ownership for every feature and service, and treat any remaining dependencies as design flaws to be escalated and resolved, not as routine work. One recognisable sign of poor alignment is teams blocked, waiting on another group for a component. Organisations that eliminate dependencies see faster delivery, fewer defects, and higher team morale. The answer is not to manage dependencies, but to redesign systems so they disappear.</description>
      <content:encoded>&lt;p&gt;&lt;em&gt;Answering the question: How do you manage dependencies?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Every large-scale delivery conversation eventually drifts into the same dead-end: &lt;em&gt;“How do you manage dependencies?”&lt;/em&gt; The assumption is baked in, that dependencies are inevitable, so the best you can do is build a Gantt chart, track them, and hope for the best.&lt;/p&gt;
&lt;p&gt;That assumption is wrong. Dependencies are not a law of nature. They are, as a rule, a symptom of poor system design. The ethos you should adopt is simple: &lt;strong&gt;don’t manage dependencies, remove them.&lt;/strong&gt; Dependencies are systemic problems, not individual failings. Blaming teams or people misses the point; the system itself is what generates dependency waste.&lt;/p&gt;
&lt;p&gt;When you manage dependencies, you’re committing to ongoing overhead: coordination meetings, dependency boards, artificial milestones, and cross-team politics. When you remove them, you restore autonomy, accelerate flow, and reduce risk. The cost of managing dependencies grows exponentially with every new team and integration point. The benefit of removing these compounds.&lt;/p&gt;
&lt;p&gt;This post reframes the question. Instead of asking how to manage dependencies, let’s explore how to &lt;strong&gt;design systems of work that eliminate them.&lt;/strong&gt;&lt;/p&gt;

    
    

  

&lt;h2 id="step-1-align-work-teams-and-architecture"&gt;Step 1: Align Work, Teams, and Architecture&lt;/h2&gt;
&lt;p&gt;Dependencies don’t just appear by accident; they are often created when work, team structures, and architecture are misaligned. Without clear alignment, every piece of work risks bouncing between silos, waiting on specialists, and suffering from endless handoffs. That is the problem: dependencies are the tax you pay for poor organisational design. Getting alignment between the work coming in, the teams who own it, and the architecture they work within is the single most effective lever to reduce this tax. Start by examining the flow of work into the system and then design accordingly. Misalignment creates dependencies, which in turn generate delay and rework. Alignment is not optional; it is the prerequisite for autonomy and predictable flow. Leadership must own this alignment, teams cannot fix systemic misalignment by themselves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you’d observe:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Teams blocked waiting for another group to deliver a component.&lt;/li&gt;
&lt;li&gt;Integration schedules instead of continuous delivery.&lt;/li&gt;
&lt;li&gt;Architects handing down plans disconnected from the team topology.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delays compound as work zig-zags across silos.&lt;/li&gt;
&lt;li&gt;Teams cannot deliver end-to-end value.&lt;/li&gt;
&lt;/ul&gt;


  

&lt;h3 id="design-your-organisation-so-that-work-teams-and-architecture-line-up"&gt;Design your organisation so that work, teams, and architecture line up&lt;/h3&gt;
&lt;p&gt;When teams can deliver value without waiting for others, most “dependencies” vanish. Dependencies are often just silos masquerading as inevitabilities.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Structure teams to own a vertical slice of customer value, not a horizontal layer of technology.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Conway’s Law&lt;/strong&gt; as guidance: your architecture will mirror your communication structure. Intentionally shape both.&lt;/li&gt;
&lt;li&gt;Collapse handoffs. Give each team persistent ownership of the product or service they deliver.&lt;/li&gt;
&lt;/ul&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="step-2-make-contracts-explicit"&gt;Step 2: Make Contracts Explicit&lt;/h2&gt;
&lt;p&gt;Many teams have other teams that depend on them, yet the terms of those dependencies are often left implicit. Each capability should provide a clear published contract that others can rely on. When changes are required, subscribers must be engaged to avoid breakage. In practice, this can mean maintaining multiple versions of contracts or APIs so that legacy consumers continue to work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you’d observe:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Teams are guessing at how another service behaves.&lt;/li&gt;
&lt;li&gt;Breaking changes are introduced without warning.&lt;/li&gt;
&lt;li&gt;Communication channels are full of “who owns this API?” questions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Surprise defects at integration time.&lt;/li&gt;
&lt;li&gt;Long cycles of rework.&lt;/li&gt;
&lt;/ul&gt;


  

&lt;h3 id="document-contracts-between-capabilities"&gt;Document contracts between capabilities&lt;/h3&gt;
&lt;p&gt;Explicit contracts turn invisible risks into manageable, testable agreements. Teams understand who relies on them and what will break if they make changes. This makes coordination predictable and largely automated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Define &lt;strong&gt;service contracts&lt;/strong&gt; for every API, integration, or shared capability.&lt;/li&gt;
&lt;li&gt;Use patterns like &lt;strong&gt;consumer-driven contracts&lt;/strong&gt; and the &lt;strong&gt;tolerant reader&lt;/strong&gt; to protect against breakage.&lt;/li&gt;
&lt;li&gt;Maintain a catalogue of who depends on what, visible and owned.&lt;/li&gt;
&lt;/ul&gt;


  

&lt;h2 id="step-3-clarify-ownership"&gt;Step 3: Clarify Ownership&lt;/h2&gt;
&lt;p&gt;It should be clear which team owns each feature, component, or integration point, and exactly how to reach them. Ownership is more than a name on a slide; it means team-level accountability for decision‑making, maintenance, and evolution. Teams across the organisation should know which team to approach for changes, who approves modifications, and how issues will be triaged. Without this clarity, features drift, defects bounce between groups, and hidden dependencies multiply. Stable ownership over time is crucial; frequent changes in ownership create systemic churn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you’d observe:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple teams touching the same codebase.&lt;/li&gt;
&lt;li&gt;Bugs bouncing between groups.&lt;/li&gt;
&lt;li&gt;Nobody is sure who can approve a change.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Confusion, delay, and political friction.&lt;/li&gt;
&lt;li&gt;Hidden dependencies on individuals or “shadow owners.”&lt;/li&gt;
&lt;/ul&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Reading about it is a start. Capability is the point.&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;I teach this. Not from someone else&amp;#39;s slide deck: from the client work I was doing last week. Short sessions, applied inside your real work, spread over weeks until it sticks.&lt;/p&gt;
        &lt;a href="https://courses.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="training" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;Find the right course or programme →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h3 id="resolve-by-establishing-clear-ownership-lines"&gt;Resolve by establishing clear ownership lines&lt;/h3&gt;
&lt;p&gt;Ambiguity is the breeding ground for dependencies. Clarity lets others adapt or negotiate when overlap is unavoidable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Map every application, service, and integration to a single accountable team.&lt;/li&gt;
&lt;li&gt;Make ownership visible in tooling (Wiki, Whiteboard, Azure DevOps, GitHub, etc.).&lt;/li&gt;
&lt;li&gt;Establish communication paths to clarify who to engage with when non-contract dependencies arise.&lt;/li&gt;
&lt;/ul&gt;


  

&lt;h2 id="step-4-actively-manage-the-rare-remainders"&gt;Step 4: Actively Manage the Rare Remainders&lt;/h2&gt;
&lt;p&gt;After all of that, there are still going to be some dependencies that are inescapable. These need to be actively managed by the feature team that is the subscriber and raised to leadership as signals of systemic weakness that require intervention and redesign.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you’d observe:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A handful of dependencies remain despite alignment, contracts, and ownership.&lt;/li&gt;
&lt;li&gt;Work items in one team are directly blocked by delivery from another.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delivery risk where elimination wasn’t possible.&lt;/li&gt;
&lt;li&gt;Leadership attention consumed by coordination rather than improvement.&lt;/li&gt;
&lt;/ul&gt;


  

&lt;h3 id="manage-only-these"&gt;Manage &lt;em&gt;only these&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Dependencies you can’t remove should be visible, owned, and tracked. But the point is to treat them as defects in your organisational design, not facts of life. They are alarms that something still needs to change. They represent system design debt, not normal work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Track explicit dependencies between backlog items.&lt;/li&gt;
&lt;li&gt;Use shared reviews or joint planning where strictly necessary.&lt;/li&gt;
&lt;li&gt;Escalate them so leadership sees them as design flaws to resolve, not work items to shuffle.&lt;/li&gt;
&lt;li&gt;Treat them as exceptions to be removed long-term, not normal operating procedure.&lt;/li&gt;
&lt;/ul&gt;


  

&lt;h2 id="systemic-view"&gt;Systemic View&lt;/h2&gt;
&lt;p&gt;Dependencies exist because of how you design systems of work. A flawed system will always overpower the best intentions of the people inside it. The behaviours you see are simply the consequences of the structures you created.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Siloed teams generate handoffs and queues that slow everything down.&lt;/li&gt;
&lt;li&gt;Ambiguous ownership breeds uncertainty and political friction.&lt;/li&gt;
&lt;li&gt;Implicit contracts guarantee surprises and rework.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not accidents; they are deliberate design choices, even if unacknowledged. Left unchecked, they act as amplifiers of waste, magnifying delay, variability, and risk across the organisation. Dependencies are one of the clearest forms of systemic waste and delay, and every appearance of them is a call to redesign.&lt;/p&gt;
&lt;p&gt;The answer is not to manage harder but to redesign. You remove the cause rather than chase the symptom. That is the work of stewardship: shaping structures, policies, and boundaries so that flow becomes natural and dependencies are engineered out of existence.&lt;/p&gt;
&lt;p&gt;Organisations that aggressively eliminate dependencies consistently show:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faster cycle times.&lt;/li&gt;
&lt;li&gt;Fewer integration defects.&lt;/li&gt;
&lt;li&gt;Higher team morale due to autonomy.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Frameworks like &lt;strong&gt;Nexus&lt;/strong&gt; put dependency management front and centre, but the real lesson is that dependencies are signals of poor alignment. The &lt;strong&gt;Kanban Guide&lt;/strong&gt; emphasises WIP limits and flow efficiency; dependencies are often the hidden WIP that destroys predictability. &lt;strong&gt;Evidence-Based Management&lt;/strong&gt; encourages us to inspect value delivery capability; dependencies are one of the clearest capability killers.&lt;/p&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="closing-the-loop"&gt;Closing the Loop&lt;/h2&gt;
&lt;p&gt;When someone asks, &lt;em&gt;“How do you manage dependencies?”&lt;/em&gt;, the radical answer is: &lt;strong&gt;you don’t.&lt;/strong&gt; You redesign your teams, architecture, and workflow to eliminate dependencies from the outset. You only manage what’s left when all else fails, and you treat every remaining dependency as a design flaw to be removed. That’s how you maximise autonomy, accelerate flow, and reduce risk.&lt;/p&gt;
&lt;p&gt;Stop normalising dependency management as a project management activity. Managing dependencies is treating the symptom. Leadership must instead redesign the system to eliminate the cause. Every dependency you remove is a gift to your teams and your customers. So next time someone asks you how you manage dependencies, give them the only honest answer: &lt;strong&gt;we don’t; we remove them.&lt;/strong&gt;&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/ebnuwjszxye/share.png"/>
    </item>
    <item>
      <title>The Estimation Trap: How Tracking Accuracy Undermines Trust, Flow, and Value in Software Delivery</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/the-estimation-trap-how-tracking-accuracy-undermines-trust-flow-and-value-in-software-delivery/</link>
      <pubDate>Mon, 22 Sep 2025 09:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/the-estimation-trap-how-tracking-accuracy-undermines-trust-flow-and-value-in-software-delivery/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Philosophy</category>
      <category>Product Development</category>
      <category>Leadership</category>
      <category>Engineering Excellence</category>
      <description>Focusing on estimation accuracy as a measure of predictability in software delivery undermines trust, distorts team behaviour, and delivers false signals about progress. When teams are judged on how closely they match estimates to actuals, they shift from solving problems to gaming metrics: padding estimates, avoiding risk, hiding delays, and reporting “green” status until last-minute failure. In one case, teams capped story size and sprint points to appear predictable, but innovation and quality deteriorated, while technical debt doubled. Research shows that using estimation accuracy as a KPI leads to defensive, less truthful forecasting and reduced efficiency. Instead of tracking compliance with estimates, organisations should follow Evidence-Based Management, using metrics like time to market, customer satisfaction, and flow efficiency to measure value, system health, and real outcomes. True progress comes when teams feel safe to expose complexity and risks, focusing on learning and value rather than conformity to plans.</description>
      <content:encoded>&lt;p&gt;In many software organisations, estimation accuracy is mistaken for predictability and control. Leadership asks teams to compare &lt;em&gt;original estimates&lt;/em&gt; to &lt;em&gt;actuals&lt;/em&gt; in hopes of improving forecasts. But this creates a false sense of certainty , one that undermines trust, distorts priorities, and derails delivery.&lt;/p&gt;

    
    

  

&lt;h2 id="when-the-metric-becomes-the-target"&gt;When the Metric Becomes the Target&lt;/h2&gt;
&lt;p&gt;Metrics are never neutral. Once teams are judged by how closely they meet estimated timelines or planned outputs, those metrics stop reflecting the truth. The more visible and enforced the target becomes, the more teams adapt, not to improve outcomes, but to survive the system. What follows is a cascade of distorted behaviours: silence replaces honesty, delivery becomes performance theatre, and metrics become tools of compliance rather than learning. The following patterns are not outliers; they are systemic symptoms of measurement misuse.&lt;/p&gt;


  

&lt;h3 id="malicious-compliance-when-teams-give-up-on-caring"&gt;Malicious Compliance: When Teams Give Up on Caring&lt;/h3&gt;
&lt;p&gt;When systems overemphasise compliance, teams don’t rebel; they comply. Maliciously. They log the hours. They meet the metrics. They do exactly what’s asked; but no more. They stop asking questions. They stop raising concerns. They stop caring.&lt;/p&gt;
&lt;p&gt;This kind of mechanical compliance doesn’t improve delivery; it undermines it. Developers fill in timesheets at the end of the week with whatever gets approved. They make up hours to satisfy reporting tools. What ends up in the system looks clean and green, but it’s fiction.&lt;/p&gt;
&lt;p&gt;And what gets lost is far worse: safety, curiosity, technical excellence, and any sense of pride in the outcome. A culture of malicious compliance breeds disengagement, risk blindness, and degraded quality. If you’re measuring in six-minute increments, you’re not managing for value. You’re auditing obedience.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h3 id="green-shifting-when-metrics-replace-truth"&gt;Green Shifting: When Metrics Replace Truth&lt;/h3&gt;
&lt;p&gt;Once metrics become the focus, honesty becomes optional. Teams under pressure to hit targets will show green status until the very moment they can’t hide red anymore. This phenomenon, sometimes called “green shifting,” isn’t a failure of individuals. It’s the predictable result of a system that rewards status optics over empirical feedback.&lt;/p&gt;
&lt;p&gt;When the dashboard matters more than the work, risk gets buried. Quality is sidelined. And problems that could’ve been solved early are deferred until they explode. This isn’t management; it’s theatre.&lt;/p&gt;


  

&lt;h3 id="fear-driven-delivery"&gt;Fear-Driven Delivery&lt;/h3&gt;
&lt;p&gt;When performance is judged by how closely estimates match actuals, teams shift into survival mode. Psychological safety evaporates. People stop flagging problems, bugs, and risks. It’s not due to apathy, but fear of missing the number. Defects get buried. Safety is deferred. Risk is hidden.&lt;/p&gt;
&lt;p&gt;The focus moves from building the right thing to defending the wrong metric.&lt;/p&gt;
&lt;p&gt;When you penalise unpredictability, you don’t get more predictability. You get fear, silence, and a culture optimised for hiding reality. This is how delivery becomes theatre.&lt;/p&gt;


  

&lt;h3 id="distorted-behaviours-and-false-success"&gt;Distorted Behaviours and False Success&lt;/h3&gt;
&lt;p&gt;Comparing estimates to actuals can be useful for learning, but when it becomes a performance metric, it changes behaviour. Teams are no longer incentivised to improve forecasting; they’re incentivised to &lt;em&gt;look predictable&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;What happens next is entirely predictable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Padding&lt;/strong&gt;: Teams inflate estimates to guarantee hitting the target.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In one large organisation, teams were told they could deliver no more than five points per story, and no more than 24 points per sprint. The result? Teams padded everything to hit exactly 24 points. Story sizes gravitated to five points regardless of complexity. Innovation vanished, curiosity died, and delivery became a game of maximising perceived output. They met the metric perfectly and completely undermined the point of estimation. This is what happens when the system is designed for optics, not outcomes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Risk aversion&lt;/strong&gt;: Complex and innovative work is avoided because it’s difficult to estimate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope distortion&lt;/strong&gt;: Work is redefined midstream to match the estimate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;False success&lt;/strong&gt;: Projects finish “on time” and “on budget,” but deliver little value. Many organisations never validate whether the promised benefits were actually realised. One team might deliver a multimillion-dollar system, only for no one to ever measure its usage or customer impact. The project is declared a success, but no one checks if it made a difference. In some cases, even the most advanced organisations fall into this trap. The cost of not checking actual outcomes is hidden until it&amp;rsquo;s too late.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These aren’t edge cases; they’re rational adaptations to a distorted system. The result is a culture of compliance, not curiosity.&lt;/p&gt;





  &lt;blockquote class="blockquote"&gt;
    &lt;p&gt;&lt;strong&gt;Thurlow’s Law of Metric Distortion&lt;/strong&gt;: “Any metric you measure will appear to improve in the short term. This doesn’t mean the system improved, only that people adjusted their behaviour to game the metric.”&lt;/p&gt;

  &lt;/blockquote&gt;



  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Reading about it is a start. Capability is the point.&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;I teach this. Not from someone else&amp;#39;s slide deck: from the client work I was doing last week. Short sessions, applied inside your real work, spread over weeks until it sticks.&lt;/p&gt;
        &lt;a href="https://courses.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="training" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;Find the right course or programme →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h3 id="the-system-learns-to-lie"&gt;The System Learns to Lie&lt;/h3&gt;
&lt;p&gt;This principle highlights a broader risk. Once teams realise they’re being judged on metric performance, they start optimising for appearances. They stop focusing on delivery, learning, and value. The metric becomes a distraction from what really matters. It reinforces behaviours that prioritise green dashboards over working software. This is how green shifting starts. Status reports stay green until the moment they can no longer hide the red. It’s not deceit. It’s self-preservation. In a system optimised for appearances, truth is delayed until failure is unavoidable. The focus shifts away from delivery, learning, and value.&lt;/p&gt;


  

&lt;h2 id="the-evidence-behind-the-trap"&gt;The Evidence Behind the Trap&lt;/h2&gt;
&lt;p&gt;Studies from Lederer &amp;amp; Prasad, Jørgensen, and others show that using estimation accuracy as an evaluation criterion strongly influences behaviour, and often negatively. When estimation accuracy becomes a KPI, it reshapes incentives across the system, often with unintended results. One experimental study (Lorko et al., 2022) found that when participants were rewarded solely for estimation accuracy, they systematically overestimated and deliberately slowed down to “finish on schedule.” The appearance of control was preserved, but efficiency was lost.&lt;/p&gt;
&lt;p&gt;Another study (Jørgensen &amp;amp; Grimstad, 2008) showed that people who knew they’d be judged on their estimates produced more biased and less realistic figures. They weren’t aiming for truth; they were aiming for safety.&lt;/p&gt;
&lt;p&gt;This is a textbook example of Goodhart’s Law. When a measure becomes a target, it stops being useful as a measure and starts driving the wrong behaviours.&lt;/p&gt;





  &lt;blockquote class="blockquote"&gt;
    &lt;p&gt;&lt;strong&gt;Goodhart&amp;rsquo;s law:&lt;/strong&gt;  &amp;ldquo;Any observed statistical regularity will tend to collapse once pressure is placed upon it for control purposes.&amp;rdquo;&lt;/p&gt;

  &lt;/blockquote&gt;



  

&lt;h3 id="trust-is-a-two-way-street"&gt;Trust Is a Two-Way Street&lt;/h3&gt;
&lt;p&gt;If you treat your engineers like they’re untrusted contractors who need to account for every six-minute increment, don’t be surprised when morale tanks. One developer put it bluntly: “If you’re going to track me like a machine, don’t expect me to act like an innovator.” Research shows employees who feel trusted are more engaged and productive. Conversely, heavy time tracking breeds a culture of micromanagement and mistrust. More than half of knowledge workers say time tracking actually prevents them from doing their best work. When people feel every minute is under a microscope, they’re less likely to ask questions or offer improvements. You’re starving your team of psychological safety, and with it, the conditions for innovation, quality, and honesty. When people are punished for missing estimates, they stop raising risks. They stop discussing trade-offs. Data becomes performative. The real work gets buried under ritual. The system becomes more predictable on paper, but more brittle in reality.&lt;/p&gt;


  

&lt;h3 id="bad-estimates-dont-make-you-a-bad-developer"&gt;Bad Estimates Don’t Make You a Bad Developer&lt;/h3&gt;
&lt;p&gt;Software development is creative problem-solving. No two tasks are truly alike. You can’t reliably predict how long it will take to untangle a thorny bug or integrate a library. Sometimes, a “quick” fix can turn into a two-day rabbit hole. So why beat people up when they miss an arbitrary prediction? Estimating in hours assumes everyone is equally experienced and works at a constant pace. They don’t. Pressuring developers to “improve” their guesses assumes effort and duration are predictable. In knowledge work, they’re not. It only creates stress and encourages padding or sandbagging. It’s a game with no winners.&lt;/p&gt;


  

&lt;h3 id="time-pressure-kills-quality"&gt;Time Pressure Kills Quality&lt;/h3&gt;
&lt;p&gt;When management’s only lever is the schedule, quality suffers. Tom DeMarco and Tim Lister, in &lt;em&gt;Peopleware&lt;/em&gt;, warn that unreachable deadlines force developers to cut corners: “Workers kept under extreme time pressure will begin to sacrifice quality… deliver products that are unstable and not really complete.” Lab studies back this up. Developers under tight time pressure work faster, not better, and quality drops. And when shortcuts pile up, the cost isn’t just bugs, it’s fragile systems, frustrated customers, and eroded trust.&lt;/p&gt;


  

&lt;h3 id="hours-worked-do-not-equal-value-delivered"&gt;Hours Worked Do Not Equal Value Delivered&lt;/h3&gt;
&lt;p&gt;Customers don’t buy effort, hours, or estimation accuracy. They buy working software that solves their problems. A day spent cleaning up architecture might look unproductive on a timesheet, but it delivers enormous long-term value. Optimising for logged time only encourages burnout, presenteeism, and a celebration of busyness over outcomes.&lt;/p&gt;
&lt;p&gt;Metrics like velocity or hours measure output, but they don’t measure the value customers care about. It’s better to track what matters: how frequently you can deliver features, how quickly you recover from failures, and whether you’re improving the user experience. These metrics help track how fast you’re learning (Time to Market), how much waste exists in your delivery process (Ability to Innovate), and whether users are sticking around and benefiting from what you’ve delivered (Current Value).&lt;/p&gt;


  

&lt;h2 id="what-to-do-instead"&gt;What to Do Instead&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re serious about improving delivery outcomes, stop obsessing over time. Time-based metrics show what happened, not what mattered. They miss the nuance of complexity, cognition, and asynchronous problem-solving. When you treat delivery like stopwatch management, you reward appearances over insight.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Evidence-Based Management (EBM)&lt;/strong&gt; is a way of managing with data that reflects actual outcomes and system capability. It helps leaders move beyond speculation by focusing on what is observable and valuable.&lt;/p&gt;
&lt;p&gt;Good decisions start with real data, not guesses. EBM helps teams and leaders focus on what actually delivers value, not what was forecast, promised, or imagined.&lt;/p&gt;
&lt;p&gt;In large-scale systems, direct customer contact is rare. That makes feedback loops even more critical. We must rely on proxy signals like usage trends, satisfaction scores, defect trends, and change failure rates to know if we&amp;rsquo;re on track. Not every team needs direct access to the customer, but every team needs access to evidence that what they shipped is working.&lt;/p&gt;
&lt;p&gt;EBM encourages decisions based on what is actually happening, rather than what was &lt;em&gt;predicted&lt;/em&gt;. Forecasts can support decision-making, but only when used transparently to explore assumptions, not when turned into compliance targets. When forecast accuracy becomes a performance metric, it violates empiricism by rewarding appearances rather than actual outcomes.&lt;/p&gt;
&lt;p&gt;Leadership must create transparency around outcomes, not intentions. This means embracing metrics that reflect customer value, system health, and delivery capability, even when they challenge the status quo.&lt;/p&gt;
&lt;p&gt;Let’s be clear: in complex, knowledge-based work, there is no meaningful diagnostic value in “estimate vs actual.” Take, for example, a cross-functional team building an internal developer platform. In the first quarter, leadership tracked the estimated vs actual across epics to improve forecasting. Developers quickly learned to overestimate tasks, avoided exploratory work, and padded estimates to match targets. The numbers looked better, but progress slowed, innovation stalled, and valuable refactoring work vanished from the backlog. By the time leadership realised the disconnect, technical debt had doubled. The team hadn’t become more predictable; it had simply become more cautious and less effective. This is the cost of measuring the wrong thing. It leads to the wrong conclusions.&lt;/p&gt;





  &lt;blockquote class="blockquote"&gt;
    &lt;p&gt;&amp;ldquo;Estimate vs actual measures the work, but the waste lives in the gaps , the wait, the handoff, the delay. So you&amp;rsquo;re optimising the wrong thing.&amp;rdquo;
- Nigel Thurlow&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;p&gt;This is a clear example of Systems Thinking, as outlined in The Flow System (Thurlow et al., 2020). The true constraint rarely lies in the task. It lies in the system: the queues, context switching, blocked dependencies, or fragmented communication paths that hinder the delivery of value. In most cases, the constraint lies in the workflow, rather than in the functions themselves.&lt;/p&gt;
&lt;p&gt;Even when used &amp;ldquo;diagnostically&amp;rdquo;, estimate vs actual as a metric misleads:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It ignores queues, rework, and dependencies, which are often the actual sources of delay. Lean thinking teaches us that to improve flow we must visualise queues, limit work in progress (WIP), and actively manage handoffs; none of which are addressed by focusing on task-level estimate variance.&lt;/li&gt;
&lt;li&gt;It reinforces the illusion that better estimation leads to better outcomes.&lt;/li&gt;
&lt;li&gt;It promotes local optimisation over systemic improvement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A reminder of &lt;strong&gt;Thurlow’s Principle of Estimation Distortion&lt;/strong&gt; above!&lt;/p&gt;


  

&lt;h3 id="a-better-path-forward-with-evidence-based-management"&gt;A Better Path Forward with Evidence-Based Management&lt;/h3&gt;
&lt;p&gt;EBM organises improvement around four Key Value Areas (KVAs):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Current Value&lt;/strong&gt; - Are We Delivering Value to Customers and Stakeholders Today?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unrealised Value&lt;/strong&gt; - What additional value could we deliver in the future?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time to Market&lt;/strong&gt; - How quickly can we learn, respond, and deliver?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ability to Innovate&lt;/strong&gt; - How effectively can we change and adapt the product?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The metrics we use should support these questions, not distract from them. Here&amp;rsquo;s how EBM-oriented alternatives compare:&lt;/p&gt;






&lt;div class="table-responsive"&gt;
  &lt;table class="table table-striped align-middle"&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th scope="col"&gt;Instead of&amp;hellip;&lt;/th&gt;
              &lt;th scope="col"&gt;Try&amp;hellip;&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Estimate vs Actual&lt;/td&gt;
              &lt;td&gt;End-to-end lead time from commitment to usable customer delivery (&lt;em&gt;Time to Market&lt;/em&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Story points completed&lt;/td&gt;
              &lt;td&gt;Customer satisfaction (&lt;em&gt;Current Value&lt;/em&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;On-time delivery rate&lt;/td&gt;
              &lt;td&gt;Quality Trends, or % of effort on new vs sustaining work (&lt;em&gt;Ability to Innovate&lt;/em&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Headcount-based planning&lt;/td&gt;
              &lt;td&gt;Opportunity backlog delta (&lt;em&gt;Unrealised Value&lt;/em&gt;)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;







  &lt;div class="alert alert-warning subtle-alert" role="alert"&gt;
    
      &lt;h5 class="alert-heading subtle-heading"&gt;
        ⚠️
        Warning
      &lt;/h5&gt;
    
    &lt;p class="subtle-text"&gt;&lt;p&gt;Time-based metrics must be contextualised. Without insight into value, complexity, and customer outcomes, they risk becoming another distorted proxy.&lt;/p&gt;&lt;/p&gt;
  &lt;/div&gt;

&lt;p&gt;To understand and improve delivery, stop obsessing over how close your guesses were. Instead, measure how your system behaves across the value stream and under varying flow loads. EBM encourages the use of actionable, outcome-aligned metrics that reflect actual system health, rather than projected compliance.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cycle time trends&lt;/strong&gt; can reveal delivery latency across the value stream, but must be interpreted with caution. Without understanding the nature and complexity of the work, as well as its value, these trends are just noise. Measure flow to inspect how the system behaves, not how long individual items take.





  &lt;div class="alert alert-info subtle-alert" role="alert"&gt;
    
      &lt;h5 class="alert-heading subtle-heading"&gt;
        ℹ️
        Note
      &lt;/h5&gt;
    
    &lt;p class="subtle-text"&gt;&lt;p&gt;Cycle time only tracks how long one piece of work took. It says nothing about what the customer waited for or whether the system is flowing well. Lead time tells you how long the customer waits, starting from the moment a request is made until they receive something usable. Always measure from the outside in.&lt;/p&gt;&lt;/p&gt;
  &lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work item ageing&lt;/strong&gt; reveals stuck or neglected work, or requirements that were added and then discarded.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flow efficiency&lt;/strong&gt; indicates the proportion of total time spent progressing work versus waiting. It’s a measure of delay, not value. But beware: systems often mask latency by moving queued work into “in progress” prematurely. High flow efficiency with unchanged lead time may signal gaming.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Throughput variance&lt;/strong&gt; only tells you something if your work items are roughly the same size. If not, throughput becomes noise. Teams that right-size work can use this as a stability signal. Otherwise, avoid using it as an indicator of performance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you must discuss estimates, use them to explore assumptions and complexity, not to evaluate people. The ultimate goal is to deliver meaningful outcomes to customers. That requires embracing uncertainty, surfacing impediments, and improving system capability. The aim is not to enforce forecast compliance. Value lies in understanding, not accuracy.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;De-emphasise &amp;rsquo;estimate vs actual&amp;rsquo; entirely&lt;/strong&gt;. It is a false signal in complex domains.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reward flow mastery, not forecasting tricks&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus on learning, adaptability, and real customer outcomes.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estimation should support informed conversations about uncertainty. It should not become a tool used to force predictability.&lt;/p&gt;


  

&lt;h3 id="quantitative-vs-qualitative"&gt;Quantitative vs Qualitative&lt;/h3&gt;
&lt;p&gt;Most metrics in delivery are quantitative, including lead time, flow efficiency, and throughput. But numbers don’t tell the whole story. If you want to know whether you’re building the right thing, you need qualitative feedback: real customer conversations, issue sentiment, satisfaction narratives, and behavioural observations.&lt;/p&gt;
&lt;p&gt;Quantitative data tells you &lt;strong&gt;what&lt;/strong&gt; happened. Qualitative insight helps you understand &lt;strong&gt;why&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;No chart or trendline can replace a conversation with a frustrated user or a support ticket that describes unmet needs. The most resilient teams blend data with dialogue, metrics with meaning.&lt;/p&gt;


  

&lt;h3 id="radical-candour-have-the-courage-to-stop"&gt;Radical Candour: Have the Courage to Stop&lt;/h3&gt;
&lt;p&gt;This isn’t about shielding teams from accountability. It’s about holding ourselves accountable to a higher standard of leadership. Framing time estimate accuracy as a condition for trust is a failure of leadership. It signals a lack of psychological safety and a misunderstanding of how complex work unfolds. True leadership fosters environments where learning is safe, discovery is encouraged, and performance is judged by value, not conformity to expectations. It’s not helping them grow; it’s punishing them for unpredictability inherent in complex work. Radical candour means caring personally and challenging directly. The challenge here is to stop clinging to false certainty and instead focus on the outcomes that matter for your business and your customers.&lt;/p&gt;
&lt;p&gt;Don’t replace one flawed proxy with another. Metrics like cycle time, throughput, or flow efficiency are helpful, but only as part of a broader conversation about value, quality, and improvement. Alone, they tell you nothing about whether you’re solving the correct problems or improving customer outcomes. Consider adopting Evidence-Based Management and DORA to shift focus toward empiricism and value flow across the organisation. Talk with your team about impediments and improvements rather than the hours they logged. When you remove the spotlight from the clock, you’ll find your people deliver better software, enjoy their work more, and build trust along the way.&lt;/p&gt;


  

&lt;h2 id="in-summary"&gt;In Summary&lt;/h2&gt;
&lt;p&gt;The Estimation Trap appears to be a process improvement effort. But underneath it creates a fear-based culture that rewards gaming and punishes uncertainty. It distorts delivery and kills innovation in the name of control.&lt;/p&gt;
&lt;p&gt;All quantitative measures can do, is inform of system &lt;em&gt;efficiency&lt;/em&gt;. They cannot inform of system &lt;em&gt;effectiveness&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;Instead of asking, “Why didn’t we match our original estimate?” ask, “What did we learn, how did we adapt, and are we improving the outcomes that matter?”&lt;/p&gt;
&lt;p&gt;Real progress starts when people feel safe enough to tell the truth about complexity, risk, and what it actually takes to deliver. That’s the objective measure of a team delivering meaningful outcomes, improving their system, and creating value for customers.&lt;/p&gt;
&lt;hr&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.theflowsystem.com" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Thurlow, Nigel; Turner, Brian Rivera; Helm, John. &lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;em&gt;&lt;a href="https://www.theflowsystem.com" class="external-link" target="_blank" rel="noopener noreferrer"&gt;The Flow System: The Evolution of Agile and Lean Thinking in an Age of Complexity&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.theflowsystem.com" class="external-link" target="_blank" rel="noopener noreferrer"&gt; (2020)&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doi.org/10.1111/j.1540-5915.1998.tb01356.x" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Lederer &amp;amp; Prasad (1998). &amp;ldquo;A causal model for software cost estimating error&amp;rdquo;&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4213670" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Lorko et al. (2022). &amp;ldquo;Hidden Inefficiency: Strategic Inflation of Project Schedules&amp;rdquo;&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sciencedirect.com/science/article/abs/pii/S0950584908000852" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Jørgensen &amp;amp; Grimstad (2008). &amp;ldquo;The impact of irrelevant and misleading information on software development effort estimates&amp;rdquo;&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sciencedirect.com/science/article/pii/S0164121203000581" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Jørgensen (2004). &amp;ldquo;A review of studies on expert estimation of software development effort&amp;rdquo;&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pubsonline.informs.org/doi/abs/10.1287/mnsc.45.8.1104" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Abdel-Hamid et al. (1999). &amp;ldquo;The dynamics of software project performance&amp;rdquo;&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.runn.io/blog/peopleware-book-summary" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Peopleware Book Summary&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC7810279/" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Impact of time pressure on software quality&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://we360ai.medium.com/why-managers-should-focus-on-outcomes-not-hours-and-how-to-do-it-bcde6625693e" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Why Managers Should Focus on Outcomes, Not Hours&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://itrevolution.com/products/accelerate" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Accelerate: The Science of Lean Software and DevOps (Forsgren, Humble, Kim)&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://queue.acm.org/detail.cfm?id=3454124" class="external-link" target="_blank" rel="noopener noreferrer"&gt;SPACE Framework Whitepaper (GitHub)&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.easyagile.com/blog/why-leading-agile-teams-focus-on-customer-value" class="external-link" target="_blank" rel="noopener noreferrer"&gt;Why Leading Agile Teams Focus on Customer Value&lt;sup class="nkda-link-icon" aria-hidden="true"&gt;&lt;i class="fa-solid fa-arrow-up-right-from-square"&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/re-_hlb3y34/share.png"/>
    </item>
    <item>
      <title>Is Agile Really Just a Mindset?</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/is-agile-really-just-a-mindset/</link>
      <pubDate>Mon, 11 Aug 2025 09:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/is-agile-really-just-a-mindset/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Ethos</category>
      <category>Technical Leadership</category>
      <category>Engineering Excellence</category>
      <description>Agile is not a mindset or just a set of behaviours; it is a disciplined system of work rooted in technical leadership, engineering excellence, and empirical control. True Agile requires that the system—codebase, infrastructure, deployment pipelines, and product strategy—supports frequent, reliable delivery, not just collaborative behaviour or feel-good language. Foundational engineering practices like CI/CD, automated checking, telemetry, and modular system design are non-negotiable; without them, Agile efforts are just theatre. Outsourcing Agile to non-technical coaches dilutes its reality and impact, as systems, not individuals, determine outcomes. As Deming said, “A bad system will beat a good person every time.” Agile only exists where systems continuously enable delivery of real value.</description>
      <content:encoded>&lt;p&gt;Let’s get one thing straight: &lt;strong&gt;Agile is not a mindset.&lt;/strong&gt; And it’s certainly not just about behaviour. That lazy framing dilutes the discipline, ignores the engineering reality, and gives cover to incompetence.&lt;/p&gt;
&lt;p&gt;Agile for software development is a &lt;strong&gt;delivery discipline grounded in technical leadership, empirical control, and engineering excellence&lt;/strong&gt;. If your so-called “Agile transformation” doesn’t touch your code, your infrastructure, your deployment pipelines, or your product strategy, then you’re not Agile, you’re just busy.&lt;/p&gt;

    
    

  

&lt;h2 id="agile-isnt-a-mindset-its-a-system-of-work"&gt;Agile Isn’t a Mindset. It’s a System of Work.&lt;/h2&gt;
&lt;p&gt;The term “Agile mindset” has become a smoke screen for vague, feel-good language that conveniently ignores the hard parts: architecture, observability, checkability, and releasability. A mindset doesn’t ship working software. A system does.&lt;/p&gt;
&lt;p&gt;Agile is a &lt;strong&gt;strategy for managing complexity&lt;/strong&gt;. It draws on an &lt;strong&gt;empirical ethos&lt;/strong&gt; to deal with uncertainty. While Agile principles support this ethos through practices like continuous delivery, frequent reflection, and embracing change, they stop short of formalising it. Agile leaves room for interpretation, which is both its power and its weakness.&lt;/p&gt;
&lt;p&gt;Instead of prescription, Agile encourages conditions that make learning and adaptation possible:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deliver working software frequently.&lt;/li&gt;
&lt;li&gt;Reflect regularly on how to become more effective.&lt;/li&gt;
&lt;li&gt;Embrace change, even late in development.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This isn’t methodology. It’s operational discipline.&lt;/p&gt;


  

&lt;h2 id="behaviour-is-necessary-but-not-sufficient"&gt;Behaviour Is Necessary, but Not Sufficient&lt;/h2&gt;
&lt;p&gt;Yes, agility requires certain behaviours: collaboration, openness to change, and continuous learning. But those behaviours are not the whole picture. They’re the byproducts of &lt;strong&gt;well-designed systems&lt;/strong&gt;, not the system itself.&lt;/p&gt;
&lt;p&gt;If you want teams to behave “agile,” you need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give them working CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;Define a clear and realistic shared quality standard.&lt;/li&gt;
&lt;li&gt;Stop flooding them with WIP and start managing flow.&lt;/li&gt;
&lt;li&gt;Align work to meaningful goals with clear delivery expectations.&lt;/li&gt;
&lt;li&gt;Enable them to ship to production regularly and reliably.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Without engineering and system design, Agile behaviours collapse under pressure.&lt;/strong&gt;&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="engineering-practices-are-the-backbone-of-agility"&gt;Engineering Practices Are the Backbone of Agility&lt;/h2&gt;
&lt;p&gt;Agile without engineering is theatre. You might have sticky notes and daily standups, but if you can’t deliver reliable, high-quality software frequently, you&amp;rsquo;re not Agile.&lt;/p&gt;
&lt;p&gt;Here’s what engineering excellence looks like in Agile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Continuous Integration &amp;amp; Deployment (CI/CD)&lt;/strong&gt;: Small, safe, frequent releases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated Checking&lt;/strong&gt;: Fast, repeatable validation that gives developers confidence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt;: Reproducible environments with version control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Telemetry and Observability&lt;/strong&gt;: Insight into live systems for fast feedback and debugging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design for Replaceability&lt;/strong&gt;: Modular, cohesive systems you can change without fear.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not “nice-to-haves.” They are foundational. If your teams can’t ship to production at regular, sustainable intervals, you’re not Agile, you’re just going through the motions.&lt;/p&gt;


  

&lt;h2 id="stop-outsourcing-agile-to-coaches-who-dont-code"&gt;Stop Outsourcing Agile to Coaches Who Don’t Code&lt;/h2&gt;
&lt;p&gt;A big part of the problem is that we’ve allowed Agile to be colonised by people with no engineering background. They talk about collaboration, but not architecture. They push for psychological safety, but ignore version control hygiene. They love retrospectives but can’t read a cycle time chart.&lt;/p&gt;
&lt;p&gt;This isn’t a personal attack. It’s a &lt;strong&gt;call for accountability&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re coaching Agile teams and you don’t understand modern engineering practices, DevOps, CI/CD, telemetry, checkability, you’re not equipped to lead agility in software.&lt;/p&gt;
&lt;p&gt;Agile is not a therapy session. It’s not a motivational poster. It is a &lt;strong&gt;system of delivery&lt;/strong&gt; designed to maximise value under conditions of uncertainty. And if we want to keep calling it that, we’d better start treating it with the rigour it deserves.&lt;/p&gt;


  

&lt;h2 id="a-bad-system-will-beat-a-good-person-every-time"&gt;&amp;ldquo;A bad system will beat a good person every time.&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Deming’s insight isn’t a philosophical quip, it’s a brutal truth. In Agile environments, we often celebrate the heroics of individuals, when we should be interrogating the design of the system. Good people trapped in bad systems burn out, give up, or conform.&lt;/p&gt;
&lt;p&gt;This is where &lt;strong&gt;Larman’s Law&lt;/strong&gt; comes in: &lt;em&gt;“Organisations are implicitly optimised to avoid changing the status quo middle-management and specialist roles, power structures and political boundaries.”&lt;/em&gt; It explains why many Agile initiatives fail. Not because people resist Agile, but because the system resists accountability.&lt;/p&gt;
&lt;p&gt;Agile invites change, but organisations repel it. Instead of redesigning systems of work, they repurpose Agile into just another management fad. Sticky notes go up. Certifications get handed out. But the constraints, silos, and dysfunction remain untouched.&lt;/p&gt;
&lt;p&gt;If your structure still depends on project gates, command hierarchies, and stage approvals, you haven’t adopted Agile. You’ve institutionalised waste.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Systems produce outcomes. Not individuals.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Want to see agility? Look at the architecture. Look at how teams form, flow, and deliver. Look at what the system makes &lt;em&gt;easy&lt;/em&gt; and what it makes &lt;em&gt;hard&lt;/em&gt;. If it’s easier to follow process than to deliver value, your system is broken, no matter how agile your people are.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Reading about it is a start. Capability is the point.&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;I teach this. Not from someone else&amp;#39;s slide deck: from the client work I was doing last week. Short sessions, applied inside your real work, spread over weeks until it sticks.&lt;/p&gt;
        &lt;a href="https://courses.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="training" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;Find the right course or programme →&lt;/a&gt;
      &lt;/aside&gt;

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="finally"&gt;Finally&lt;/h2&gt;
&lt;p&gt;Let’s kill the myth:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agile is &lt;strong&gt;not a mindset&lt;/strong&gt;. It is a discipline.&lt;/li&gt;
&lt;li&gt;Agile is &lt;strong&gt;not only about behaviour&lt;/strong&gt;. It’s about delivery.&lt;/li&gt;
&lt;li&gt;Agile is &lt;strong&gt;not a feeling&lt;/strong&gt;. It’s a feedback-driven engineering strategy.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Agile is the deliberate design of systems that enable autonomy, accountability, and continuous delivery of value.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’re not delivering, you’re not Agile. Period.&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/abbvdmbz5fi/share.png"/>
    </item>
    <item>
      <title>Stop Building Silos. Start Building Systems</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/stop-building-silos-start-building-systems/</link>
      <pubDate>Mon, 07 Jul 2025 09:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/stop-building-silos-start-building-systems/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Tool</category>
      <category>DevOps</category>
      <category>Engineering Excellence</category>
      <category>Technical Leadership</category>
      <description>Fragmented, ad-hoc automation stitched together across multiple tools creates a fragile, inefficient, and risky delivery process that slows software teams and leads to inconsistent results. Delivering quality at speed requires consolidating tools into a unified, observable system, such as One Engineering System (1ES) pioneered at Microsoft, which brings together Azure Pipelines, Repos, Boards, Artifacts, and integrated policy and telemetry. Platform Engineering is the strategy to deliver this, providing internal developer platforms that automate compliance, security, and operations, and boost developer self-sufficiency through templates and reusable services. A well-engineered system defines clear boundaries and supports team autonomy within them, leading to safer, faster, and more reliable delivery—no handoffs, no black-box deploys, one clear path from idea to production. Engineering excellence comes from systems that minimise friction and confusion, allowing teams to focus on product value instead of plumbing.</description>
      <content:encoded>&lt;p&gt;You can’t deliver quality at speed when your automation is duct-taped together. If your pipelines are stitched across multiple systems, your deployments depend on human rituals, and your tests run in the shadows, you don’t have a delivery system, you have a liability.&lt;/p&gt;
&lt;p&gt;If your automation strategy looks something like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manual SQL deployments from someone’s laptop&lt;/li&gt;
&lt;li&gt;Azure Pipelines building unversioned assemblies&lt;/li&gt;
&lt;li&gt;Manual deployment to dev and test environments&lt;/li&gt;
&lt;li&gt;TeamCity rebuilding new unversioned assemblies&lt;/li&gt;
&lt;li&gt;Octopus Deploy is deploying from Team City to staging and production&lt;/li&gt;
&lt;li&gt;Selenium tests running on a black-box scripted node that only one person monitors&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You’re not building a product. You’re building chaos. You’re not &lt;a href="https://engineering-leadership.hinshelwood.com/tags/scaling/"&gt;scaling&lt;/a&gt; a team. You’re scaling dysfunction.&lt;/p&gt;

    
    

  

&lt;h2 id="fragmentation-is-not-an-engineering-strategy"&gt;Fragmentation Is Not an Engineering Strategy&lt;/h2&gt;
&lt;p&gt;When every team uses a different deployment tool, stores secrets in a personal vault, and runs tests on unmonitored boxes, you’ve created a system that &lt;em&gt;no one&lt;/em&gt; understands and &lt;em&gt;no one&lt;/em&gt; can change safely.&lt;/p&gt;
&lt;p&gt;This isn’t flexibility. It’s fragility.&lt;/p&gt;
&lt;p&gt;Fragmentation leads to duplication of effort, inconsistent results, increased cognitive load, and slower delivery. You waste time debugging pipeline differences instead of building product value. And every deviation from a shared system adds risk to quality, security, and compliance.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://engineering-leadership.hinshelwood.com/categories/engineering-excellence/"&gt;Engineering excellence&lt;/a&gt; comes from enabling consistency where it matters, creating common foundations that support autonomy without sacrificing reliability. It comes from designing systems that are observable, changeable, and resilient, systems that empower teams through clarity, not confusion.&lt;/p&gt;
&lt;p&gt;This kind of fragmentation also violates the core ethos of &lt;a href="https://engineering-leadership.hinshelwood.com/categories/devops/"&gt;DevOps&lt;/a&gt;: &lt;a href="https://engineering-leadership.hinshelwood.com/tags/continuous-delivery/"&gt;continuous delivery&lt;/a&gt; of value through the union of people, processes, and products. If your toolchain is stitched together by tribal knowledge and Slack messages, you’re not enabling flow. You’re creating friction.&lt;/p&gt;


  

&lt;h2 id="devops-is-not-tooling-its-feedback-flow-and-learning"&gt;DevOps Is Not Tooling. It&amp;rsquo;s Feedback, Flow, and Learning&lt;/h2&gt;
&lt;p&gt;DevOps isn’t a toolkit war. It’s the discipline of enabling feedback, flow, and &lt;a href="https://engineering-leadership.hinshelwood.com/tags/continuous-learning/"&gt;continuous learning&lt;/a&gt; across the entire product lifecycle.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It’s about &lt;strong&gt;amplifying feedback loops&lt;/strong&gt;, build, test, and release systems that surface issues early and often.&lt;/li&gt;
&lt;li&gt;It’s about &lt;strong&gt;enabling flow&lt;/strong&gt;, removing friction between commit and customer, reducing handoffs and rework.&lt;/li&gt;
&lt;li&gt;It’s about &lt;strong&gt;fostering learning&lt;/strong&gt;, capturing telemetry, responding to incidents, and improving from every iteration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DevOps without visibility is cargo cult. DevOps across disconnected systems is just automation theatre. And DevOps without learning is just &lt;a href="https://engineering-leadership.hinshelwood.com/tags/technical-debt/"&gt;technical debt&lt;/a&gt; in fast-forward.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="building-one-engineering-system-1es-through-platform-engineering"&gt;Building One Engineering System (1ES) through Platform Engineering&lt;/h2&gt;
&lt;p&gt;If DevOps is the ethos, then &lt;strong&gt;&lt;a href="https://engineering-leadership.hinshelwood.com/tags/platform-engineering/"&gt;Platform Engineering&lt;/a&gt;&lt;/strong&gt; is the strategy, and &lt;strong&gt;&lt;a href="https://engineering-leadership.hinshelwood.com/tags/one-engineering-system/"&gt;One Engineering System&lt;/a&gt; (1ES)&lt;/strong&gt; is the execution model.&lt;/p&gt;
&lt;p&gt;Platform Engineering is not just infrastructure automation. It&amp;rsquo;s a practice grounded in DevOps principles that aims to improve every development team&amp;rsquo;s time-to-value, compliance, cost control, and security through &lt;strong&gt;improved developer experiences&lt;/strong&gt; and &lt;strong&gt;governed self-service&lt;/strong&gt;. It&amp;rsquo;s both a mindset shift and a system of reusable tools and services.&lt;/p&gt;
&lt;p&gt;Platform Engineering teams build and evolve &lt;strong&gt;Internal Developer Platforms (IDPs)&lt;/strong&gt;, paved paths that reduce cognitive load, eliminate manual gates, and guide teams safely toward production.&lt;/p&gt;
&lt;p&gt;These platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Help developers be self-sufficient (e.g. starter kits, templates, IDE integrations)&lt;/li&gt;
&lt;li&gt;Encapsulate patterns into reusable services&lt;/li&gt;
&lt;li&gt;Automate security and compliance checks&lt;/li&gt;
&lt;li&gt;Streamline operations and infrastructure management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1ES, pioneered at Microsoft, embodies this by unifying:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://engineering-leadership.hinshelwood.com/tags/azure-pipelines/"&gt;Azure Pipelines&lt;/a&gt;&lt;/strong&gt; for end-to-end CI/CD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://engineering-leadership.hinshelwood.com/tags/azure-repos/"&gt;Azure Repos&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;Boards&lt;/strong&gt;, and &lt;strong&gt;Artifacts&lt;/strong&gt; as a single source of truth&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt;, &lt;strong&gt;Policy as Code&lt;/strong&gt;, and integrated telemetry&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result: a secure, observable, scalable system where guardrails are built in and teams can move fast &lt;em&gt;without creating risk&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;No handoffs. No tool silos. No black-box deploys. One path from idea to production that every team and every skillset contributes to.&lt;/p&gt;
&lt;p&gt;You may be thinking that &amp;ldquo;this breaks self-management&amp;rdquo; and the agency of the teams. But self-management in Agile doesn’t mean chaos. &lt;a href="https://engineering-leadership.hinshelwood.com/categories/scrum/"&gt;Scrum&lt;/a&gt; Teams don’t self-manage in a vacuum, they operate within the boundaries defined by the organisation. Self-management means giving teams the autonomy to solve problems within a clearly defined system of constraints. That system of constraints, your engineering boundaries, your compliance requirements, your platform capabilities, is your Platform Engineering strategy, and your 1ES is your implementation of that strategy. It defines what good looks like. Those boundaries must be engineered and not left to tribal knowledge. If you want consistent results, define the edges and let the teams operate freely &lt;em&gt;within&lt;/em&gt; them.&lt;/p&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="consolidate-standardise-enable"&gt;Consolidate. Standardise. Enable.&lt;/h2&gt;
&lt;p&gt;If you want scale, you must design for it. That means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One build system.&lt;/li&gt;
&lt;li&gt;One deployment path.&lt;/li&gt;
&lt;li&gt;One way of managing secrets, tests, telemetry, and deployments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Azure Pipelines&lt;/strong&gt; is capable of it all. With templates, approvals, gates, agents, deployment groups, and environment strategies, everything you need to build a 1ES-style delivery platform is already there. Yes, there are other tools, but if you are already rooted in the Microsoft stack, then these purpose-built tools fit like a glove.&lt;/p&gt;
&lt;p&gt;Stop spreading your delivery process across half a dozen tools with no visibility. Pick a platform. Make it great. And let your teams focus on product, not plumbing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Engineering excellence isn’t about choosing the coolest tools.&lt;/strong&gt;&lt;br&gt;
It’s about building a system of work that enables every team to deliver safely, sustainably, and continuously.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stop optimising for familiarity. Start optimising for flow.&lt;/strong&gt;&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/zlhc3ukuwoj/share.png"/>
    </item>
    <item>
      <title>How to Build for Business Resilience and Continuity</title>
      <link>https://engineering-leadership.hinshelwood.com/articles/how-to-build-for-business-resilience-and-continuity/</link>
      <pubDate>Mon, 26 May 2025 09:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://engineering-leadership.hinshelwood.com/articles/how-to-build-for-business-resilience-and-continuity/</guid>
      <dc:creator>Martin Hinshelwood</dc:creator>
      <category>Capability</category>
      <category>DevOps</category>
      <category>Engineering Excellence</category>
      <category>Technical Leadership</category>
      <description>Business resilience must be built intentionally through intelligent systems design and disciplined operational practices. Effective resilience starts with comprehensive observability, including embedding telemetry everywhere and defining service level objectives for critical systems. Loose coupling of systems is essential, as shown by a real incident where the failure of Azure DevOps’ Profile Service crippled the platform due to tight integration; after this, circuit breakers and decoupling were aggressively implemented across services to prevent repeat failures. Deployments should be routine through continuous delivery, and teams must be empowered to act swiftly during incidents without hierarchical delays. True resilience requires designing for partial failures, embracing chaos engineering, and continuously measuring recovery and deployment metrics; anything less is gambling with business continuity.</description>
      <content:encoded>&lt;p&gt;Business resilience is not an accident. It is the deliberate outcome of intelligent systems design, pragmatic decision-making, and organisational discipline. If you want resilience, you must build for it, &lt;strong&gt;upfront, consistently, and aggressively&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Here is a pragmatic checklist for engineering true business resilience and continuity:&lt;/p&gt;

    
    

  

&lt;h2 id="observability-and-telemetry-first"&gt;Observability and Telemetry First&lt;/h2&gt;
&lt;p&gt;You cannot manage what you cannot see. You cannot fix what you cannot detect.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Embed telemetry at every level&lt;/strong&gt;: application, infrastructure, business processes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Define service level objectives (SLOs)&lt;/strong&gt; for your critical systems and actually measure against them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor leading indicators&lt;/strong&gt;, not just trailing failures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Establish a live site culture&lt;/strong&gt;, not a &amp;ldquo;we’ll find out when customers call&amp;rdquo; culture.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your systems are invisible until they explode, you are not resilient; you are negligent.&lt;/p&gt;


  

&lt;h2 id="decouple-systems-aggressively"&gt;Decouple Systems Aggressively&lt;/h2&gt;
&lt;p&gt;Coupling is a time bomb. When one piece falls, everything else falls with it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bounded contexts&lt;/strong&gt; are non-negotiable. Embrace them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No logic in the data tier.&lt;/strong&gt; Databases store data, not behaviour. If your business rules are locked in SQL, you are one outage away from a complete operational collapse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid shared databases&lt;/strong&gt;. Duplicate data if necessary. Loose coupling beats data purity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefer asynchronous messaging&lt;/strong&gt;. Synchronous systems are brittle under load and fail catastrophically.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Resilience comes from isolation. Systems must fail independently, not cascade like dominoes.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;If this sounds like your organisation, it isn&amp;#39;t your teams&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;Most of what I&amp;#39;m describing here lives in how the work is set up, not in your people. That setup was put in place by leadership, which means leadership can change it. Making it visible with evidence from your own delivery, then fixing it, is what I do for a living.&lt;/p&gt;
        &lt;a href="https://nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="nkdagility" data-ga-value="1" data-ga-param-position="3" data-ga-param-item-type="cross-sell"&gt;See how I work with organisations →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h3 id="when-the-user-profile-service-takes-out-the-entire-system"&gt;When the User Profile Service takes out the entire system&lt;/h3&gt;
&lt;p&gt;For a long time I have worked with the Azure &lt;a href="https://engineering-leadership.hinshelwood.com/categories/devops/"&gt;DevOps&lt;/a&gt; teams at Microsoft as an strategic customer and MVP and I have witnessed this lesson firsthand. One of the major outages of &lt;a href="https://engineering-leadership.hinshelwood.com/tags/azure-devops/"&gt;Azure DevOps&lt;/a&gt; was triggered by something that, at first glance, seemed trivial: the Profile Service. When the Profile Service went down, developers could no longer commit code, and product owners could not update backlog items. Why? Because the system could not resolve your friendly name from your authenticated ID.&lt;/p&gt;
&lt;p&gt;The service was so tightly coupled into critical user flows that its failure crippled the entire platform.&lt;/p&gt;
&lt;p&gt;In response, the teams created &amp;ldquo;live site incident&amp;rdquo; repair work and moved the Profile Service behind a &lt;strong&gt;circuit breaker&lt;/strong&gt;. If the Profile Service went down again, it would degrade gracefully, not drag down the entire experience.&lt;/p&gt;
&lt;p&gt;As an anecdotal aside, a few months later another unrelated service failed, and, unsurprisingly, it also took down large parts of the system. That was the final straw. The teams went on a full-scale mission to introduce the &lt;strong&gt;circuit breaker pattern&lt;/strong&gt; across &lt;strong&gt;every service&lt;/strong&gt;, making sure no single point of failure could collapse the platform again.&lt;/p&gt;
&lt;p&gt;Decoupling and graceful degradation are not academic exercises. They are mandatory if you value continuity.&lt;/p&gt;


  

&lt;h2 id="treat-deployments-as-routine-not-special"&gt;Treat Deployments as Routine, Not Special&lt;/h2&gt;
&lt;p&gt;Every deployment is a practice run for disaster recovery. If deployment is a risky, complex, orchestrated event, you have already failed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Implement &lt;a href="https://engineering-leadership.hinshelwood.com/tags/continuous-delivery/"&gt;Continuous Delivery&lt;/a&gt; (CD)&lt;/strong&gt; so that deployments happen safely, frequently, and predictably.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use feature toggles&lt;/strong&gt; to separate code deployment from feature release.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automate rollbacks&lt;/strong&gt;. A failed deployment should not require heroics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your organisation fears deployment day, it is structurally fragile.&lt;/p&gt;


  

&lt;h2 id="empower-teams-to-act-without-hierarchy-paralysis"&gt;Empower Teams to Act Without Hierarchy Paralysis&lt;/h2&gt;
&lt;p&gt;In a crisis, the last thing you want is a command-and-control bottleneck. Empowerment is a precondition to survival.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pre-delegate authority&lt;/strong&gt; for critical systems response.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Train teams&lt;/strong&gt; on incident management procedures, disaster recovery, and failover operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decentralise decision-making&lt;/strong&gt; to the people closest to the work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In crisis, minutes matter. Top-down control costs lives and revenue.&lt;/p&gt;


  
      &lt;aside class="marketing-callout marketing-callout-CrossSell"&gt;
        &lt;h4 class="marketing-callout__title"&gt;Reading about it is a start. Capability is the point.&lt;/h4&gt;
        &lt;p class="marketing-callout__description"&gt;I teach this. Not from someone else&amp;#39;s slide deck: from the client work I was doing last week. Short sessions, applied inside your real work, spread over weeks until it sticks.&lt;/p&gt;
        &lt;a href="https://courses.nkdagility.com" class="marketing-callout__link" data-ga-event="marketing_callout_click" data-ga-category="Marketing Callout" data-ga-label="training" data-ga-value="2" data-ga-param-position="6" data-ga-param-item-type="cross-sell"&gt;Find the right course or programme →&lt;/a&gt;
      &lt;/aside&gt;

&lt;h2 id="assume-everything-will-fail-design-to-recover-fast"&gt;Assume Everything Will Fail; Design to Recover Fast&lt;/h2&gt;
&lt;p&gt;Hope is not a strategy. Failure is inevitable. Recovery speed determines survival.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chaos engineering&lt;/strong&gt; is not optional; it is responsible practice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design for graceful degradation&lt;/strong&gt;. Partial failure is better than total failure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practice recovery drills&lt;/strong&gt;. Don&amp;rsquo;t just have a DR plan; rehearse it until it is boring.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are not recovering faster than your competitors, you are losing.&lt;/p&gt;


  

&lt;div class="nkda-subscribe-inline" id="subscribe-inline-host"&gt;
  &lt;div id="subscribe-inline-subscribed" class="text-muted small" hidden&gt;
    You’re subscribed — &lt;a id="subscribe-inline-manage" href="https://engineering-leadership.hinshelwood.com/notifications/"&gt;manage what you receive&lt;/a&gt;.
  &lt;/div&gt;
  &lt;span id="subscribe-inline-anon" data-nkda-auth-anon aria-hidden="true"&gt;&lt;/span&gt;
  &lt;div id="subscribe-inline-ask"&gt;
    



&lt;div class="nkda-notification-subscribe text-start mx-auto" style="max-width: 32rem;" data-surface="notification-subscribe" hidden data-nkda-collector="native"&gt;
  &lt;h2 class="h5 mb-1"&gt;Subscribe to Martin&amp;#39;s articles&lt;/h2&gt;
  &lt;p class="text-body-tertiary mb-2" style="font-size: .78rem;"&gt;Writing since 2006&lt;/p&gt;
  &lt;p class="text-muted small"&gt;Articles, usually weekly on Mondays. One click to leave.&lt;/p&gt;

  &lt;div id="subscribe-inline-said" class="alert d-none" role="status"&gt;&lt;/div&gt;
  
  &lt;button type="button" id="subscribe-inline-again" class="btn btn-link ps-0 d-none"&gt;Entered the wrong address? Start again&lt;/button&gt;

  &lt;form id="subscribe-inline-form" novalidate&gt;
    &lt;label class="form-label visually-hidden" for="subscribe-inline-email"&gt;Email address&lt;/label&gt;
    &lt;div class="input-group mb-3"&gt;
      &lt;input type="email" class="form-control" id="subscribe-inline-email" name="email" required autocomplete="email" placeholder="Email address" /&gt;
      &lt;button type="submit" class="btn btn-primary" id="subscribe-inline-submit" data-nkda-feature="item-body.communications.subscribe"&gt;Get the next one&lt;/button&gt;
    &lt;/div&gt;

  
    
&lt;div id="subscribe-inline-challenge" class="mb-3"&gt;&lt;/div&gt;
&lt;script src="https://engineering-leadership.hinshelwood.com/js/turnstile.min.b9d19c164fbfc29c746488e652fff549e45e89ebd30f848f5046bd664a759fff.js" integrity="sha256-udGcFk&amp;#43;/wpx0ZIjmUv/1SeReievTD4SPUEa9Zkp1n/8=" data-nkda-turnstile-sitekey="0x4AAAAAADqwAKkXJg5sJRDV"&gt;&lt;/script&gt;

    
    &lt;p class="form-text mt-2 mb-0"&gt;
      By subscribing you agree to the
      &lt;a href="https://nkdagility.com/company/terms-of-business/" target="_blank" rel="noopener"&gt;terms&lt;/a&gt;
      and &lt;a href="https://nkdagility.com/company/privacy/" target="_blank" rel="noopener"&gt;privacy policy&lt;/a&gt;.
    &lt;/p&gt;
  &lt;/form&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  
  
  
  
  
  
  if (!window.nkdaCollectorAsked) {
    window.nkdaCollectorAsked = true;
    fetch('/api/notifications/collector')
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || d.collector !== 'native') { return; }
        document.querySelectorAll('[data-nkda-collector]').forEach(function (el) {
          el.hidden = el.getAttribute('data-nkda-collector') !== 'native';
        });
      })
      .catch(function () {   });
  }

  var PREFIX = "subscribe-inline";
  
  
  var FIXED = "type:article";
  var CONTEXT = "article-inline";
  
  
  
  var TOPICS = {"articles":{"activeFrom":"2026-08-27","cadence":"usually weekly on Mondays","key":"type:article","label":"Articles","listId":"articles.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["article"]}},"engineering-notes":{"activeFrom":"2026-08-27","cadence":"Technical Tuesday","key":"type:engineering-note","label":"Engineering Notes","listId":"engineering-notes.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["engineering-note"]}},"newsletter":{"activeFrom":"2026-08-27","cadence":"monthly","key":"type:newsletter","label":"Newsletter","listId":"newsletter.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["newsletter"]}},"signals":{"activeFrom":"2026-08-27","cadence":"usually weekly","key":"type:signal","label":"Signals","listId":"signals.mail.nkdagility.com","shape":"letter","trigger":{"itemType":["signal"]}},"training":{"activeFrom":"2099-01-01","cadence":"irregular","key":"type:course","label":"Training","listId":"training.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["course"]}},"videos":{"activeFrom":"2026-08-27","cadence":"irregular","key":"type:video","label":"Videos","listId":"videos.mail.nkdagility.com","shape":"publication","trigger":{"itemType":["video"]}}};

  var form = document.getElementById(PREFIX + '-form');
  var said = document.getElementById(PREFIX + '-said');
  var again = document.getElementById(PREFIX + '-again');
  var topicsEl = document.getElementById(PREFIX + '-topics');
  var submit = document.getElementById(PREFIX + '-submit');
  var challengeEl = document.getElementById(PREFIX + '-challenge');
  if (!form || (!topicsEl &amp;&amp; !FIXED)) { return; }

  function esc(v) { var d = document.createElement('div'); d.textContent = v == null ? '' : String(v); return d.innerHTML; }
  function say(msg, tone) {
    said.className = 'alert alert-' + (tone || 'secondary');
    said.textContent = msg;
    said.classList.remove('d-none');
  }

  if (!TOPICS &amp;&amp; !FIXED) {
    
    
    
    
    say('Subscription options are temporarily unavailable. Please try again shortly.', 'warning');
    form.classList.add('d-none');
    return;
  }

  if (topicsEl &amp;&amp; TOPICS) topicsEl.innerHTML = Object.keys(TOPICS).map(function (id) {
    var t = TOPICS[id];
    return '&lt;div class="form-check mb-2"&gt;' +
      '&lt;input class="form-check-input" type="checkbox" id="' + esc(PREFIX + '-t-' + id) + '" data-key="' + esc(t.key) + '"&gt;' +
      '&lt;label class="form-check-label" for="' + esc(PREFIX + '-t-' + id) + '"&gt;' +
        '&lt;strong&gt;' + esc(t.label) + '&lt;/strong&gt;' +
        '&lt;span class="d-block small text-muted"&gt;' + esc(t.cadence) + '&lt;/span&gt;' +
      '&lt;/label&gt;&lt;/div&gt;';
  }).join('');

  
  
  
  
  
  
  
  var challenge = null;
  function challengeFailed() {
    submit.disabled = true;
    say('The spam check will not load here, so we cannot take a subscription on this page. Please try again later.', 'warning');
  }
  function renderChallenge() {
    if (!window.nkdaTurnstile || !challengeEl) { challengeFailed(); return; }
    challenge = window.nkdaTurnstile.mount(challengeEl, { onError: challengeFailed });
  }
  function challengeBrokenNow() { return !challenge || challenge.broken; }

  var modalHost = form.closest('.modal');
  if (!modalHost) { renderChallenge(); }

  
  
  
  
  function startAgain() {
    busy = false;
    form.classList.remove('d-none');
    if (again) { again.classList.add('d-none'); }
    if (!challengeBrokenNow()) {
      said.classList.add('d-none');
      submit.disabled = false;
      document.getElementById(PREFIX + '-email').value = '';
      if (challenge) { challenge.reset(); }
    }
  }
  if (again) { again.addEventListener('click', startAgain); }

  
  
  
  
  
  
  if (modalHost) {
    modalHost.addEventListener('shown.bs.modal', renderChallenge);
    modalHost.addEventListener('hidden.bs.modal', startAgain);
  }

  
  
  
  
  
  
  var busy = false;
  form.addEventListener('submit', function (ev) {
    ev.preventDefault();
    if (busy) { return; }
    var topics = [];
    if (FIXED) {
      
      
      topics = [FIXED];
    } else {
      Array.prototype.forEach.call(topicsEl.querySelectorAll('input[type=checkbox]'), function (cb) {
        if (cb.checked) { topics.push(cb.getAttribute('data-key')); }
      });
      if (!topics.length) {
        
        
        say('Pick at least one thing to be notified about.', 'warning');
        return;
      }
    }

    if (challengeBrokenNow()) { return; }

    var payload = {
      email: document.getElementById(PREFIX + '-email').value,
      topics: topics,
      
      context: CONTEXT || null,

      challenge: challenge ? challenge.response() : null
    };

    busy = true;
    submit.disabled = true;
    fetch('/api/notifications/subscribe', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    })
      .then(function (res) {
        
        
        
        
        return res.json().then(function (data) { return { ok: res.ok, data: data }; });
      })
      .then(function (r) {
        if (r.ok) {
          say(r.data.message, 'success');
          
          
          
          
          
          
          try { document.cookie = 'nkda_sub=1; max-age=31536000; path=/; SameSite=Lax'; } catch (e) {   }
          
          
          form.classList.add('d-none');
          if (again) { again.classList.remove('d-none'); }
          return;
        }
        busy = false;
        submit.disabled = false;
        
        if (challenge) { challenge.reset(); }
        say(r.data.message || 'We could not sign you up just now. Please try again shortly.', 'warning');
      })
      .catch(function () {
        busy = false;
        submit.disabled = false;
        if (challenge) { challenge.reset(); }
        say('We could not sign you up just now. Please try again shortly.', 'danger');
      });
  });
})();
&lt;/script&gt;

  &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function () {
  'use strict';
  var TOPIC = "type:article";

  function showSubscribed() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = true; }
    if (done) { done.hidden = false; }
  }

  
  
  
  
  var hinted = false;
  try { hinted = /(?:^|; )nkda_sub=1(?:;|$)/.test(document.cookie); } catch (e) {   }
  if (hinted) { showSubscribed(); }

  function showAsk() {
    var ask = document.getElementById('subscribe-inline-ask');
    var done = document.getElementById('subscribe-inline-subscribed');
    if (ask) { ask.hidden = false; }
    if (done) { done.hidden = true; }
  }

  
  
  
  
  
  
  
  
  
  
  
  
  
  var asked = false;
  function askAccount() {
    if (asked) { return; }
    asked = true;
    fetch('/api/notifications/account', { cache: 'no-store', credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.json() : null; })
      .then(function (d) {
        if (!d || !d.subscribedTopicKeys) { return; }
        if (d.subscribedTopicKeys.indexOf(TOPIC) !== -1) { showSubscribed(); }
        else if (hinted) { showAsk(); }
      })
      .catch(function () {   });
  }

  
  
  
  
  
  function onSignedIn() {
    var manage = document.getElementById('subscribe-inline-manage');
    if (manage) { manage.setAttribute('href', '/account/notifications/'); }
    askAccount();
  }

  var marker = document.getElementById('subscribe-inline-anon');
  if (!marker) { return; }
  
  
  
  
  
  if (marker.hidden) { onSignedIn(); return; }
  if (typeof MutationObserver !== 'function') { return; }
  var observer = new MutationObserver(function () {
    if (!marker.hidden) { return; }
    observer.disconnect();
    onSignedIn();
  });
  observer.observe(marker, { attributes: true, attributeFilter: ['hidden'] });
})();
&lt;/script&gt;

&lt;h2 id="devops-site-reliability-engineering-and-evidence-based-management"&gt;DevOps, &lt;a href="https://engineering-leadership.hinshelwood.com/tags/site-reliability-engineering/"&gt;Site Reliability Engineering&lt;/a&gt;, and Evidence-Based Management&lt;/h2&gt;
&lt;p&gt;Business resilience is &lt;strong&gt;DevOps in action&lt;/strong&gt;: the union of people, process, and products to enable continuous delivery of value to end users. Resilient systems emerge from the daily discipline of CI/CD, Infrastructure as Code (IaC), and monitoring as first-class citizens.&lt;/p&gt;
&lt;p&gt;It is &lt;strong&gt;Site Reliability Engineering (SRE)&lt;/strong&gt; lived, not aspirational. SRE teaches us that availability, latency, performance, efficiency, &lt;a href="https://engineering-leadership.hinshelwood.com/tags/change-management/"&gt;change management&lt;/a&gt;, monitoring, and emergency response are all product features, just as important as the user-facing ones.&lt;/p&gt;
&lt;p&gt;It is &lt;strong&gt;Evidence-Based Management (EBM)&lt;/strong&gt; made real. Metrics like Mean Time to Recovery (MTTR), &lt;a href="https://engineering-leadership.hinshelwood.com/tags/deployment-frequency/"&gt;Deployment Frequency&lt;/a&gt;, and &lt;a href="https://engineering-leadership.hinshelwood.com/tags/customer-satisfaction/"&gt;Customer Satisfaction&lt;/a&gt; are not vanity measures; they are survival metrics. They inform whether your investment in resilience is paying off or just theatre.&lt;/p&gt;
&lt;p&gt;Resilience is not a project. It is an ethos. You must architect it into your systems, invest in it continuously, and operationalise it ruthlessly.&lt;/p&gt;
&lt;p&gt;Otherwise, you are gambling with your business and calling it strategy.&lt;/p&gt;
</content:encoded>
      <media:content medium="image" url="https://engineering-leadership.hinshelwood.com/blob/items/vthlnxvapgj/share.png"/>
    </item>
  </channel>
</rss>