<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Claude-Code on simalexan</title><link>https://simalexan.com/tags/claude-code/</link><description>Recent content in Claude-Code on simalexan</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 12 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://simalexan.com/tags/claude-code/index.xml" rel="self" type="application/rss+xml"/><item><title>The flat line problem: why your best engineers keep arguing about process</title><link>https://simalexan.com/posts/the-flat-line-problem/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://simalexan.com/posts/the-flat-line-problem/</guid><description>Your best engineers keep arguing about how much process is normal. They are both right. AI pods make Wardley&amp;rsquo;s pioneers, settlers and town planners easy to set up, and agents make one flat rulebook more expensive.</description><content:encoded>
&lt;div class="flp">
&lt;svg class="sprite" aria-hidden="true" focusable="false">&lt;defs>
&lt;symbol id="flp-plain" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="30" cy="16" r="11"/>&lt;path d="M30 27 V62"/>&lt;path d="M13 46 L30 34 L47 46"/>
&lt;path d="M30 62 L19 92 M30 62 L41 92"/>&lt;path d="M26 28 L30 40 L34 28"/>
&lt;path d="M25 20 q5 4 10 0"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="26" cy="13" r="1.7"/>&lt;circle cx="34" cy="13" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-idea" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="28" cy="18" r="11"/>&lt;path d="M28 29 V62"/>&lt;path d="M11 50 L28 36 L43 22"/>
&lt;path d="M28 62 L17 92 M28 62 L39 92"/>&lt;path d="M24 30 L28 42 L32 30"/>
&lt;path d="M23 22 q5 5 10 0"/>
&lt;circle cx="48" cy="13" r="6.5"/>&lt;path d="M45 20 h6"/>
&lt;path d="M48 2 v3 M58 8 l-2.5 1.5 M38 8 l2.5 1.5"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="24" cy="15" r="1.7"/>&lt;circle cx="32" cy="15" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-build" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="26" cy="16" r="11"/>&lt;path d="M26 27 V62"/>&lt;path d="M9 46 L26 34 L40 44"/>
&lt;path d="M26 62 L15 92 M26 62 L37 92"/>&lt;path d="M22 28 L26 40 L30 28"/>
&lt;path d="M21 20 q5 4 10 0"/>
&lt;rect x="38" y="42" width="19" height="18"/>&lt;path d="M38 51 h19"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="22" cy="13" r="1.7"/>&lt;circle cx="30" cy="13" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-clip" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="24" cy="16" r="11"/>&lt;path d="M24 27 V62"/>&lt;path d="M8 46 L24 34 L38 42"/>
&lt;path d="M24 62 L13 92 M24 62 L35 92"/>&lt;path d="M20 28 L24 40 L28 28"/>
&lt;path d="M19 21 h10"/>
&lt;rect x="38" y="38" width="18" height="24"/>
&lt;path d="M44 38 v-4 h6 v4"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="20" cy="13" r="1.7"/>&lt;circle cx="28" cy="13" r="1.7"/>
&lt;rect x="42" y="45" width="10" height="2"/>&lt;rect x="42" y="51" width="10" height="2"/>&lt;rect x="42" y="57" width="6" height="2"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-ok" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="28" cy="16" r="11"/>&lt;path d="M28 27 V62"/>&lt;path d="M11 46 L28 34 L42 26"/>
&lt;path d="M28 62 L17 92 M28 62 L39 92"/>&lt;path d="M24 28 L28 40 L32 28"/>
&lt;path d="M22 20 q6 6 12 0"/>
&lt;path d="M45 22 l4 5 l9 -12"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="24" cy="13" r="1.7"/>&lt;circle cx="32" cy="13" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-squash1" viewBox="0 0 60 100">
&lt;rect x="6" y="6" width="48" height="9" fill="currentColor" opacity=".16"/>
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;rect x="6" y="6" width="48" height="9"/>
&lt;circle cx="30" cy="28" r="11"/>&lt;path d="M30 39 V64"/>
&lt;path d="M20 16 L24 34 M40 16 L36 34"/>
&lt;path d="M30 64 L22 78 L19 92 M30 64 L38 78 L41 92"/>
&lt;path d="M26 40 L30 50 L34 40"/>
&lt;path d="M25 34 q5 -2 10 0"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="26" cy="26" r="1.7"/>&lt;circle cx="34" cy="26" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-squash2" viewBox="0 0 60 100">
&lt;rect x="4" y="4" width="52" height="14" fill="currentColor" opacity=".22"/>
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;rect x="4" y="4" width="52" height="14"/>
&lt;circle cx="30" cy="35" r="10.5"/>&lt;path d="M30 45 V66"/>
&lt;path d="M19 19 L23 41 M41 19 L37 41"/>
&lt;path d="M30 66 L20 78 L15 92 M30 66 L40 78 L45 92"/>
&lt;path d="M26 46 L30 55 L34 46"/>
&lt;path d="M25 41 h10"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="26" cy="32" r="1.7"/>&lt;circle cx="34" cy="32" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-squash3" viewBox="0 0 60 100">
&lt;rect x="0" y="0" width="60" height="25" fill="currentColor" opacity=".34"/>
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;rect x="0" y="0" width="60" height="25"/>
&lt;path d="M10 8 L18 18 M26 8 L34 18 M42 8 L50 18"/>
&lt;circle cx="30" cy="51" r="10"/>&lt;path d="M30 61 V74"/>
&lt;path d="M17 27 L24 57 M43 27 L36 57"/>
&lt;path d="M30 74 L16 82 L10 92 M30 74 L44 82 L50 92"/>
&lt;path d="M26 62 L30 68 L34 62"/>
&lt;path d="M25 59 q5 -5 10 0"/>
&lt;path d="M48 38 q4 6 0 8 q-4 -2 0 -8 M12 38 q4 6 0 8 q-4 -2 0 -8"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="26" cy="48" r="1.8"/>&lt;circle cx="34" cy="48" r="1.8"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-panic1" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="30" cy="18" r="11"/>&lt;path d="M30 29 V62"/>&lt;path d="M12 28 L30 36 L46 13"/>
&lt;path d="M30 62 L19 92 M30 62 L41 92"/>&lt;path d="M26 30 L30 42 L34 30"/>
&lt;path d="M25 24 q5 -3 10 0"/>
&lt;rect x="47" y="34" width="10" height="12" transform="rotate(18 52 40)"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="26" cy="15" r="1.7"/>&lt;circle cx="34" cy="15" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-panic2" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="30" cy="22" r="11"/>&lt;path d="M30 33 V64"/>&lt;path d="M16 8 L30 30 L44 8"/>
&lt;path d="M30 64 L18 92 M30 64 L42 92"/>&lt;path d="M26 34 L30 45 L34 34"/>
&lt;circle cx="30" cy="28" r="3"/>
&lt;rect x="2" y="50" width="10" height="12" transform="rotate(-18 7 56)"/>
&lt;rect x="48" y="56" width="10" height="12" transform="rotate(22 53 62)"/>
&lt;path d="M47 13 q4 6 0 8 q-4 -2 0 -8"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="26" cy="19" r="1.7"/>&lt;circle cx="34" cy="19" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-panic3" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="30" cy="26" r="11"/>&lt;path d="M30 37 V66"/>&lt;path d="M14 6 L30 32 L46 6"/>
&lt;path d="M30 66 L15 92 M30 66 L45 92"/>&lt;path d="M26 38 L30 49 L34 38"/>
&lt;path d="M24 16 l-3 -8 M30 14 v-9 M36 16 l3 -8"/>
&lt;ellipse cx="30" cy="33" rx="3.2" ry="4.4"/>
&lt;rect x="0" y="44" width="11" height="13" transform="rotate(-24 5 50)"/>
&lt;rect x="49" y="40" width="11" height="13" transform="rotate(26 54 46)"/>
&lt;rect x="44" y="72" width="11" height="13" transform="rotate(-14 49 78)"/>
&lt;path d="M45 18 q4 6 0 8 q-4 -2 0 -8 M15 18 q4 6 0 8 q-4 -2 0 -8"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="25.5" cy="23" r="2.2"/>&lt;circle cx="34.5" cy="23" r="2.2"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-tired" viewBox="0 0 60 100">
&lt;g fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
&lt;circle cx="26" cy="20" r="11"/>&lt;path d="M28 31 V62"/>&lt;path d="M17 62 L28 36 L39 62"/>
&lt;path d="M28 62 L18 92 M28 62 L38 92"/>&lt;path d="M24 32 L28 44 L32 32"/>
&lt;path d="M21 26 q5 -4 10 0"/>
&lt;path d="M42 10 q4 6 0 8 q-4 -2 0 -8"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="22" cy="17" r="1.7"/>&lt;circle cx="30" cy="17" r="1.7"/>&lt;/g>
&lt;/symbol>
&lt;symbol id="flp-agent" viewBox="0 0 20 20">
&lt;g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
&lt;rect x="2.5" y="6" width="15" height="11" rx="3"/>&lt;path d="M10 6 V3"/>
&lt;/g>
&lt;g fill="currentColor">&lt;circle cx="10" cy="2.2" r="1.3"/>&lt;circle cx="7.2" cy="11.5" r="1.4"/>&lt;circle cx="12.8" cy="11.5" r="1.4"/>&lt;/g>
&lt;/symbol>
&lt;/defs>&lt;/svg>
&lt;p>October 12th 2026. By lunchtime today my Claude Code sessions had run 77 agents, up to 19 of them at the same time. A lot of my day is now writing specs, reviewing what agents built, and deciding what they are allowed to do on their own.&lt;/p>
&lt;p>This year we also changed how we build: AI pods. One engineer and one product person, two engineers at most.&lt;/p>
&lt;p>I think pods make &lt;a href="https://blog.gardeviance.org/2015/03/on-pioneers-settlers-town-planners-and.html" target="_blank" rel="noopener">Simon Wardley's&lt;/a> pioneers, settlers and town planners easier to set up than ever. They also make one old problem a lot more expensive. I call it the flat line.&lt;/p>
&lt;blockquote>&lt;p>&lt;strong>Your best engineers keep arguing about how much process is normal. They are both right, and that is exactly the problem.&lt;/strong>&lt;/p>&lt;/blockquote>
&lt;!-- 01 : the meeting -->
&lt;section id="monday">
&lt;h2>&lt;span class="flp-num">01&lt;/span>Monday, architecture review&lt;/h2>
&lt;p>One item on the agenda. Your largest customer's AI agents already use your MCP server to look things up. Now the customer wants those agents doing whole jobs inside your product, with nobody watching, and they want a pilot running next month. The renewal depends on it. Nobody in your market has shipped that yet. With Claude Code, one pod could have a first version running by Wednesday.&lt;/p>
&lt;p>Four people react. Nobody is wrong, and nobody says no.&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 0 900 278" role="img" aria-label="Five people at a meeting table. The pod engineer wants one pod and two days, the architect asks for the design doc, the product manager says the customer needs an answer by Friday, the engineering manager says the pods all deploy in different ways, and you stand at the end with a question mark.">
&lt;g fill="none" stroke="currentColor" stroke-width="2.2">
&lt;rect x="6" y="8" width="164" height="74" rx="10"/>&lt;path d="M70 82 L80 98 L94 82"/>
&lt;rect x="176" y="8" width="164" height="74" rx="10"/>&lt;path d="M240 82 L250 98 L264 82"/>
&lt;rect x="346" y="8" width="164" height="74" rx="10"/>&lt;path d="M410 82 L420 98 L434 82"/>
&lt;rect x="516" y="8" width="164" height="74" rx="10"/>&lt;path d="M580 82 L590 98 L604 82"/>
&lt;/g>
&lt;g class="svgtext">
&lt;text x="22" y="36">“Give me one pod&lt;/text>&lt;text x="22" y="56">and two days.”&lt;/text>
&lt;text x="192" y="36">“Where is the&lt;/text>&lt;text x="192" y="56">design doc?”&lt;/text>
&lt;text x="362" y="36">“The customer needs&lt;/text>&lt;text x="362" y="56">an answer by Friday.”&lt;/text>
&lt;text x="532" y="36">“My pods all deploy&lt;/text>&lt;text x="532" y="56">in different ways.”&lt;/text>
&lt;/g>
&lt;use href="#flp-idea" x="53" y="96" width="70" height="122"/>
&lt;use href="#flp-clip" x="223" y="96" width="70" height="122"/>
&lt;use href="#flp-build" x="393" y="96" width="70" height="122"/>
&lt;use href="#flp-plain" x="563" y="96" width="70" height="122"/>
&lt;use href="#flp-plain" x="760" y="96" width="70" height="122"/>
&lt;text x="795" y="86" text-anchor="middle" font-size="30" font-weight="700" opacity=".5">?&lt;/text>
&lt;rect x="0" y="180" width="900" height="10" fill="currentColor" opacity=".18"/>
&lt;rect x="0" y="190" width="900" height="36" fill="currentColor" opacity=".07"/>
&lt;rect x="0" y="190" width="900" height="36" fill="none" stroke="currentColor" stroke-width="1.6"/>
&lt;g class="svglabel" text-anchor="middle" opacity=".85">
&lt;text x="88" y="252">Pod engineer&lt;/text>
&lt;text x="258" y="252">Architect&lt;/text>
&lt;text x="428" y="252">Product manager&lt;/text>
&lt;text x="598" y="252">Eng manager&lt;/text>
&lt;text x="795" y="252">You&lt;/text>
&lt;/g>
&lt;g class="svgsm" text-anchor="middle" opacity=".55">
&lt;text x="88" y="270">wants to try it&lt;/text>
&lt;text x="258" y="270">wants it proven&lt;/text>
&lt;text x="428" y="270">wants a decision&lt;/text>
&lt;text x="598" y="270">wants one standard&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>The meeting&lt;/b> Nobody in this room is being difficult. All four are right, about different kinds of work.&lt;/figcaption>
&lt;/figure>
&lt;p>Three weeks later the customer has stopped asking. And every pod still deploys its own way.&lt;/p>
&lt;p>&lt;strong>Two problems in the same room, pointing in opposite directions.&lt;/strong> The new thing got too many rules. The routine thing got too few.&lt;/p>
&lt;/section>
&lt;!-- 02 : the bridge -->
&lt;section id="whose-fault">
&lt;h2>&lt;span class="flp-num">02&lt;/span>So whose fault is it?&lt;/h2>
&lt;p>I'd blame the rulebook.&lt;/p>
&lt;p>The same engineering rulebook got applied to two completely different kinds of work, the agent pilot and the deploys. It can only ever be right about one of them.&lt;/p>
&lt;p>&lt;em>(Some might say the pod engineer is a cowboy, the manager is a process person, architecture review is slow, and the PM doesn't understand engineering. Sure, but then how were all four of them right on Monday?)&lt;/em>&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 0 660 176" role="img" aria-label="Three stick figures: one crouching under a heavy block of rules, one standing comfortably, one panicking with papers flying.">
&lt;use href="#flp-squash3" x="40" y="14" width="60" height="100"/>
&lt;use href="#flp-ok" x="290" y="14" width="60" height="100"/>
&lt;use href="#flp-panic3" x="540" y="14" width="60" height="100"/>
&lt;g class="svglabel" text-anchor="middle">
&lt;text x="70" y="140">Too many rules&lt;/text>
&lt;text x="320" y="140">Just right&lt;/text>
&lt;text x="570" y="140">Too few rules&lt;/text>
&lt;/g>
&lt;g class="svgsm" text-anchor="middle" opacity=".7">
&lt;text x="70" y="160">the agent pilot dies&lt;/text>
&lt;text x="320" y="160">one part of your org&lt;/text>
&lt;text x="570" y="160">deploys run on judgement&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>One rulebook&lt;/b> All three of these at once, to different parts of the same org.&lt;/figcaption>
&lt;/figure>
&lt;/section>
&lt;!-- 03 : the sixteen, by team -->
&lt;section id="sixteen">
&lt;h2>&lt;span class="flp-num">03&lt;/span>Sixteen things your people did this week&lt;/h2>
&lt;p>Nothing unusual. An ordinary week, sorted the way you already think about it: by who does it.&lt;/p>
&lt;div class="flp-cols flp-five flp-wide not-prose">
&lt;div class="flp-cel">
&lt;h4>Product pods&lt;/h4>
&lt;ul>
&lt;li>Write the spec, then let Claude Code build it&lt;/li>
&lt;li>Review the agents' pull requests&lt;/li>
&lt;li>Fix bugs from support tickets, with an agent&lt;/li>
&lt;li>Deploy through the pipeline&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel">
&lt;h4>Engineering managers&lt;/h4>
&lt;ul>
&lt;li>Check delivery numbers and token spend&lt;/li>
&lt;li>Run planning and the retro&lt;/li>
&lt;li>Coach engineers on working with agents&lt;/li>
&lt;li>Staff the pods and the on-call rota&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel">
&lt;h4>Staff engineers &amp;amp; leadership&lt;/h4>
&lt;ul>
&lt;li>Design each core service&lt;/li>
&lt;li>Agree the quarter's bets with product&lt;/li>
&lt;li>Decide what agents may ship without a human, and why&lt;/li>
&lt;li>Let customers' agents do whole jobs in the product&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel">
&lt;h4>Platform pod&lt;/h4>
&lt;ul>
&lt;li>Build the agent setup every pod shares&lt;/li>
&lt;li>Let agents run a whole roadmap unattended&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel">
&lt;h4>SRE &amp;amp; IT&lt;/h4>
&lt;ul>
&lt;li>Patch servers and rotate secrets&lt;/li>
&lt;li>Model APIs, cloud accounts, laptops, SSO&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;p>Hold on to this list. Everything below uses these sixteen and nothing else.&lt;/p>
&lt;/section>
&lt;!-- 04 : the complaints -->
&lt;section id="five-complaints">
&lt;h2>&lt;span class="flp-num">04&lt;/span>Five things that keep happening&lt;/h2>
&lt;p>Here are five more you have probably said or heard this year.&lt;/p>
&lt;div class="flp-gripes">
&lt;div class="flp-gripe">
&lt;svg viewBox="0 0 170 120" role="img" aria-label="A person holding up an idea, next to a form with a big cross through it.">
&lt;use href="#flp-idea" x="2" y="18" width="56" height="94"/>
&lt;g fill="none" stroke="currentColor" stroke-width="2.6" stroke-linejoin="round">
&lt;rect x="98" y="26" width="56" height="70"/>
&lt;/g>
&lt;g fill="currentColor" opacity=".45">
&lt;rect x="106" y="38" width="40" height="3"/>&lt;rect x="106" y="48" width="40" height="3"/>
&lt;rect x="106" y="58" width="28" height="3"/>
&lt;/g>
&lt;text class="svgsm" x="126" y="112" text-anchor="middle" opacity=".7">design doc?&lt;/text>
&lt;g fill="none" stroke="currentColor" stroke-width="3.4" stroke-linecap="round">
&lt;path d="M104 32 L148 90 M148 32 L104 90"/>
&lt;/g>
&lt;/svg>
&lt;div>
&lt;p>We had a good idea for a new kind of integration, and a pod had a first version working in two days. It went to architecture review, they asked for the design doc, and it quietly disappeared.&lt;/p>
&lt;span class="why">Nobody was against it. It still died.&lt;/span>
&lt;/div>
&lt;/div>
&lt;div class="flp-gripe">
&lt;svg viewBox="0 0 170 120" role="img" aria-label="A box labelled pilot gathering dust, with a clock beside it and a person standing next to it.">
&lt;g fill="none" stroke="currentColor" stroke-width="2.6" stroke-linejoin="round">
&lt;rect x="12" y="52" width="72" height="48"/>&lt;path d="M12 66 h72"/>
&lt;circle cx="36" cy="28" r="13"/>&lt;path d="M36 20 v8 l6 4"/>
&lt;/g>
&lt;text class="svglabel" x="48" y="88" text-anchor="middle">PILOT&lt;/text>
&lt;g fill="none" stroke="currentColor" stroke-width="2" opacity=".45">
&lt;path d="M12 52 l12 10 M84 52 l-12 10 M12 62 l8 -10"/>
&lt;/g>
&lt;use href="#flp-plain" x="104" y="20" width="56" height="94"/>
&lt;/svg>
&lt;div>
&lt;p>That agent workflow one pod built, the one everybody liked? Still that one pod's thing. Six months now.&lt;/p>
&lt;span class="why">It works. It just never became the normal way we do things.&lt;/span>
&lt;/div>
&lt;/div>
&lt;div class="flp-gripe">
&lt;svg viewBox="0 0 170 120" role="img" aria-label="Three people each holding up a differently shaped block.">
&lt;g fill="none" stroke="currentColor" stroke-width="2.6" stroke-linejoin="round">
&lt;rect x="10" y="8" width="22" height="22"/>
&lt;path d="M73 8 L86 30 L60 30 Z"/>
&lt;circle cx="138" cy="19" r="12"/>
&lt;/g>
&lt;use href="#flp-plain" x="0" y="40" width="44" height="74"/>
&lt;use href="#flp-plain" x="51" y="40" width="44" height="74"/>
&lt;use href="#flp-plain" x="116" y="40" width="44" height="74"/>
&lt;/svg>
&lt;div>
&lt;p>Every pod writes its own &lt;code>CLAUDE.md&lt;/code> and its own agent rules, and every pod has its own idea of what an agent may ship without a human.&lt;/p>
&lt;span class="why">We keep starting over instead of agreeing one way.&lt;/span>
&lt;/div>
&lt;/div>
&lt;div class="flp-gripe">
&lt;svg viewBox="0 0 170 120" role="img" aria-label="A person with a clipboard beside a stack of five versions of the same pipeline.">
&lt;use href="#flp-clip" x="0" y="18" width="56" height="94"/>
&lt;g fill="none" stroke="currentColor" stroke-width="2.4">
&lt;rect x="80" y="88" width="72" height="14"/>
&lt;rect x="80" y="70" width="72" height="14"/>
&lt;rect x="80" y="52" width="72" height="14"/>
&lt;rect x="80" y="34" width="72" height="14"/>
&lt;rect x="80" y="16" width="72" height="14"/>
&lt;/g>
&lt;text class="svgsm" x="116" y="27" text-anchor="middle">v5&lt;/text>
&lt;text class="svgsm" x="116" y="99" text-anchor="middle" opacity=".55">v1&lt;/text>
&lt;/svg>
&lt;div>
&lt;p>The deploy pipeline is still being “improved”. It has been rewritten five times, twice by an agent.&lt;/p>
&lt;span class="why">Nobody should be thinking about this at all by now.&lt;/span>
&lt;/div>
&lt;/div>
&lt;div class="flp-gripe">
&lt;svg viewBox="0 0 170 120" role="img" aria-label="Two tired people, and a third carrying a tall stack of boxes.">
&lt;use href="#flp-tired" x="0" y="42" width="44" height="74"/>
&lt;use href="#flp-tired" x="44" y="42" width="44" height="74"/>
&lt;g fill="none" stroke="currentColor" stroke-width="2.6" stroke-linejoin="round">
&lt;rect x="100" y="4" width="52" height="16"/>
&lt;rect x="100" y="22" width="52" height="16"/>
&lt;rect x="100" y="40" width="52" height="16"/>
&lt;/g>
&lt;use href="#flp-tired" x="104" y="56" width="44" height="74"/>
&lt;/svg>
&lt;div>
&lt;p>The same three people review every risky agent pull request and join every incident call, and they are exhausted.&lt;/p>
&lt;span class="why">And they are the ones who never complain.&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>All five have the same cause.&lt;/p>
&lt;/section>
&lt;!-- 05 : the sixteen, by evolution -->
&lt;section id="sort">
&lt;h2>&lt;span class="flp-num">05&lt;/span>Sort the same sixteen a different way&lt;/h2>
&lt;p>This time I sorted them by &lt;strong>how new each thing still is to the world&lt;/strong>. It goes from work no one has really figured out yet, on the left, to things like electricity on the far right, which you buy and never think about. (If you map, these are Wardley's four stages of evolution.)&lt;/p>
&lt;div class="flp-cols flp-wide not-prose">
&lt;div class="flp-cel">
&lt;h4>1 · Brand new&lt;/h4>
&lt;span class="sub">Nobody knows how yet (genesis)&lt;/span>
&lt;ul>
&lt;li>Let customers' agents do whole jobs in the product&lt;span class="tag">Staff &amp;amp; leadership&lt;/span>&lt;/li>
&lt;li>Let agents run a whole roadmap unattended&lt;span class="tag">Platform pod&lt;/span>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel">
&lt;h4>2 · We build our own&lt;/h4>
&lt;span class="sub">Everyone makes their own version (custom-built)&lt;/span>
&lt;ul>
&lt;li>Decide what agents may ship without a human, and why&lt;span class="tag">Staff &amp;amp; leadership&lt;/span>&lt;/li>
&lt;li>Design each core service&lt;span class="tag">Staff &amp;amp; leadership&lt;/span>&lt;/li>
&lt;li>Agree the quarter's bets with product&lt;span class="tag">Staff &amp;amp; leadership&lt;/span>&lt;/li>
&lt;li>Build the agent setup every pod shares&lt;span class="tag">Platform pod&lt;/span>&lt;/li>
&lt;li>Coach engineers on working with agents&lt;span class="tag">Engineering managers&lt;/span>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel">
&lt;h4>3 · The proven way&lt;/h4>
&lt;span class="sub">Already solved, so copy it (product)&lt;/span>
&lt;ul>
&lt;li>Write the spec, then let Claude Code build it&lt;span class="tag">Product pods&lt;/span>&lt;/li>
&lt;li>Review the agents' pull requests&lt;span class="tag">Product pods&lt;/span>&lt;/li>
&lt;li>Fix bugs from support tickets, with an agent&lt;span class="tag">Product pods&lt;/span>&lt;/li>
&lt;li>Check delivery numbers and token spend&lt;span class="tag">Engineering managers&lt;/span>&lt;/li>
&lt;li>Run planning and the retro&lt;span class="tag">Engineering managers&lt;/span>&lt;/li>
&lt;li>Staff the pods and the on-call rota&lt;span class="tag">Engineering managers&lt;/span>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel">
&lt;h4>4 · Boring and cheap&lt;/h4>
&lt;span class="sub">It should just happen, every time (commodity)&lt;/span>
&lt;ul>
&lt;li>Deploy through the pipeline&lt;span class="tag">Product pods&lt;/span>&lt;/li>
&lt;li>Patch servers and rotate secrets&lt;span class="tag">SRE &amp;amp; IT&lt;/span>&lt;/li>
&lt;li>Model APIs, cloud accounts, laptops, SSO&lt;span class="tag">SRE &amp;amp; IT&lt;/span>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;div class="flp-flow flp-wide">&lt;span>brand new&lt;/span>&lt;span class="bar">&lt;/span>&lt;span>boring and cheap&lt;/span>&lt;/div>
&lt;p>Column 3 is where the method is already solved, and you copy it exactly. The industry knows by now how a good review of an agent's pull request goes. An AI reviewer reads it first, and anything risky goes to a person as well. (The tools behind it, Claude Code, the AI reviewer, the CI service and the pager, you do literally buy.)&lt;/p>
&lt;p>The six things in column 3 are most of what your week actually looks like. Going by the grey tags, four of your five groups are split across two columns, and only SRE &amp;amp; IT stay in one.&lt;/p>
&lt;p>The same goes for single words. “Ship” sits in three columns at once.&lt;/p>
&lt;div class="flp-cols flp-wide not-prose">
&lt;div class="flp-cel" style="border-top-color:var(--pio)">
&lt;svg class="port" viewBox="0 0 60 100" role="img" aria-label="A stick figure with an idea." style="color:var(--pio)">&lt;use href="#flp-idea" x="0" y="0" width="60" height="100"/>&lt;/svg>
&lt;h4>“Ship this to one customer, this week”&lt;/h4>
&lt;span class="sub" style="color:var(--pio)">Column 1 · brand new&lt;/span>
&lt;ul>
&lt;li>A one-off behind a flag, because you want to learn something from that customer.&lt;/li>
&lt;li>Judgement call each time. I would not even try to write rules for it.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel" style="border-top-color:var(--set)">
&lt;svg class="port" viewBox="0 0 60 100" role="img" aria-label="A stick figure holding a finished box." style="color:var(--set)">&lt;use href="#flp-build" x="0" y="0" width="60" height="100"/>&lt;/svg>
&lt;h4>“What an agent may ship without a human, and why”&lt;/h4>
&lt;span class="sub" style="color:var(--set)">Column 2 · we build our own&lt;/span>
&lt;ul>
&lt;li>Your own framework, written down. It says which paths an agent may change alone, and who signs off on anything above a certain risk level.&lt;/li>
&lt;li>Every pod uses the same one, and it gets reviewed once a quarter.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel" style="border-top-color:var(--tp)">
&lt;svg class="port" viewBox="0 0 60 100" role="img" aria-label="A stick figure with a clipboard." style="color:var(--tp)">&lt;use href="#flp-clip" x="0" y="0" width="60" height="100"/>&lt;/svg>
&lt;h4>“Ship it the agreed way, through the pipeline”&lt;/h4>
&lt;span class="sub" style="color:var(--tp)">Column 4 · boring and cheap&lt;/span>
&lt;ul>
&lt;li>Strict, identical steps every time, even when a pod is in a hurry, so a deploy never needs a meeting.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;p>These three need very different amounts of rules, so I do not see how a single answer to “how we ship” can be right for more than one of them.&lt;/p>
&lt;/section>
&lt;!-- 06 : the two ends -->
&lt;section id="two-ends">
&lt;h2>&lt;span class="flp-num">06&lt;/span>Now compare the two ends&lt;/h2>
&lt;p>Take one thing from the far left and one from the far right of that list, and ask the same five questions about both.&lt;/p>
&lt;div class="flp-tablewrap">
&lt;table>
&lt;thead>
&lt;tr>&lt;th>Question&lt;/th>&lt;th>Letting agents run a whole roadmap unattended&lt;/th>&lt;th>Deploying through the pipeline&lt;/th>&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td>Has anyone done this before?&lt;/td>&lt;td>A handful of teams&lt;/td>&lt;td>Every engineering org there is&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Will it look the same in six months?&lt;/td>&lt;td>Certainly not&lt;/td>&lt;td>It had better&lt;/td>&lt;/tr>
&lt;tr>&lt;td>If it goes wrong on Tuesday?&lt;/td>&lt;td>You throw away a branch&lt;/td>&lt;td>Customers notice before you do&lt;/td>&lt;/tr>
&lt;tr class="flip">&lt;td>Fastest way to make it better&lt;/td>&lt;td>Try five versions, drop four&lt;/td>&lt;td>Agree one way and stop touching it&lt;/td>&lt;/tr>
&lt;tr class="flip">&lt;td>Fastest way to ruin it&lt;/td>&lt;td>Agree one way and stop touching it&lt;/td>&lt;td>Try five versions, drop four&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Read the last two rows. &lt;strong>The same sentence appears on both sides, once as the cure and once as the poison.&lt;/strong>&lt;/p>
&lt;/section>
&lt;!-- 07 : the bars -->
&lt;section id="rules-per-column">
&lt;h2>&lt;span class="flp-num">07&lt;/span>So each column needs a different amount of rules&lt;/h2>
&lt;p>Here are the four columns again, as four bars, with a few of your sixteen under each. &lt;strong>A taller bar means: this needs more rules, more checking, more “do it exactly this way”.&lt;/strong> Nothing else is being measured.&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 0 900 330" role="img" aria-label="Four bars of increasing height. Brand new work needs almost no rules. Work you build yourselves needs one agreed way. Proven work needs the proven standard. Boring and cheap work needs strict rules.">
&lt;line class="axis" x1="100" y1="230" x2="100" y2="44"/>
&lt;polygon points="100,40 96,50 104,50" fill="currentColor"/>
&lt;text class="svgsm" x="92" y="52" text-anchor="end" opacity=".75">strict rules&lt;/text>
&lt;text class="svgsm" x="92" y="226" text-anchor="end" opacity=".75">no rules&lt;/text>
&lt;line class="axis" x1="100" y1="230" x2="880" y2="230"/>
&lt;g>
&lt;rect x="140" y="200" width="130" height="30" fill="currentColor" opacity=".13"/>
&lt;rect x="140" y="200" width="130" height="30" fill="none" stroke="currentColor" stroke-width="1.4"/>
&lt;text class="svgsm" x="205" y="190" text-anchor="middle">almost no rules&lt;/text>
&lt;rect x="330" y="160" width="130" height="70" fill="currentColor" opacity=".13"/>
&lt;rect x="330" y="160" width="130" height="70" fill="none" stroke="currentColor" stroke-width="1.4"/>
&lt;text class="svgsm" x="395" y="150" text-anchor="middle">one agreed way&lt;/text>
&lt;rect x="520" y="120" width="130" height="110" fill="currentColor" opacity=".13"/>
&lt;rect x="520" y="120" width="130" height="110" fill="none" stroke="currentColor" stroke-width="1.4"/>
&lt;text class="svgsm" x="585" y="110" text-anchor="middle">the proven standard&lt;/text>
&lt;rect x="710" y="80" width="130" height="150" fill="currentColor" opacity=".13"/>
&lt;rect x="710" y="80" width="130" height="150" fill="none" stroke="currentColor" stroke-width="1.4"/>
&lt;text class="svgsm" x="775" y="70" text-anchor="middle">strict rules, no surprises&lt;/text>
&lt;/g>
&lt;g class="svglabel">
&lt;text x="205" y="254" text-anchor="middle">1 · Brand new&lt;/text>
&lt;text x="395" y="254" text-anchor="middle">2 · We build our own&lt;/text>
&lt;text x="585" y="254" text-anchor="middle">3 · The proven way&lt;/text>
&lt;text x="775" y="254" text-anchor="middle">4 · Boring and cheap&lt;/text>
&lt;/g>
&lt;g class="svgsm" opacity=".7">
&lt;text x="205" y="276" text-anchor="middle">customers' agents doing jobs&lt;/text>
&lt;text x="205" y="292" text-anchor="middle">unattended agent roadmaps&lt;/text>
&lt;text x="395" y="276" text-anchor="middle">what agents may ship alone&lt;/text>
&lt;text x="395" y="292" text-anchor="middle">the shared agent setup&lt;/text>
&lt;text x="395" y="308" text-anchor="middle">coaching on agents&lt;/text>
&lt;text x="585" y="276" text-anchor="middle">spec first, then Claude Code&lt;/text>
&lt;text x="585" y="292" text-anchor="middle">reviewing agent pull requests&lt;/text>
&lt;text x="585" y="308" text-anchor="middle">delivery and token numbers&lt;/text>
&lt;text x="775" y="276" text-anchor="middle">deploying through the pipeline&lt;/text>
&lt;text x="775" y="292" text-anchor="middle">patching and secrets&lt;/text>
&lt;text x="775" y="308" text-anchor="middle">model APIs and laptops&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>Picture 1&lt;/b> Nobody argues with this on its own. Deploying through the pipeline obviously needs stricter rules than building something nobody has built. The problem starts in the next picture.&lt;/figcaption>
&lt;/figure>
&lt;/section>
&lt;!-- 08 : the flat line -->
&lt;section id="one-rulebook">
&lt;h2>&lt;span class="flp-num">08&lt;/span>One rulebook, three ways to be wrong&lt;/h2>
&lt;p>“Our engineering culture” means one way of working for everybody. On the picture, that is &lt;strong>one straight line drawn across all four bars&lt;/strong>.&lt;/p>
&lt;p>Wherever a bar pokes above the line, that work has &lt;em>too few&lt;/em> rules. Wherever there is empty space between the top of a bar and the line, that work has &lt;em>too many&lt;/em>. The striped areas are the mistakes.&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 -30 900 790" role="img" aria-label="The same four bars drawn three times, with one straight rulebook line at a low, middle and high level. In each case only one bar matches the line and the other three are marked as having too few or too many rules.">
&lt;defs>
&lt;pattern id="flp-hx" width="7" height="7" patternTransform="rotate(45)" patternUnits="userSpaceOnUse">
&lt;line x1="0" y1="0" x2="0" y2="7" stroke="currentColor" stroke-width="1.2" opacity=".5"/>
&lt;/pattern>
&lt;/defs>
&lt;rect x="20" y="-14" width="22" height="14" fill="url(#flp-hx)"/>
&lt;rect x="20" y="-14" width="22" height="14" fill="none" stroke="currentColor" stroke-width="1"/>
&lt;text class="svgsm" x="50" y="-3" opacity=".75">striped = the wrong amount of rules · the bigger the stripes, the worse it is for the person&lt;/text>
&lt;g stroke="currentColor" stroke-width="1" opacity=".12">
&lt;line x1="205" y1="40" x2="205" y2="706"/>
&lt;line x1="395" y1="40" x2="395" y2="706"/>
&lt;line x1="585" y1="40" x2="585" y2="706"/>
&lt;line x1="775" y1="40" x2="775" y2="706"/>
&lt;/g>
&lt;!-- A : loose -->
&lt;text class="svglabel" x="20" y="30" fill="var(--pio)">A. One loose rulebook: “we move fast, we trust our pods”&lt;/text>
&lt;g>
&lt;rect x="140" y="152" width="130" height="18" fill="currentColor" opacity=".13"/>
&lt;rect x="330" y="130" width="130" height="40" fill="currentColor" opacity=".13"/>
&lt;rect x="520" y="108" width="130" height="62" fill="currentColor" opacity=".13"/>
&lt;rect x="710" y="86" width="130" height="84" fill="currentColor" opacity=".13"/>
&lt;rect x="330" y="130" width="130" height="22" fill="url(#flp-hx)"/>
&lt;rect x="520" y="108" width="130" height="44" fill="url(#flp-hx)"/>
&lt;rect x="710" y="86" width="130" height="66" fill="url(#flp-hx)"/>
&lt;g stroke="currentColor" stroke-width="1.4" fill="none">
&lt;rect x="140" y="152" width="130" height="18"/>
&lt;rect x="330" y="130" width="130" height="40"/>
&lt;rect x="520" y="108" width="130" height="62"/>
&lt;rect x="710" y="86" width="130" height="84"/>
&lt;/g>
&lt;line x1="100" y1="170" x2="880" y2="170" stroke="currentColor" stroke-width="1.4"/>
&lt;line x1="100" y1="152" x2="880" y2="152" stroke="var(--pio)" stroke-width="3"/>
&lt;text class="svgsm" x="104" y="146" fill="var(--pio)">the rulebook&lt;/text>
&lt;use href="#flp-ok" x="189" y="104" width="32" height="52"/>
&lt;use href="#flp-panic1" x="379" y="82" width="32" height="52"/>
&lt;use href="#flp-panic2" x="569" y="60" width="32" height="52"/>
&lt;use href="#flp-panic3" x="759" y="38" width="32" height="52"/>
&lt;/g>
&lt;g class="svgsm">
&lt;text x="205" y="190" text-anchor="middle">fits&lt;/text>
&lt;text x="395" y="190" text-anchor="middle">too few rules&lt;/text>
&lt;text x="585" y="190" text-anchor="middle">too few rules&lt;/text>
&lt;text x="775" y="190" text-anchor="middle">too few rules&lt;/text>
&lt;/g>
&lt;text class="svgsm" x="20" y="212" opacity=".75">Agents and deploys run on judgement. No two pods ship the same way.&lt;/text>
&lt;!-- B : middle -->
&lt;text class="svglabel" x="20" y="272" fill="var(--set)">B. One middle rulebook: “we are professional, we follow the process”&lt;/text>
&lt;g>
&lt;rect x="140" y="394" width="130" height="18" fill="currentColor" opacity=".13"/>
&lt;rect x="330" y="372" width="130" height="40" fill="currentColor" opacity=".13"/>
&lt;rect x="520" y="350" width="130" height="62" fill="currentColor" opacity=".13"/>
&lt;rect x="710" y="328" width="130" height="84" fill="currentColor" opacity=".13"/>
&lt;rect x="140" y="368" width="130" height="26" fill="url(#flp-hx)"/>
&lt;rect x="520" y="350" width="130" height="18" fill="url(#flp-hx)"/>
&lt;rect x="710" y="328" width="130" height="40" fill="url(#flp-hx)"/>
&lt;g stroke="currentColor" stroke-width="1.4" fill="none">
&lt;rect x="140" y="394" width="130" height="18"/>
&lt;rect x="330" y="372" width="130" height="40"/>
&lt;rect x="520" y="350" width="130" height="62"/>
&lt;rect x="710" y="328" width="130" height="84"/>
&lt;/g>
&lt;line x1="100" y1="412" x2="880" y2="412" stroke="currentColor" stroke-width="1.4"/>
&lt;line x1="100" y1="368" x2="880" y2="368" stroke="var(--set)" stroke-width="3"/>
&lt;text class="svgsm" x="104" y="362" fill="var(--set)">the rulebook&lt;/text>
&lt;use href="#flp-squash2" x="189" y="320" width="32" height="52"/>
&lt;use href="#flp-ok" x="379" y="320" width="32" height="52"/>
&lt;use href="#flp-panic1" x="569" y="302" width="32" height="52"/>
&lt;use href="#flp-panic2" x="759" y="280" width="32" height="52"/>
&lt;/g>
&lt;g class="svgsm">
&lt;text x="205" y="432" text-anchor="middle">too many rules&lt;/text>
&lt;text x="395" y="432" text-anchor="middle">fits&lt;/text>
&lt;text x="585" y="432" text-anchor="middle">too few rules&lt;/text>
&lt;text x="775" y="432" text-anchor="middle">too few rules&lt;/text>
&lt;/g>
&lt;text class="svgsm" x="20" y="454" opacity=".75">The comfortable one. New bets slow down, and the deploy pipeline is rewritten a fifth time.&lt;/text>
&lt;!-- C : strict -->
&lt;text class="svglabel" x="20" y="514" fill="var(--tp)">C. One strict rulebook: “we are serious, everything gets reviewed”&lt;/text>
&lt;g>
&lt;rect x="140" y="636" width="130" height="18" fill="currentColor" opacity=".13"/>
&lt;rect x="330" y="614" width="130" height="40" fill="currentColor" opacity=".13"/>
&lt;rect x="520" y="592" width="130" height="62" fill="currentColor" opacity=".13"/>
&lt;rect x="710" y="570" width="130" height="84" fill="currentColor" opacity=".13"/>
&lt;rect x="140" y="570" width="130" height="66" fill="url(#flp-hx)"/>
&lt;rect x="330" y="570" width="130" height="44" fill="url(#flp-hx)"/>
&lt;rect x="520" y="570" width="130" height="22" fill="url(#flp-hx)"/>
&lt;g stroke="currentColor" stroke-width="1.4" fill="none">
&lt;rect x="140" y="636" width="130" height="18"/>
&lt;rect x="330" y="614" width="130" height="40"/>
&lt;rect x="520" y="592" width="130" height="62"/>
&lt;rect x="710" y="570" width="130" height="84"/>
&lt;/g>
&lt;line x1="100" y1="654" x2="880" y2="654" stroke="currentColor" stroke-width="1.4"/>
&lt;line x1="100" y1="570" x2="880" y2="570" stroke="var(--tp)" stroke-width="3"/>
&lt;text class="svgsm" x="104" y="564" fill="var(--tp)">the rulebook&lt;/text>
&lt;use href="#flp-squash3" x="189" y="522" width="32" height="52"/>
&lt;use href="#flp-squash2" x="379" y="522" width="32" height="52"/>
&lt;use href="#flp-squash1" x="569" y="522" width="32" height="52"/>
&lt;use href="#flp-ok" x="759" y="522" width="32" height="52"/>
&lt;/g>
&lt;g class="svgsm">
&lt;text x="205" y="674" text-anchor="middle">too many rules&lt;/text>
&lt;text x="395" y="674" text-anchor="middle">too many rules&lt;/text>
&lt;text x="585" y="674" text-anchor="middle">too many rules&lt;/text>
&lt;text x="775" y="674" text-anchor="middle">fits&lt;/text>
&lt;/g>
&lt;text class="svgsm" x="20" y="696" opacity=".75">The agent pilot meets an architecture review asking for the design doc, and dies politely.&lt;/text>
&lt;g class="svglabel">
&lt;text x="205" y="736" text-anchor="middle">1 · Brand new&lt;/text>
&lt;text x="395" y="736" text-anchor="middle">2 · We build our own&lt;/text>
&lt;text x="585" y="736" text-anchor="middle">3 · The proven way&lt;/text>
&lt;text x="775" y="736" text-anchor="middle">4 · Boring and cheap&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>Picture 2&lt;/b> Three different engineering cultures, drawn the same way. In every one of them, &lt;strong>one bar out of four fits and the other three are wrong&lt;/strong>, because the bars form a staircase and a rulebook is a straight line. There is no height that works.&lt;/figcaption>
&lt;/figure>
&lt;blockquote>
&lt;p>&lt;strong>A staircase cannot be covered by one straight line.&lt;/strong>&lt;/p>
&lt;p>You can reorg twice, and the line will still be straight.&lt;/p>
&lt;/blockquote>
&lt;/section>
&lt;!-- 09 : the people -->
&lt;section id="three-kinds-of-people">
&lt;h2>&lt;span class="flp-num">09&lt;/span>Which is why you need three kinds of people&lt;/h2>
&lt;p>Would you hand the deploy pipeline to the pod engineer who asked for one pod and two days? I would not.&lt;/p>
&lt;p>I think most engineers are at their best in one or two of the four columns. That pod engineer is happiest in column 1, with a first version running by Wednesday. The pipeline needs someone like an SRE, because a mess there costs money, usually at 3am. Most of your people are probably somewhere in between.&lt;/p>
&lt;p>&lt;a href="https://blog.gardeviance.org/2015/03/on-pioneers-settlers-town-planners-and.html" target="_blank" rel="noopener">Simon Wardley&lt;/a> calls the three kinds of people pioneers, settlers and town planners.&lt;/p>
&lt;div class="flp-cols flp-wide not-prose">
&lt;div class="flp-cel" style="border-top-color:var(--pio)">
&lt;svg class="port" viewBox="0 0 60 100" role="img" aria-label="A stick figure holding up a lightbulb." style="color:var(--pio)">&lt;use href="#flp-idea" x="0" y="0" width="60" height="100"/>&lt;/svg>
&lt;h4 style="color:var(--pio)">Pioneers&lt;/h4>
&lt;span class="sub">Columns 1 and 2&lt;/span>
&lt;ul>
&lt;li>&lt;b>Usually:&lt;/b> you, on a brand-new bet · the pod engineer who prototypes everything · an R&amp;amp;D pod · the engineer who built their own agent workflow, and it worked&lt;/li>
&lt;li>They go first, and most attempts fail, which is normal for them. They hate approval forms and “wait for next planning”.&lt;/li>
&lt;li>Should own: customers' agents doing jobs, unattended agent roadmaps&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel" style="border-top-color:var(--set)">
&lt;svg class="port" viewBox="0 0 60 100" role="img" aria-label="A stick figure holding a finished box." style="color:var(--set)">&lt;use href="#flp-build" x="0" y="0" width="60" height="100"/>&lt;/svg>
&lt;h4 style="color:var(--set)">Settlers&lt;/h4>
&lt;span class="sub">Columns 2 and 3&lt;/span>
&lt;ul>
&lt;li>&lt;b>Usually:&lt;/b> product pods on a growing product · tech leads · the platform pod · engineering managers&lt;/li>
&lt;li>Good at taking something half-finished and making it work the same way twice.&lt;/li>
&lt;li>Their version 2 is better than version 1, so being made to freeze too early drives them mad.&lt;/li>
&lt;li>Should own: what agents may ship alone, service design, the shared agent setup, coaching&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="flp-cel" style="border-top-color:var(--tp)">
&lt;svg class="port" viewBox="0 0 60 100" role="img" aria-label="A stick figure with a clipboard." style="color:var(--tp)">&lt;use href="#flp-clip" x="0" y="0" width="60" height="100"/>&lt;/svg>
&lt;h4 style="color:var(--tp)">Town planners&lt;/h4>
&lt;span class="sub">Columns 3 and 4&lt;/span>
&lt;ul>
&lt;li>&lt;b>Usually:&lt;/b> SRE · infrastructure and IT · security operations · build and release engineering&lt;/li>
&lt;li>They want the identical result every single time, as cheaply as possible, and get nervous the moment someone says “we will decide later”.&lt;/li>
&lt;li>Should own: the deploy pipeline, patching and secrets, model APIs and laptops&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;/section>
&lt;!-- 10 : pods -->
&lt;section id="ai-pods">
&lt;h2>&lt;span class="flp-num">10&lt;/span>Why I think AI pods make this easier&lt;/h2>
&lt;p>Simon Wardley ran pioneers, settlers and town planners as small cells back in 2005. Most engineering orgs never did, and I suspect team size is a big part of why. A team of six or eight engineers had all three kinds of people in it and worked in all four columns. When the deploy pipeline needed stricter rules, the engineer prototyping something new got them too.&lt;/p>
&lt;p>Our pods are one engineer and one product person, two engineers at most, and agents do much of the building. My bet is that a pod that small can be one of the three groups on its own and follow only the rules its column needs.&lt;/p>
&lt;p>&lt;em>We have not tried that yet.&lt;/em>&lt;/p>
&lt;p>If the agent pilot from the Monday meeting started in a pioneer pod, a settler pod would take it over once it worked. The pioneer pod would move on to the next bet, still under the same few rules.&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 0 900 280" role="img" aria-label="Left: a team of eight people in one box that spans all four columns, with one set of rules. Right: seven AI pods of two or three people and an agent, each sitting in one column, with a stepped rulebook that gives each column its own amount of rules, next to a dashed flat one.">
&lt;text class="svglabel" x="20" y="26">A team of eight&lt;/text>
&lt;text class="svgsm" x="20" y="46" opacity=".7">its work spans every column&lt;/text>
&lt;rect x="20" y="70" width="410" height="120" fill="currentColor" opacity=".07"/>
&lt;rect x="20" y="70" width="410" height="120" fill="none" stroke="currentColor" stroke-width="1.6"/>
&lt;use href="#flp-plain" x="40" y="82" width="26" height="44"/>&lt;use href="#flp-plain" x="90" y="82" width="26" height="44"/>&lt;use href="#flp-plain" x="140" y="82" width="26" height="44"/>&lt;use href="#flp-plain" x="190" y="82" width="26" height="44"/>&lt;use href="#flp-plain" x="240" y="82" width="26" height="44"/>&lt;use href="#flp-plain" x="290" y="82" width="26" height="44"/>&lt;use href="#flp-plain" x="340" y="82" width="26" height="44"/>&lt;use href="#flp-plain" x="390" y="82" width="26" height="44"/>
&lt;g stroke="currentColor" stroke-width="1" opacity=".3" stroke-dasharray="3 3">&lt;line x1="122" y1="146" x2="122" y2="186"/>&lt;line x1="225" y1="146" x2="225" y2="186"/>&lt;line x1="327" y1="146" x2="327" y2="186"/>&lt;/g>
&lt;g class="svgsm" text-anchor="middle" opacity=".7">&lt;text x="71" y="172">1 · new&lt;/text>&lt;text x="173" y="172">2 · own&lt;/text>&lt;text x="276" y="172">3 · proven&lt;/text>&lt;text x="378" y="172">4 · boring&lt;/text>&lt;/g>
&lt;text class="svgsm" x="20" y="214">one set of rules for all of it&lt;/text>
&lt;text class="svgsm" x="20" y="232" opacity=".6">change the rules for one column, and you change them for everyone&lt;/text>
&lt;line x1="460" y1="14" x2="460" y2="266" stroke="currentColor" stroke-width="1" opacity=".2"/>
&lt;text class="svglabel" x="490" y="26">AI pods&lt;/text>
&lt;text class="svgsm" x="490" y="46" opacity=".7">one or two engineers, one product person, agents&lt;/text>
&lt;g fill="currentColor" opacity=".04">&lt;rect x="490" y="56" width="92" height="196"/>&lt;rect x="590" y="56" width="92" height="196"/>&lt;rect x="690" y="56" width="92" height="196"/>&lt;rect x="790" y="56" width="92" height="196"/>&lt;/g>
&lt;g class="svgsm" text-anchor="middle" opacity=".7">&lt;text x="536" y="72">1 · new&lt;/text>&lt;text x="636" y="72">2 · own&lt;/text>&lt;text x="736" y="72">3 · proven&lt;/text>&lt;text x="836" y="72">4 · boring&lt;/text>&lt;/g>
&lt;g style="color:var(--pio)">&lt;rect x="496" y="82" width="80" height="44" rx="6" fill="currentColor" opacity=".14"/>&lt;rect x="496" y="82" width="80" height="44" rx="6" fill="none" stroke="currentColor" stroke-width="1.4"/>&lt;use href="#flp-plain" x="503" y="90" width="18" height="30"/>&lt;use href="#flp-plain" x="521" y="90" width="18" height="30"/>&lt;use href="#flp-agent" x="550" y="94" width="20" height="20"/>&lt;/g>
&lt;g style="color:var(--pio)">&lt;rect x="496" y="134" width="80" height="44" rx="6" fill="currentColor" opacity=".14"/>&lt;rect x="496" y="134" width="80" height="44" rx="6" fill="none" stroke="currentColor" stroke-width="1.4"/>&lt;use href="#flp-plain" x="503" y="142" width="18" height="30"/>&lt;use href="#flp-plain" x="521" y="142" width="18" height="30"/>&lt;use href="#flp-agent" x="550" y="146" width="20" height="20"/>&lt;/g>
&lt;g style="color:var(--set)">&lt;rect x="596" y="82" width="80" height="44" rx="6" fill="currentColor" opacity=".14"/>&lt;rect x="596" y="82" width="80" height="44" rx="6" fill="none" stroke="currentColor" stroke-width="1.4"/>&lt;use href="#flp-plain" x="600" y="91" width="16" height="27"/>&lt;use href="#flp-plain" x="615" y="91" width="16" height="27"/>&lt;use href="#flp-plain" x="630" y="91" width="16" height="27"/>&lt;use href="#flp-agent" x="650" y="94" width="20" height="20"/>&lt;/g>
&lt;g style="color:var(--set)">&lt;rect x="596" y="134" width="80" height="44" rx="6" fill="currentColor" opacity=".14"/>&lt;rect x="596" y="134" width="80" height="44" rx="6" fill="none" stroke="currentColor" stroke-width="1.4"/>&lt;use href="#flp-plain" x="603" y="142" width="18" height="30"/>&lt;use href="#flp-plain" x="621" y="142" width="18" height="30"/>&lt;use href="#flp-agent" x="650" y="146" width="20" height="20"/>&lt;/g>
&lt;g style="color:var(--set)">&lt;rect x="696" y="82" width="80" height="44" rx="6" fill="currentColor" opacity=".14"/>&lt;rect x="696" y="82" width="80" height="44" rx="6" fill="none" stroke="currentColor" stroke-width="1.4"/>&lt;use href="#flp-plain" x="703" y="90" width="18" height="30"/>&lt;use href="#flp-plain" x="721" y="90" width="18" height="30"/>&lt;use href="#flp-agent" x="750" y="94" width="20" height="20"/>&lt;/g>
&lt;g style="color:var(--set)">&lt;rect x="696" y="134" width="80" height="44" rx="6" fill="currentColor" opacity=".14"/>&lt;rect x="696" y="134" width="80" height="44" rx="6" fill="none" stroke="currentColor" stroke-width="1.4"/>&lt;use href="#flp-plain" x="700" y="143" width="16" height="27"/>&lt;use href="#flp-plain" x="715" y="143" width="16" height="27"/>&lt;use href="#flp-plain" x="730" y="143" width="16" height="27"/>&lt;use href="#flp-agent" x="750" y="146" width="20" height="20"/>&lt;/g>
&lt;g style="color:var(--tp)">&lt;rect x="796" y="82" width="80" height="44" rx="6" fill="currentColor" opacity=".14"/>&lt;rect x="796" y="82" width="80" height="44" rx="6" fill="none" stroke="currentColor" stroke-width="1.4"/>&lt;use href="#flp-plain" x="803" y="90" width="18" height="30"/>&lt;use href="#flp-plain" x="821" y="90" width="18" height="30"/>&lt;use href="#flp-agent" x="850" y="94" width="20" height="20"/>&lt;/g>
&lt;defs>&lt;marker id="flp-ar4" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>&lt;/marker>&lt;/defs>
&lt;text class="svgsm" x="500" y="191" opacity=".75">the work moves, the pods stay&lt;/text>
&lt;line x1="672" y1="187" x2="876" y2="187" stroke="currentColor" stroke-width="1.4" marker-end="url(#flp-ar4)" opacity=".75"/>
&lt;line x1="490" y1="222" x2="882" y2="222" stroke="currentColor" stroke-width="1.4" stroke-dasharray="5 4" opacity=".45"/>
&lt;path d="M490 240 H590 V228 H690 V216 H790 V204 H882" fill="none" stroke="currentColor" stroke-width="3"/>
&lt;text class="svgsm" x="490" y="270">solid: a rulebook per column&lt;/text>
&lt;text class="svgsm" x="882" y="270" text-anchor="end" opacity=".6">dashed: one rulebook&lt;/text>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>Picture 3&lt;/b> If each pod sat in one column, the rulebook (the solid line on the right) could step up column by column, like the bars in Picture 1.&lt;/figcaption>
&lt;/figure>
&lt;/section>
&lt;!-- 11 : agents make it expensive -->
&lt;section id="costs-more">
&lt;h2>&lt;span class="flp-num">11&lt;/span>And why the flat line costs more than ever&lt;/h2>
&lt;p>Agents multiply whatever the flat line gets wrong.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Too many rules on column 1:&lt;/strong> a pioneer pod with Claude Code can build three versions of the agent pilot while the architecture review is still waiting for a design doc nobody can write yet.&lt;/li>
&lt;li>&lt;strong>Too few rules on column 4:&lt;/strong> the same agents push far more changes through the pipeline than a team typing by hand ever did. By lunchtime today I had run up to 19 at the same time, on my own. A loose rulebook that held for people typing does not hold for that.&lt;/li>
&lt;li>&lt;strong>More pods, more mismatches:&lt;/strong> ten pods instead of two teams means ten places where the line can be wrong, and the rulebook is often the only thing they share.&lt;/li>
&lt;li>&lt;strong>The rules are code now:&lt;/strong> agent permissions, hooks and required checks. Make one shared settings file strict, and a pioneer pod's agents stop to ask before every command. Make it loose, and a town planner pod's agents can change the deploy pipeline without a single check.&lt;/li>
&lt;/ul>
&lt;p>The drift that section 13 shows got faster too. Two years ago, writing code with an agent was column 1. The surveys since then:&lt;/p>
&lt;div class="flp-stats not-prose">
&lt;div class="flp-stat-group">
&lt;span class="flp-stat-when">October 2025 · Sonar&lt;/span>
&lt;div class="flp-stat-row">
&lt;div>&lt;span class="flp-stat-n">25%&lt;/span>&lt;span class="flp-stat-l">of developers used AI agents regularly&lt;/span>&lt;/div>
&lt;div>&lt;span class="flp-stat-n">39%&lt;/span>&lt;span class="flp-stat-l">more had tried them&lt;/span>&lt;/div>
&lt;/div>
&lt;span class="flp-stat-src">&lt;a href="https://www.sonarsource.com/state-of-code-developer-survey-report.pdf" target="_blank" rel="noopener">State of Code survey&lt;/a>, 1,149 developers&lt;/span>
&lt;/div>
&lt;div class="flp-stat-group">
&lt;span class="flp-stat-when">May to July 2026 · JetBrains&lt;/span>
&lt;div class="flp-stat-row">
&lt;div>&lt;span class="flp-stat-n">90%&lt;/span>&lt;span class="flp-stat-l">used AI coding agents at work every week&lt;/span>&lt;/div>
&lt;div>&lt;span class="flp-stat-n">68%&lt;/span>&lt;span class="flp-stat-l">used them every day&lt;/span>&lt;/div>
&lt;/div>
&lt;span class="flp-stat-src">&lt;a href="https://blog.jetbrains.com/research/2026/08/ai-coding-agent-adoption-2026/" target="_blank" rel="noopener">Developer Ecosystem survey&lt;/a>, more than 15,000 developers&lt;/span>
&lt;/div>
&lt;/div>
&lt;p>Different surveys and different questions, but either way that is column 3.&lt;/p>
&lt;p>Running several agents in parallel moved just as fast. I could not find a survey that counts it yet. The closest is a small one, where 65% of 40 engineers &lt;a href="https://www.aibuilderclub.com/blog/best-ai-coding-agent-2026" target="_blank" rel="noopener">use two coding agents every day&lt;/a>. Letting them run a whole roadmap unattended is today's column 1.&lt;/p>
&lt;p>The model underneath is already column 4. You buy it by the token, like electricity, from a few suppliers big enough that one of them, &lt;a href="https://www.anthropic.com/news/confidential-draft-s1-sec" target="_blank" rel="noopener">Anthropic, is getting ready to go public&lt;/a>.&lt;/p>
&lt;/section>
&lt;!-- 12 : the handovers -->
&lt;section id="pilot">
&lt;h2>&lt;span class="flp-num">12&lt;/span>Why the pilot is still a pilot&lt;/h2>
&lt;p>This is complaint 2 from section 04.&lt;/p>
&lt;p>Work moves to the next column when the next pod decides it is ready and &lt;strong>takes it&lt;/strong>. The pod that built it never thinks it is ready, so the next pod has to overrule it.&lt;/p>
&lt;p>That is an argument between people who want different things, and an argument is exactly what one shared culture is built to avoid. So it never happens, and the pilot stays a pilot while everyone says nice things about it.&lt;/p>
&lt;p>With agents, a pioneer pod can produce a working pilot in days. If nobody owns the handover, pilots pile up faster than anyone can take them.&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 0 900 360" role="img" aria-label="Two versions side by side. On the left, three separate groups with two handovers and a rejection. On the right, one merged group where both handovers have disappeared, so the pilot is never taken and the rules spread backwards into the new work.">
&lt;defs>
&lt;marker id="flp-ar2" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>
&lt;/marker>
&lt;marker id="flp-ar3" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
&lt;path d="M0,0 L10,5 L0,10 z" fill="var(--tp)"/>
&lt;/marker>
&lt;/defs>
&lt;text class="svglabel" x="20" y="26">Three kinds of pods&lt;/text>
&lt;text class="svgsm" x="20" y="46" opacity=".7">work moves because the next pod takes it&lt;/text>
&lt;rect x="20" y="72" width="120" height="66" fill="var(--pio)" opacity=".14"/>
&lt;rect x="20" y="72" width="120" height="66" fill="none" stroke="var(--pio)" stroke-width="1.6"/>
&lt;use href="#flp-idea" x="26" y="80" width="22" height="38"/>
&lt;text class="svglabel" x="96" y="101" text-anchor="middle" fill="var(--pio)">Pioneer&lt;/text>
&lt;text class="svgsm" x="96" y="121" text-anchor="middle" opacity=".75">tries it&lt;/text>
&lt;rect x="182" y="72" width="120" height="66" fill="var(--set)" opacity=".14"/>
&lt;rect x="182" y="72" width="120" height="66" fill="none" stroke="var(--set)" stroke-width="1.6"/>
&lt;use href="#flp-build" x="188" y="80" width="22" height="38"/>
&lt;text class="svglabel" x="258" y="101" text-anchor="middle" fill="var(--set)">Settler&lt;/text>
&lt;text class="svgsm" x="258" y="121" text-anchor="middle" opacity=".75">makes it work&lt;/text>
&lt;rect x="344" y="72" width="120" height="66" fill="var(--tp)" opacity=".14"/>
&lt;rect x="344" y="72" width="120" height="66" fill="none" stroke="var(--tp)" stroke-width="1.6"/>
&lt;use href="#flp-clip" x="350" y="80" width="22" height="38"/>
&lt;text class="svglabel" x="420" y="101" text-anchor="middle" fill="var(--tp)" style="font-size:12.5px">Town planner&lt;/text>
&lt;text class="svgsm" x="420" y="121" text-anchor="middle" opacity=".75">makes it cheap&lt;/text>
&lt;line x1="142" y1="105" x2="178" y2="105" stroke="currentColor" stroke-width="1.8" marker-end="url(#flp-ar2)"/>
&lt;line x1="304" y1="105" x2="340" y2="105" stroke="currentColor" stroke-width="1.8" marker-end="url(#flp-ar2)"/>
&lt;text class="svgsm" x="160" y="92" text-anchor="middle">takes&lt;/text>
&lt;text class="svgsm" x="322" y="92" text-anchor="middle">takes&lt;/text>
&lt;path d="M340,164 C300,196 200,196 152,168" fill="none" stroke="currentColor" stroke-width="1.4" stroke-dasharray="4 4" marker-end="url(#flp-ar2)"/>
&lt;text class="svgsm" x="246" y="212" text-anchor="middle">“not ready, keep working on it”&lt;/text>
&lt;text class="svgsm" x="246" y="230" text-anchor="middle" opacity=".6">only an outsider will say this&lt;/text>
&lt;text class="svgsm" x="20" y="276" opacity=".8">Two handovers, and each one&lt;/text>
&lt;text class="svgsm" x="20" y="294" opacity=".8">is an argument. On purpose.&lt;/text>
&lt;line x1="490" y1="14" x2="490" y2="330" stroke="currentColor" stroke-width="1" opacity=".2"/>
&lt;text class="svglabel" x="524" y="26">One culture&lt;/text>
&lt;text class="svgsm" x="524" y="46" opacity=".7">the same two handovers, gone&lt;/text>
&lt;rect x="524" y="72" width="346" height="66" fill="currentColor" opacity=".07"/>
&lt;rect x="524" y="72" width="346" height="66" fill="none" stroke="currentColor" stroke-width="1.6"/>
&lt;use href="#flp-plain" x="536" y="80" width="22" height="38"/>
&lt;use href="#flp-plain" x="562" y="80" width="22" height="38"/>
&lt;use href="#flp-plain" x="588" y="80" width="22" height="38"/>
&lt;text class="svglabel" x="742" y="101" text-anchor="middle">“this is how we work here”&lt;/text>
&lt;text class="svgsm" x="742" y="121" text-anchor="middle" opacity=".75">one set of rules for everything&lt;/text>
&lt;g opacity=".45">
&lt;line x1="610" y1="158" x2="610" y2="176" stroke="currentColor" stroke-width="1.2" stroke-dasharray="3 4"/>
&lt;line x1="790" y1="158" x2="790" y2="176" stroke="currentColor" stroke-width="1.2" stroke-dasharray="3 4"/>
&lt;/g>
&lt;text class="svgsm" x="610" y="194" text-anchor="middle" opacity=".8">handover 1 · gone&lt;/text>
&lt;text class="svgsm" x="790" y="194" text-anchor="middle" opacity=".8">handover 2 · gone&lt;/text>
&lt;path d="M566,216 L566,246" stroke="var(--pio)" stroke-width="1.6" marker-end="url(#flp-ar2)"/>
&lt;text class="svgsm" x="582" y="234" fill="var(--pio)">the pilot is praised,&lt;/text>
&lt;text class="svgsm" x="582" y="252" fill="var(--pio)">then quietly left alone&lt;/text>
&lt;path d="M864,300 L700,300" stroke="var(--tp)" stroke-width="1.6" marker-end="url(#flp-ar3)"/>
&lt;text class="svgsm" x="524" y="294" fill="var(--tp)">the rules spread backwards&lt;/text>
&lt;text class="svgsm" x="524" y="312" fill="var(--tp)">into the new work, and kill it&lt;/text>
&lt;text class="svgsm" x="524" y="344" opacity=".6">Nobody is blocked. Nothing arrives either.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>Picture 4&lt;/b> The difference between the two sides is two arrows. Take away the border between the pods and the work stops moving, because the border was the thing that moved it.&lt;/figcaption>
&lt;/figure>
&lt;/section>
&lt;!-- 13 : the drift -->
&lt;section id="every-year">
&lt;h2>&lt;span class="flp-num">13&lt;/span>And every year it gets worse&lt;/h2>
&lt;p>Your sixteen things do not stay in their columns. They drift to the right, at a speed the industry decides, and agents made that speed a lot higher. A rulebook written into &lt;code>CLAUDE.md&lt;/code> files, hooks and required checks does not drift anywhere, and the agents keep following it long after the work has moved.&lt;/p>
&lt;p>Each square below is one of the sixteen. Watch them move right while the line stays where it was.&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 0 900 336" role="img" aria-label="Sixteen squares shown in three rows for today, in a year and in two years. They move steadily into the right-hand columns while a fixed vertical line, the rulebook, stays in place. The count on the wrong side of the line grows from nine to eleven to thirteen.">
&lt;g class="svglabel" opacity=".8">
&lt;text x="205" y="26" text-anchor="middle">1 · Brand new&lt;/text>
&lt;text x="355" y="26" text-anchor="middle">2 · We build our own&lt;/text>
&lt;text x="545" y="26" text-anchor="middle">3 · The proven way&lt;/text>
&lt;text x="735" y="26" text-anchor="middle">4 · Boring and cheap&lt;/text>
&lt;/g>
&lt;g stroke="currentColor" stroke-width="1" opacity=".12">
&lt;line x1="280" y1="36" x2="280" y2="268"/>
&lt;line x1="640" y1="36" x2="640" y2="268"/>
&lt;/g>
&lt;line x1="450" y1="36" x2="450" y2="282" stroke="var(--tp)" stroke-width="3"/>
&lt;text class="svgsm" x="450" y="302" text-anchor="middle" fill="var(--tp)">your rulebook was written for this side&lt;/text>
&lt;text class="svgsm" x="450" y="320" text-anchor="middle" opacity=".6">everything to the right of the line is run with the wrong rules&lt;/text>
&lt;text class="svglabel" x="20" y="80">Today&lt;/text>
&lt;text class="svgsm" x="20" y="98" opacity=".65">9 of 16 on the wrong side&lt;/text>
&lt;g fill="currentColor">&lt;rect x="187" y="68" width="16" height="16"/>&lt;rect x="207" y="68" width="16" height="16"/>&lt;rect x="307" y="68" width="16" height="16"/>&lt;rect x="327" y="68" width="16" height="16"/>&lt;rect x="347" y="68" width="16" height="16"/>&lt;rect x="367" y="68" width="16" height="16"/>&lt;rect x="387" y="68" width="16" height="16"/>&lt;rect x="487" y="68" width="16" height="16"/>&lt;rect x="507" y="68" width="16" height="16"/>&lt;rect x="527" y="68" width="16" height="16"/>&lt;rect x="547" y="68" width="16" height="16"/>&lt;rect x="567" y="68" width="16" height="16"/>&lt;rect x="587" y="68" width="16" height="16"/>&lt;rect x="707" y="68" width="16" height="16"/>&lt;rect x="727" y="68" width="16" height="16"/>&lt;rect x="747" y="68" width="16" height="16"/>&lt;/g>
&lt;text class="svglabel" x="20" y="160">In a year&lt;/text>
&lt;text class="svgsm" x="20" y="178" opacity=".65">11 of 16 on the wrong side&lt;/text>
&lt;g fill="currentColor">&lt;rect x="197" y="148" width="16" height="16"/>&lt;rect x="317" y="148" width="16" height="16"/>&lt;rect x="337" y="148" width="16" height="16"/>&lt;rect x="357" y="148" width="16" height="16"/>&lt;rect x="377" y="148" width="16" height="16"/>&lt;rect x="487" y="148" width="16" height="16"/>&lt;rect x="507" y="148" width="16" height="16"/>&lt;rect x="527" y="148" width="16" height="16"/>&lt;rect x="547" y="148" width="16" height="16"/>&lt;rect x="567" y="148" width="16" height="16"/>&lt;rect x="587" y="148" width="16" height="16"/>&lt;rect x="687" y="148" width="16" height="16"/>&lt;rect x="707" y="148" width="16" height="16"/>&lt;rect x="727" y="148" width="16" height="16"/>&lt;rect x="747" y="148" width="16" height="16"/>&lt;rect x="767" y="148" width="16" height="16"/>&lt;/g>
&lt;text class="svglabel" x="20" y="240">In two years&lt;/text>
&lt;text class="svgsm" x="20" y="258" opacity=".65">13 of 16 on the wrong side&lt;/text>
&lt;g fill="currentColor">&lt;rect x="197" y="228" width="16" height="16"/>&lt;rect x="337" y="228" width="16" height="16"/>&lt;rect x="357" y="228" width="16" height="16"/>&lt;rect x="487" y="228" width="16" height="16"/>&lt;rect x="507" y="228" width="16" height="16"/>&lt;rect x="527" y="228" width="16" height="16"/>&lt;rect x="547" y="228" width="16" height="16"/>&lt;rect x="567" y="228" width="16" height="16"/>&lt;rect x="587" y="228" width="16" height="16"/>&lt;rect x="667" y="228" width="16" height="16"/>&lt;rect x="687" y="228" width="16" height="16"/>&lt;rect x="707" y="228" width="16" height="16"/>&lt;rect x="727" y="228" width="16" height="16"/>&lt;rect x="747" y="228" width="16" height="16"/>&lt;rect x="767" y="228" width="16" height="16"/>&lt;rect x="787" y="228" width="16" height="16"/>&lt;/g>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>Picture 5&lt;/b> Nothing moved to the left. Nothing ever does. This used to take a decade. Writing code with an agent went from column 1 to column 3 in about two years. The bill comes all at once, usually the year someone turns the thing you built by hand into a service you can buy.&lt;/figcaption>
&lt;/figure>
&lt;/section>
&lt;!-- 14 : the metrics -->
&lt;section id="feels-wonderful">
&lt;h2>&lt;span class="flp-num">14&lt;/span>Do your numbers show any of this?&lt;/h2>
&lt;p>Probably not the ones you already collect.&lt;/p>
&lt;p>I have not seen your dashboards, but one shared culture is pleasant to work in, and those numbers say so. I think that is why the flat line lasts for years.&lt;/p>
&lt;div class="flp-tablewrap">
&lt;table>
&lt;thead>
&lt;tr>&lt;th>What you measure&lt;/th>&lt;th>What you probably see&lt;/th>&lt;th>Shows the problem?&lt;/th>&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td>Code shipped per engineer, with agents&lt;/td>&lt;td>Going up&lt;/td>&lt;td class="mark no">No&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Engineers staying on the team&lt;/td>&lt;td>Fine&lt;/td>&lt;td class="mark no">No&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Arguments in design reviews&lt;/td>&lt;td>Hardly any&lt;/td>&lt;td class="mark no">No&lt;/td>&lt;/tr>
&lt;tr>&lt;td>People feel safe asking for help&lt;/td>&lt;td>High&lt;/td>&lt;td class="mark no">No&lt;/td>&lt;/tr>
&lt;tr>&lt;td>People feel safe &lt;em>disagreeing&lt;/em> out loud&lt;/td>&lt;td>Low, and nobody asks&lt;/td>&lt;td class="mark yes">Yes&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Revenue from products you did not have 3 years ago&lt;/td>&lt;td>Almost zero&lt;/td>&lt;td class="mark yes">Yes&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Pilots that became the normal way of working&lt;/td>&lt;td>None&lt;/td>&lt;td class="mark yes">Yes&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Processes and tools you retired last year&lt;/td>&lt;td>Zero&lt;/td>&lt;td class="mark yes">Yes&lt;/td>&lt;/tr>
&lt;tr>&lt;td>How much depends on the same few people&lt;/td>&lt;td>Almost everything&lt;/td>&lt;td class="mark yes">Yes&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>
&lt;!-- 15 : in practice -->
&lt;section id="in-practice">
&lt;h2>&lt;span class="flp-num">15&lt;/span>In practice: the same sixteen things&lt;/h2>
&lt;p>Back to where we started. The whole idea, applied to your own list.&lt;/p>
&lt;div class="flp-tablewrap flp-wide">
&lt;table>
&lt;thead>
&lt;tr>&lt;th>Column&lt;/th>&lt;th>Your things&lt;/th>&lt;th>Who should own it&lt;/th>&lt;th>What good looks like&lt;/th>&lt;th>What kills it&lt;/th>&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td class="stage">1 · Brand new&lt;/td>
&lt;td>Customers' agents doing whole jobs · unattended agent roadmaps&lt;/td>
&lt;td class="owner-p">Pioneer pods&lt;/td>
&lt;td>Three attempts, two fail, you know within a month&lt;/td>
&lt;td>Asking for the design doc&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="stage">2 · We build our own&lt;/td>
&lt;td>What agents may ship without a human · each core service's design · the quarter's bets · the shared agent setup · coaching on agents&lt;/td>
&lt;td class="owner-s">Settler pods&lt;/td>
&lt;td>One version, written down once, used by every pod&lt;/td>
&lt;td>Letting every pod invent its own again&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="stage">3 · The proven way&lt;/td>
&lt;td>Spec first, then Claude Code · reviewing agent pull requests · bug fixes · delivery and token numbers · planning and the retro · staffing pods and on-call&lt;/td>
&lt;td class="owner-s">Settler pods&lt;/td>
&lt;td>Every pod does it the same proven way, and stops redesigning it&lt;/td>
&lt;td>Redesigning review or on-call “because we are special”&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td class="stage">4 · Boring and cheap&lt;/td>
&lt;td>Deploying through the pipeline · patching and secrets · model APIs, cloud accounts, laptops, SSO&lt;/td>
&lt;td class="owner-o">Town planner pods&lt;/td>
&lt;td>It runs, it is cheap, you never think about it&lt;/td>
&lt;td>Still “improving” it every year&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Read the last column down. Three of those four are complaints 1, 3 and 4 from section 04, and each one now has a cause you can do something about.&lt;/p>
&lt;/section>
&lt;!-- 16 : what it does to people -->
&lt;section id="people">
&lt;h2>&lt;span class="flp-num">16&lt;/span>What this does for the people&lt;/h2>
&lt;p>A good engineer in the wrong column starts to look like a difficult one. They usually feel it before you do.&lt;/p>
&lt;figure class="flp-wide">
&lt;div class="flp-frame">
&lt;svg class="flp-scroll" viewBox="0 0 900 442" role="img" aria-label="The same three people drawn twice. In their own column they are working happily. In someone else's column the pioneer is crushed by rules, the settler is frozen, and the town planner is panicking without any.">
&lt;text class="svglabel" x="20" y="26">In their own column&lt;/text>
&lt;use href="#flp-idea" x="150" y="44" width="70" height="116"/>
&lt;use href="#flp-build" x="420" y="44" width="70" height="116"/>
&lt;use href="#flp-clip" x="690" y="44" width="70" height="116"/>
&lt;g class="svgsm" text-anchor="middle" opacity=".8">
&lt;text x="185" y="180">Pioneer in column 1&lt;/text>
&lt;text x="455" y="180">Settler in column 2&lt;/text>
&lt;text x="725" y="180">Town planner in column 4&lt;/text>
&lt;/g>
&lt;g class="svgsm" text-anchor="middle" opacity=".6">
&lt;text x="185" y="198">energy goes into the new bet&lt;/text>
&lt;text x="455" y="198">finishes it, everyone uses it&lt;/text>
&lt;text x="725" y="198">quiet, exact, nothing changes&lt;/text>
&lt;/g>
&lt;line x1="20" y1="222" x2="880" y2="222" stroke="currentColor" stroke-width="1" opacity=".2"/>
&lt;text class="svglabel" x="20" y="256">In somebody else's column&lt;/text>
&lt;use href="#flp-squash3" x="150" y="274" width="70" height="116"/>
&lt;use href="#flp-panic1" x="420" y="274" width="70" height="116"/>
&lt;use href="#flp-panic3" x="690" y="274" width="70" height="116"/>
&lt;g class="svgsm" text-anchor="middle" opacity=".8">
&lt;text x="185" y="410">Pioneer put on column 4&lt;/text>
&lt;text x="455" y="410">Settler told to freeze at v1&lt;/text>
&lt;text x="725" y="410">Town planner put on column 1&lt;/text>
&lt;/g>
&lt;g class="svgsm" text-anchor="middle" opacity=".6">
&lt;text x="185" y="430">the energy goes into fighting the form&lt;/text>
&lt;text x="455" y="430">never allowed to finish it properly&lt;/text>
&lt;text x="725" y="430">nothing to hold on to, no answer exists&lt;/text>
&lt;/g>
&lt;/svg>
&lt;/div>
&lt;figcaption>&lt;b>Picture 6&lt;/b> Both rows are the same three people, first in their own column, then in somebody else's.&lt;/figcaption>
&lt;/figure>
&lt;p>Some of the people who keep rewriting your deploy pipeline are, I suspect, pioneers who were never given anything new to work on. The agent pilot could use them.&lt;/p>
&lt;p>Town planners remove surprises for a living, because in column 4 a surprise means an outage. If one of them ends up on that pilot, their usual questions (what happens when it fails, how do we roll it back) will get “we do not know yet” for weeks, and they will be miserable.&lt;/p>
&lt;p>A team of eight could carry one person in the wrong column for a long time, mostly without anyone saying it out loud. In a pod of two, that person is half the pod.&lt;/p>
&lt;p>And the Monday meeting in section 01 stops being about character, about who is “resistant to change” and who is “not detail-oriented”. The same goes for the engineer who waits to be given a task and says “Just tell me what to do”. In column 4 that is the right thing to ask, because the task is already known. On the agent pilot, which is column 1, there is no task to hand over yet, so it is the wrong request.&lt;/p>
&lt;/section>
&lt;!-- Monday -->
&lt;section id="what-to-do-on-monday">
&lt;h2>&lt;span class="flp-num">↳&lt;/span>What to do on Monday&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Find out who is who.&lt;/strong> Before anything else. For each person on your team, which of the three are they? Do not guess from their title. Ask them what a bad week looks like. “Nobody told me what was expected” and “I was not allowed to try anything” are two different people.&lt;/li>
&lt;li>&lt;strong>Make your own version of section 05.&lt;/strong> One afternoon with your staff engineers, your managers and your real list of work.&lt;/li>
&lt;li>&lt;strong>Give each pod one column, and each column its own rules.&lt;/strong> If a spike for the agent pilot and a change to the deploy pipeline go through the same review, you have one rulebook, whatever the org chart says.&lt;/li>
&lt;li>&lt;strong>Let the receiving pod say when something is ready.&lt;/strong> Write down what “ready” means. Expect the pod that built it to complain. Do not settle it by getting everyone to agree.&lt;/li>
&lt;li>&lt;strong>Write the agents' rules per column too.&lt;/strong> A pioneer pod's agents can try anything inside a sandbox with no production credentials. A town planner pod's agents get narrow permissions, hooks and required checks before anything reaches production.&lt;/li>
&lt;li>&lt;strong>Find out who every process runs through.&lt;/strong> That is complaint 5 from section 04. In any other system you would call it a single point of failure.&lt;/li>
&lt;li>&lt;strong>Start measuring the bottom five rows of the table in section 14.&lt;/strong> Especially the first: feeling safe to ask for help and feeling safe to disagree are two different things.&lt;/li>
&lt;/ol>
&lt;/section>
&lt;section id="honest-assessment">
&lt;h2>The Honest Assessment&lt;/h2>
&lt;p>Works best for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Process fights that keep coming back:&lt;/strong> the same argument about reviews, approvals or RFCs, with the same people on the same sides every quarter.&lt;/li>
&lt;li>&lt;strong>Orgs that already work in small pods:&lt;/strong> the pod is the unit you place in a column, so the fix is a staffing decision instead of a reorg.&lt;/li>
&lt;li>&lt;strong>Orgs where most of the week is column 3 and 4 work:&lt;/strong> the few new bets suffocate under rules that were written for the pipeline.&lt;/li>
&lt;li>&lt;strong>Deciding what to stop:&lt;/strong> it shows which rules to remove, as well as which to add.&lt;/li>
&lt;/ul>
&lt;p>Struggles with:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Very small companies:&lt;/strong> when the same three people work in every column, there is nobody to split the work between.&lt;/li>
&lt;li>&lt;strong>On-call in a pod of two:&lt;/strong> a town planner pod of one or two engineers cannot carry a round-the-clock rota alone. Column 4 needs several pods, or a rota across them.&lt;/li>
&lt;li>&lt;strong>Agents blur the columns:&lt;/strong> a pioneer pod's prototype can look production-ready on day two. Calling it column 1 anyway takes discipline.&lt;/li>
&lt;li>&lt;strong>Placing the work:&lt;/strong> the picture assumes you know which column something is in. Agreeing on that is often the hardest conversation of all.&lt;/li>
&lt;li>&lt;strong>What one culture buys:&lt;/strong> people trust each other faster, new engineers learn quicker, fewer people leave. Those are real. The pictures only draw the price.&lt;/li>
&lt;li>&lt;strong>A class system:&lt;/strong> the moment pioneer pods look glamorous and town planner pods look like bureaucrats, three groups do more harm than good. All three are equally skilled and equally needed.&lt;/li>
&lt;li>&lt;strong>The bars are a drawing:&lt;/strong> “how many rules this needs” is not a number you can measure precisely. The bars make an idea visible, and that is all they do.&lt;/li>
&lt;/ul>
&lt;blockquote>&lt;p>&lt;strong>Before you add or remove a rule, ask which column the work is in.&lt;/strong>&lt;/p>&lt;/blockquote>
&lt;p class="flp-credit">The four columns (genesis, custom-built, product and commodity), the three kinds of people and the idea that each group takes work from the one before it come from Simon Wardley's work, published under CC BY-SA. The wording, the examples and any mistakes are mine.&lt;/p>
&lt;p>Links:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://blog.gardeviance.org/2015/03/on-pioneers-settlers-town-planners-and.html" target="_blank" rel="noopener">Simon Wardley: On Pioneers, Settlers, Town Planners and Theft&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.anthropic.com/news/confidential-draft-s1-sec" target="_blank" rel="noopener">Anthropic: confidential draft S-1 submitted to the SEC (June 2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.sonarsource.com/state-of-code-developer-survey-report.pdf" target="_blank" rel="noopener">Sonar: State of Code Developer Survey report 2026 (1,149 developers, October 2025)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://blog.jetbrains.com/research/2026/08/ai-coding-agent-adoption-2026/" target="_blank" rel="noopener">JetBrains Research: AI Coding Agents, Adoption Trends (Developer Ecosystem Survey 2026)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.aibuilderclub.com/blog/best-ai-coding-agent-2026" target="_blank" rel="noopener">AI Builder Club: a 40-engineer survey on running two coding agents (May 2026)&lt;/a>&lt;/li>
&lt;/ul>
&lt;/section>
&lt;hr>
&lt;p>&lt;strong>What's your experience?&lt;/strong> Have you tried AI pods, or giving each column its own rules? Really curious what did work (and what didn't) for others. This landscape is constantly evolving, and I suspect there are and will be better approaches we haven't discovered yet.&lt;/p>
&lt;p>&lt;em>Find me on &lt;a href="https://x.com/simalexan" target="_blank" rel="noopener">X&lt;/a> if you want to share your experiments or challenge my assumptions.&lt;/em>&lt;/p>
&lt;/div></content:encoded><category>wardley-mapping</category><category>strategy</category><category>engineering-management</category><category>ai-pods</category><category>claude-code</category></item></channel></rss>