<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Designed Business]]></title><description><![CDATA[Ideas about building businesses that create real value, earn trust, use AI intelligently and scale without losing human judgement.]]></description><link>https://newsletter.aminollahi.com</link><image><url>https://newsletter.aminollahi.com/img/substack.png</url><title>The Designed Business</title><link>https://newsletter.aminollahi.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 03 Nov 2026 17:36:37 GMT</lastBuildDate><atom:link href="https://newsletter.aminollahi.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ryan Aminollahi]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[Designed-to-Scale@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[Designed-to-Scale@substack.com]]></itunes:email><itunes:name><![CDATA[Ryan Aminollahi]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ryan Aminollahi]]></itunes:author><googleplay:owner><![CDATA[Designed-to-Scale@substack.com]]></googleplay:owner><googleplay:email><![CDATA[Designed-to-Scale@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ryan Aminollahi]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Delegation Does Not Automatically Build Capability]]></title><description><![CDATA[Handing someone a task is the easy part. What actually has to move with it is harder to see, and far easier to skip]]></description><link>https://newsletter.aminollahi.com/p/delegation-does-not-automatically-build-capability</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/delegation-does-not-automatically-build-capability</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 25 Oct 2026 19:28:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ORcb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ORcb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ORcb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ORcb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ORcb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ORcb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ORcb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg" width="1400" height="933" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:933,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:241139,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/221983579?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ORcb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ORcb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ORcb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ORcb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d130d7-e5f8-4db0-a8bd-a5570366190e_1400x933.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>A residential property management company oversees rental portfolios for close to three hundred landlords across a mid-sized city. For four years, nearly every maintenance request above a modest dollar figure lands on the founder's desk before a tradesperson gets approved. Every landlord upset about a vacancy, a late payment, or a repair bill that ran over eventually gets put through to her directly. Every tenant complaint the front-line coordinators can't resolve in one call sits in her inbox by the end of the day.<br><br>The business grows steadily. Landlords refer other landlords. By year four, she hires an operations manager specifically to take maintenance decisions and landlord relationships off her desk, the thing that's been eating her calendar for longer than she'd like to admit.<br><br>Three months later, she is just as busy. The new hire is competent, well-liked, clearly working hard. And somehow the founder is still approving the same maintenance requests, still getting looped into the same landlord calls, still fielding the same escalated tenant complaints. Just one email thread later than before.<br><br></p><h2>The Task Moved. The Decision Didn't.</h2><p>The easy read here is that the hire was wrong, or that the founder can't actually let go, whatever she tells herself about wanting to. Neither is usually true, and both miss what's actually happening.<br><br>Delegating a task and transferring the capability behind it are not the same action, even though they feel identical in the moment of handing something over. A task has a beginning and an end: here is the work, go do it. Capability is different. It is the standing to decide what "done well" means without checking first, and it only exists once several specific things have actually moved from one person's head into somewhere the new person can reach them.<br><br>Hand over the task without the rest of it, and the work genuinely leaves the founder's desk. It just doesn't stay gone. It comes back wrapped in a question, a meeting, an email asking whether this is okay to approve, because nobody ever decided out loud what "okay" means.<br><br></p><h2>What Actually Has to Travel With the Work</h2><p>*The Designed Business* is specific about what that "rest of it" consists of. Before concluding that a new hire simply isn't ready, the book suggests checking five things directly: does this person know the result they're responsible for, not just the task list in front of them? Do they know which decisions they're allowed to make on their own? Do they have the information required to make those decisions well? Do they know exactly when to escalate, and when not to? And do they understand the standard the work is judged against, not just what needs doing?<br><br>Miss any one of these, and the task returns home disguised as something else entirely: a training problem, a confidence problem, a give-it-more-time problem. It is usually none of those. It is a specific, nameable thing that was never handed over, sitting quietly underneath a task that was.<br><br></p><h2>Where the Operations Manager Actually Stood</h2><p>Run those five questions against the property company's new hire, and the gap stops being mysterious.<br><br>The result she owned was never defined precisely. "Handle maintenance and landlord relationships" sounds like a result. It's actually a task list with no finish line attached, no number or outcome she could point to and call good for the month.<br><br>The decision right was never named either. Nobody had said, in words, that she could approve a repair up to a certain amount without checking first, or offer a dissatisfied landlord a specific concession within a defined range. So every maintenance call above a token amount, and every uncomfortable landlord conversation, kept arriving at the founder's desk by default. Not because the operations manager lacked judgment, but because nobody had told her she was allowed to use it.<br><br>The information gap was quieter but just as real. The founder carried years of context that never made it into any file: which contractors actually show up on time, which landlords get anxious and need a call rather than an email, which properties have a history that changes how a routine request should be handled. None of that lived anywhere the new hire could reach it. She wasn't failing to use judgment. She was making calls with half the facts the founder had been using for years.<br><br>The standard existed only as a feeling. The founder knew what "handled well" looked like the moment she saw it, and had never once described it in words specific enough for someone else to check their own work against before it reached a landlord.<br><br>And the escalation boundary ran backward. Instead of a clear line marking what truly needed the founder's input, the operations manager had absorbed, correctly, that almost anything might need it, so she escalated early and often, just to be safe. From the founder's side, that looked like someone who wasn't ready to take ownership. It was actually someone behaving exactly as the business had trained her to behave.<br><br>Four of the five things never moved. The task did.<br><br></p><h2>Turning What's in Your Head Into Something the Business Can Use</h2><p>The useful part of this isn't the diagnosis. It's that each of the five gaps closes differently, and none of them closes by waiting for the new hire to get more comfortable.<br><br>A pattern the founder repeats without thinking about it can usually become a method someone else can follow: the specific sequence she actually runs through before approving an unusual repair, written down once, rather than relived from scratch every time. A standard she recognizes instantly but has never described can become a short, concrete checklist, not a sprawling manual, just the two or three things that separate acceptable from not. A decision she keeps making the same way whenever a familiar situation recurs can become an explicit rule, stated once, rather than a fresh judgment call every time it comes up. Information that currently lives only in her memory can move into whatever the team actually uses day to day, a shared note, a property file, a short briefing, so the right person has the right detail without needing to ask her for it. And the boundary for when something genuinely needs her, rather than everything needing her by default, has to be stated as a specific line, not a vague sense that she's generally available if something comes up.<br><br>None of this requires documenting every thought the founder has ever had. It requires identifying the handful of things that keep recreating the same bottleneck, and moving exactly those, deliberately, instead of hoping proximity and time will eventually do it on their own.<br><br></p><h2>Before Handing Off the Next Task</h2><p>A few questions worth running honestly against whatever you're about to delegate, or already have.<br><br>Can you state, in one sentence, the actual result this person owns, separate from the list of things they're doing?<br><br>Have you told them, explicitly, which decisions are theirs to make without you, or have they only learned the boundary by watching what gets overturned afterward?<br><br>If the answer to either is no, the problem probably isn't the person you hired. It's the things you haven't handed over yet, still waiting underneath the one you have.<br><br></p><h2>A Team Is Something You Design, Not Something You Hope For</h2><p>None of this argues against hiring, or suggests a founder should document every decision before trusting anyone with anything. Early in most businesses, staying close to the work is exactly right. The founder needs to see where things actually go wrong before she can describe it to someone else.<br><br>The shift that matters is simpler than it sounds: noticing when a task keeps bouncing back, and asking which specific thing beneath it, the result, the decision right, the information, the standard, the escalation line, was never actually handed over. Delegation that only moves tasks will always feel, eventually, like it made things busier rather than lighter. Delegation that moves capability is the only kind that ever actually lightens the load it was supposed to.<br><br>The property company's founder didn't need a different hire. She needed to notice that she'd handed over the easiest of the five things and quietly kept the other four for herself, the way most founders do, right up until someone points out that they're still holding them.<br><br><br>If this sounds like your business, last week's piece looks at the other half of the same problem: not what a new hire still needs, but what the founder herself has been personally carrying all along, trust, judgment, memory, standards, or courage, and why that's usually several different problems wearing one name. Worth reading alongside this one: <a href="https://newsletter.aminollahi.com/p/the-founder-is-not-always-the-real-bottleneck">The Founder Is Not Always the Real Bottleneck</a>.</p>]]></content:encoded></item><item><title><![CDATA[AWS AI-DLC vs Anthropic’s AI-Native SDLC: How Much Delivery Can We Safely Delegate?]]></title><description><![CDATA[How AWS and Anthropic approach AI-native software delivery, and what leaders need to decide about governance, autonomy and accountability.]]></description><link>https://newsletter.aminollahi.com/p/aws-ai-dlc-vs-anthropic-ai-native-sdlc</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/aws-ai-dlc-vs-anthropic-ai-native-sdlc</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Fri, 23 Oct 2026 01:44:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bos6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bos6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bos6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!bos6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!bos6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!bos6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bos6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2144386,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/221719512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bos6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!bos6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!bos6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!bos6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8828c8f5-ef3f-48d3-bab2-3a7e9577ee2b_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Both approaches move beyond coding assistants. Their practical value depends on how organisations manage context, enforce controls and retain ownership.</em></p><p>An engineering team generates a feature in an afternoon. Security reviews it the following week. An integration assumption surfaces during testing. Operations asks who approved the recovery approach.</p><p>Implementation has accelerated. The decisions around it still take time.</p><p>In <a href="https://newsletter.aminollahi.com/p/ai-will-not-fix-a-broken-delivery-model">AI Will Not Fix a Broken Delivery Model</a>, I explored why organisations need to redesign delivery around AI. AWS&#8217;s AI-Driven Development Life Cycle and Anthropic&#8217;s AI-native SDLC playbook offer two practical approaches to that redesign.</p><p>I see value in both. The comparison becomes useful when we examine how each connects business intent, engineering execution and human accountability.</p><h2>AWS starts with how the team makes decisions</h2><p>AWS introduced AI-DLC around Inception, Construction and Operations. AI proposes plans, seeks clarification and generates work. People validate the direction and make critical decisions.</p><p>Mob Elaboration and Mob Construction bring the team together around requirements and implementation, with context retained in the repository. <a href="https://aws.amazon.com/blogs/devops/ai-driven-development-life-cycle/">AWS&#8217;s AI-DLC methodology</a></p><p>For enterprise leaders, that collaborative model deserves attention.</p><p>A customer onboarding change can involve product, identity, security, integration and operations. Each function understands a different consequence. An agent needs those perspectives before its plausible solution becomes an approved one.</p><p>The benefit I would look for is earlier resolution of conflicting assumptions.</p><p>AWS also makes the workflow adaptive. Teams can adjust the stages and depth to the task rather than imposing the same analysis on every change. <a href="https://aws.amazon.com/blogs/devops/open-sourcing-adaptive-workflows-for-ai-driven-development-life-cycle-ai-dlc/">AWS&#8217;s adaptive workflow guidance</a></p><p>That principle needs protecting during adoption. A straightforward defect should not acquire a collection of generated documents simply because the framework can produce them.</p><h2>Anthropic makes the connections between stages explicit</h2><p>Anthropic retains six familiar stages: Plan, Design, Build, Test, Deploy and Maintain.</p><p>The practical shift is how work connects across them. Versioned intent, specifications, plans, code, tests and review findings provide inputs to subsequent activities. Repository instructions and skills carry institutional knowledge; hooks enforce defined checks. Evaluations assess agent behaviour, while production findings feed back into planning. Human judgement remains necessary, particularly for critical and regulated changes. The plays are modular rather than a mandatory linear sequence. <a href="https://claude.com/resources/articles/the-ai-native-sdlc-playbook">Anthropic&#8217;s AI-native SDLC playbook</a></p><p>The implication interests me more than the filenames.</p><p>A requirement normally passes through conversations, tickets, documents and interpretation. Each transition creates an opportunity to lose context.</p><p>When people and agents work from the same approved artefact, the organisation has a clearer basis for checking whether implementation still reflects the original decision.</p><p>But an accessible file can still contain an ambiguous requirement. Someone must resolve that ambiguity.</p><h2>The approaches overlap more than the labels suggest</h2><p>My reading is that AWS places greater emphasis on collaborative decision-making and adaptive orchestration. Anthropic makes the connections between artefacts, agent instructions and execution controls particularly concrete.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mgGv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 424w, https://substackcdn.com/image/fetch/$s_!mgGv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 848w, https://substackcdn.com/image/fetch/$s_!mgGv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 1272w, https://substackcdn.com/image/fetch/$s_!mgGv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!mgGv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png" width="1456" height="222" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:222,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:96260,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/221719512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mgGv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 424w, https://substackcdn.com/image/fetch/$s_!mgGv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 848w, https://substackcdn.com/image/fetch/$s_!mgGv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 1272w, https://substackcdn.com/image/fetch/$s_!mgGv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691accbd-5007-41ef-af89-7d77a0093eda_1706x260.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p></p><p>This is a comparison of emphasis, not exclusive capabilities.</p><p>Even the stage counts need care. AWS&#8217;s original method describes three phases; its current open-source implementation describes five and supports multiple coding environments. <a href="https://awslabs.github.io/aidlc-workflows/guide/00-introduction/">AI-DLC implementation guide</a></p><p>I would assess either approach against the organisation&#8217;s delivery problems before choosing a framework.</p><h2>Executable controls still need owners</h2><p>The supplied commentary makes a useful distinction between skills that guide behaviour and hooks that enforce checks. It goes too far when it suggests that hooks make compliance certain.</p><p>A hook can block a defined action within the boundary it controls. It cannot establish that the rule is complete, the configuration is correct or every relevant path passes through it.</p><p>Consider customer data. A check might prevent credentials entering a code change while missing sensitive information written to application logs.</p><p>The check worked. The organisation&#8217;s control coverage was incomplete.</p><p>Each automated control needs an owner, a defined scope, evidence that it works and a response when it fails. Those responsibilities become more consequential as agents gain authority.</p><h2>Review must follow the risk</h2><p>I would also resist treating plan approval as sufficient assurance for the resulting code.</p><p>A sound plan can produce a flawed implementation. Tests can encode the same misunderstanding as the code. An automated reviewer can miss a business constraint that nobody supplied.</p><p>Reviewing the plan helps settle direction early. Release assurance still requires evidence about what was built.</p><p>For a bounded internal change, automated checks and targeted human review may be proportionate. Changes to identity, payments, customer data or production permissions warrant closer scrutiny.</p><p>The organisation should define those boundaries before increasing autonomy.</p><h2>Production feedback is established practice</h2><p>The supplied article suggests traditional SDLC lacked a production feedback loop. DevOps and SRE already connect incidents, monitoring and operational learning to engineering work.</p><p>The useful development here is making that connection more executable: preserving diagnostic context, initiating corrective work and limiting agents to authorised actions.</p><p>I would judge that capability by how reliably it recognises when to stop and escalate.</p><h2>Start with one complete delivery path</h2><p>For a first implementation, I would combine the strongest practices from both approaches.</p><p>Bring the relevant people together to validate the outcome and constraints. Record the approved context where agents can use it. Connect implementation to meaningful checks. Define approval boundaries and recovery authority.</p><p>Then measure the complete path: delivery time, review queues, rework, escaped defects and operational effort.</p><p>A faster build is useful. Whether the organisation can release, operate and support that change with confidence determines how much delivery it should delegate next.</p><p><strong>Is your organisation ready to delegate more of software delivery to AI?</strong></p><p>I work with technology leaders to clarify delivery ownership, strengthen architecture governance and define where AI agents can act safely.</p><p>If you&#8217;re evaluating AWS AI-DLC, Anthropic&#8217;s AI-native SDLC or your own approach, let&#8217;s discuss what fits your organisation and where to start.</p><p><strong><a href="https://www.aminollahi.com">Let&#8217;s discuss your AI delivery approach</a></strong></p>]]></content:encoded></item><item><title><![CDATA[The Founder Is Not Always the Real Bottleneck]]></title><description><![CDATA[What looks like a personal failing is usually five different jobs the business has never been taught to do without you.]]></description><link>https://newsletter.aminollahi.com/p/the-founder-is-not-always-the-real-bottleneck</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/the-founder-is-not-always-the-real-bottleneck</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Mon, 19 Oct 2026 01:35:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MsL_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MsL_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MsL_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MsL_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MsL_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MsL_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MsL_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg" width="1400" height="933" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:933,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:282450,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/221074460?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MsL_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MsL_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MsL_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MsL_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192cf014-74ec-418c-8f1c-39180dfc6067_1400x933.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4></h4><p>A commercial insurance brokerage has been running for nineteen years. Four account managers handle day-to-day client relationships. A claims coordinator manages the paperwork when something goes wrong. The firm has a genuine book of business and a reputation built across two decades in a mid-sized market.</p><p>The founder still touches almost everything that matters. Every renewal above a certain premium gets her review before it goes out. A client who&#8217;s had a serious claim wants to hear from her personally, not whoever happens to answer the phone. When a prospective client asks an unusual question about coverage, the team&#8217;s instinct is still to walk down the hall and ask her.</p><p>Her staff aren&#8217;t incompetent. Her systems aren&#8217;t primitive. On paper, she runs a real business. Nineteen years in, she is still the person almost everything runs through.</p><p>The easy conclusion is that she&#8217;s the bottleneck. Delegate more. Learn to let go. Maybe she holds on too tightly, or maybe the team just isn&#8217;t ready yet.</p><p>That conclusion is usually wrong, or at least badly incomplete. It treats &#8220;the founder is involved in too much&#8221; as a single, simple problem with a single, simple fix. It rarely is.</p><h4>&#8220;Just Delegate More&#8221; Misses What&#8217;s Actually Happening</h4><p>When a business has outgrown its founder but nothing moves, the standard advice arrives fast: delegate, hire, document, let go. Sometimes that genuinely works. More often something stranger happens. The founder hands off a task, and a few weeks later the same work is somehow back on her desk, this time wrapped in a meeting and two more people waiting on her opinion before anything can proceed.</p><p>That isn&#8217;t a failure of delegation so much as a sign that delegation was never the actual problem. Giving someone a task is different from giving them the standing to decide alone. An account manager can draft a renewal competently. Whether she can decide, on her own authority, that a client&#8217;s risk profile has shifted enough to warrant different coverage, without checking first, is a separate question entirely. If nobody has ever answered that second question out loud, handing over the first task just moves the bottleneck one desk over. It doesn&#8217;t remove it.</p><p>This is the trap in making founder dependence personal. &#8220;I&#8217;m too involved&#8221; sounds like a character flaw, something about an unwillingness to let go. It&#8217;s usually closer to a staffing gap that has nothing to do with headcount: the business itself was never taught to do several specific things it has only ever watched her do.</p><h4>Five Different Things a Founder Might Be Carrying</h4><p>The Designed Business names this more precisely than &#8220;founder dependence&#8221; usually gets named. A founder who can&#8217;t step back typically isn&#8217;t carrying one thing. She&#8217;s carrying some combination of five, and each one needs a different fix.</p><p>Sometimes she&#8217;s carrying trust. Clients believe the recommendation because of her personally, built over years of direct contact, not because they trust the firm as an institution. An account manager can give the technically correct answer and still not be believed in the same way.</p><p>Sometimes she&#8217;s carrying judgment. The team can execute the process, but the harder interpretive call&#8202; which risk is genuinely dangerous and which is boilerplate noise, which client question deserves a careful answer and which doesn&#8217;t&#8202;&#8202;still only happens reliably in one head.</p><p>Sometimes she&#8217;s carrying memory. She remembers why a particular client has an unusual policy exclusion from four years ago, which supplier underperforms on claims, which client gets anxious at renewal time and needs more reassurance than the paperwork strictly requires.</p><p>Sometimes she&#8217;s carrying standards. Everyone on the team knows a renewal review needs to be thorough. Nobody but her could actually describe, in enough detail for someone else to check their own work against it, what thorough means.</p><p>And sometimes she&#8217;s carrying courage: the willingness to tell a client their risk appetite doesn&#8217;t match reality, decline a deal that&#8217;s commercially tempting but wrong for the client, or push back on a renewal priced too aggressively just because a competitor undercut it. The team may see exactly the same problem she does. Only she feels entitled to say so out loud.</p><p>Collapsing all five into &#8220;she needs to delegate more&#8221; guarantees the wrong fix, because trust doesn&#8217;t transfer the way memory does, and memory doesn&#8217;t transfer the way courage does. A firm that tries to close a courage gap by writing a procedure manual will end up with a very well-documented version of the same stall.</p><h4>What Thirty Days Away Would Actually Reveal</h4><p>The Designed Business offers a sharper way to find out which of the five is actually in play, rather than guessing. It&#8217;s the book&#8217;s second diagnostic test: what does the customer lose if the key person disappears for thirty days?</p><p>Run it honestly against the brokerage. If she took a genuine month off, no calls, no check-ins, what specifically would happen?</p><p>Most renewals would probably still go out. The account managers know the clients, know the process, know how to draft a policy. That part of the business has already moved past her.</p><p>But a handful of larger renewals would likely stall, waiting for a sign-off nobody else feels authorized to give. That&#8217;s not a trust gap or a memory gap. It&#8217;s a courage gap wearing a process costume: nobody has been told, in words, &#8220;you can approve this without me,&#8221; so nobody does.</p><p>A long-standing client&#8217;s unusual exclusion from several years ago might get missed entirely at renewal, because the reason for it exists only in her memory, never in the client&#8217;s file. That&#8217;s a different failure, and no amount of delegated authority fixes it. What&#8217;s missing is information that was never written down, not permission that was never granted.</p><p>And if a serious new prospect, the kind who wants real reassurance before signing, gets handed to an account manager instead of her, the deal might simply be lost. Not because the account manager is unqualified, but because the client&#8217;s trust was never in the firm. It was in her, specifically, and nobody ever worked on moving it.</p><p>Three different outcomes from the same thirty-day absence. Three different diagnoses. Only one of them, the missing memory, gets fixed by better documentation. None of them gets fixed by &#8220;delegate more&#8221; treated as one instruction.</p><h4>The Fix Has to Match the Form</h4><p>This is the part that gets skipped when founder dependence is treated as one problem with one solution.</p><p>A trust gap closes slowly, by deliberately putting someone other than the founder in front of clients early and often, before a crisis forces it, so trust has time to attach to a second name.</p><p>A judgment gap closes by making the invisible decision rule visible: naming, specifically, what the founder is actually checking for when she reviews a renewal, until someone else can apply roughly the same test without her in the room.</p><p>A memory gap closes by building the habit of recording the why alongside the what, not just that an exclusion exists, but why it was granted, so the reasoning survives even when she isn&#8217;t there to supply it.</p><p>A standards gap closes by writing down what &#8220;good&#8221; actually means in concrete, checkable terms, rather than leaving it as a feeling only she recognizes.</p><p>A courage gap, probably the hardest of the five to fix with a document, closes through explicit decision rights: a rule that says exactly when someone else is allowed to say no to a client, decline a deal, or flag an underpriced renewal, without needing anyone&#8217;s personal bravery, because the business has already decided the answer in advance.</p><p>None of these fixes is &#8220;work less&#8221; or &#8220;trust your team more.&#8221; Each one is a specific, nameable thing currently sitting in one person&#8217;s head that has to move somewhere else.</p><h4>A few honest questions</h4><p>Which of the five-&#8202;trust, judgment, memory, standards, or courage&#8202; &#8202;does your own business most obviously still run through you?</p><p>If you disappeared for thirty days starting tomorrow, what specifically would stall, and is that a gap in permission, in information, or in belief?</p><p>Has anyone on your team actually been told, in words, which decisions they&#8217;re allowed to make without checking with you first, or have they only ever learned by watching what gets overturned afterward?</p><h4>The Founder Isn&#8217;t the Problem. The Undesigned Part Is.</h4><p>None of this argues that a founder&#8217;s involvement never matters, or that a well-designed business removes judgment and leaves only procedure behind. Some things should stay personal: a particular eye, a particular relationship, a standard that genuinely deserves to stay scarce. The point isn&#8217;t to erase the founder from the business.</p><p>It&#8217;s to stop treating &#8220;I&#8217;m too involved&#8221; as a personal failing and start asking which specific thing the business has never been taught to carry. A founder who hears &#8220;you need to let go&#8221; for the fourth time and tries the same vague instruction again will get the same result as last time. A founder who can say, specifically, &#8220;this is a courage gap, not a trust gap,&#8221; knows exactly which fix to try next.</p><p>That&#8217;s the real difference between a business that eventually outgrows its founder and one that just keeps adding people around the same unresolved dependency.</p><p>If this pattern sounds familiar, Chapter One of <a href="https://www.amazon.com.au/dp/1764850807">The Designed Business</a>, &#8220;The Business That Still Depends on You,&#8221; goes several layers deeper into exactly this breakdown. Worth the hour, read with your own business in mind.</p>]]></content:encoded></item><item><title><![CDATA[If Demand Doubled Tomorrow, What Would Break First?]]></title><description><![CDATA[The honest answer says more about a business than last quarter's revenue ever will.]]></description><link>https://newsletter.aminollahi.com/p/if-demand-doubled-tomorrow-what-would-break-first</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/if-demand-doubled-tomorrow-what-would-break-first</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Fri, 09 Oct 2026 03:31:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4Aic!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Aic!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Aic!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Aic!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Aic!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Aic!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Aic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg" width="1400" height="933" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:933,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:219216,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/219523789?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Aic!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Aic!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Aic!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Aic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744f2c9-3ff8-4db7-bc14-4dffa0871252_1400x933.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>A boutique commercial photography studio spends three years earning one relationship. The founder, a photographer by training, personally scouts every room in a boutique hotel group&#8217;s flagship property, builds each shot list around what the listing actually needs to sell, and does the final color grading on every image before it goes anywhere near a booking site. The hotel&#8217;s occupancy improves. The marketing director notices, and mentions it to her counterparts across the group.</p><p>Then the call comes: the group wants to make the studio its exclusive photography partner across the entire portfolio, twelve properties, starting with three in the next six weeks.</p><p>The founder says yes before she&#8217;s finished the sentence in her head. Most people would. Driving home afterward, though, a quieter question arrives, one that has nothing to do with whether the opportunity is good. It&#8217;s whether the business, as it currently exists, can actually survive saying yes to it.</p><h3>The Instinct to Answer With a Resourcing Plan</h3><p>Ask most founders what would happen if demand for their business doubled, and the answer arrives fast: hire someone, extend the hours, rent more space, spend more on the tools already in use. It&#8217;s not an unreasonable first instinct. Growth does often require more of something.</p><p>The trouble is that this answer treats every kind of strain as the same kind of strain, as if a business under pressure simply needs more of itself, applied faster. It skips the actual question, which isn&#8217;t whether more resource would help. It&#8217;s what, specifically, would fail first if nothing else changed.</p><p>That distinction matters more than it sounds like it should, because the two answers point at completely different problems.</p><h3>What the Question Is Actually Asking</h3><p>*The Designed Business* frames this directly as one of two diagnostic tests worth running before chasing more demand: what breaks if demand doubles? The book is specific that &#8220;we&#8217;d need more people&#8221; doesn&#8217;t count as an answer, because it&#8217;s too vague to act on. The real question is which part fails first, and why. The founder&#8217;s calendar. The accuracy of a quote. How fast a new client actually gets started. The consistency of the finished work. Whether cash arrives in time to cover what delivery costs before the invoice clears.</p><p>Most businesses have never actually answered this with any precision, because until growth forces the question, there&#8217;s rarely a reason to sit with it. Revenue looks fine. Customers keep showing up. The strain, if it exists, stays private and manageable, the kind of thing a founder absorbs quietly rather than diagnoses. A sudden jump in demand removes that shelter fast. Whatever the business was quietly compensating for becomes visible to everyone, usually at the worst possible moment to discover it.</p><h3>A Break About Capacity, and a Break About Design</h3><p>Not every point of failure means the same thing, and collapsing them into one category is exactly what leads founders toward the wrong fix.</p><p>A capacity break is a genuine resourcing shortfall. There simply isn&#8217;t enough of something: hours, hands, inventory, equipment, working capital. The method for doing the work is sound. There just isn&#8217;t enough of it to go around at the new volume. More resource, applied to a capacity break, actually solves it.</p><p>A design break is different. It&#8217;s a point where the business has never actually decided how something should work once it&#8217;s not the founder personally handling it. No amount of additional resource fixes a design break, because the missing thing was never quantity. It was a decision, a standard, or a boundary that nobody has yet made explicit. Hiring a second person to make an undefined judgment call doesn&#8217;t remove the dependency on judgment. It just adds a second person waiting for permission.</p><p>Most founders run straight past this distinction because both kinds of break feel identical from the inside: too much to do, not enough time to do it. They only look different once you ask, specifically, what would actually happen first.</p><h3>The Studio Runs the Numbers</h3><p>Back to the photography studio, now facing three properties in six weeks instead of one property a year. The founder sits down and forces herself past &#8220;we&#8217;d need another shooter&#8221; to ask what would genuinely fail first.</p><p>The first candidate is her own calendar. Every property still needs her personally to scout it, because the shot list depends on judgment she&#8217;s never described to anyone else: which rooms actually drive bookings, which angles flatter a space that photographs poorly in person, when a property&#8217;s real selling point isn&#8217;t the room at all but the view or the light at a certain hour. That&#8217;s a design break. A second shooter with a camera doesn&#8217;t inherit an eye that&#8217;s never been taught.</p><p>The second candidate is final quality control. Every image currently passes through her personal color grading before a client sees it, and &#8220;good&#8221; has only ever lived in her own judgment, never written down as anything another editor could apply consistently. Also a design break.</p><p>The third is onboarding. Each new property needs its shot list built from scratch around what that specific property is trying to sell, and right now that process exists only as something she does, not something anyone else has been shown how to do. A third design break.</p><p>The fourth is cash flow. Three simultaneous shoots mean equipment hire, contractor day rates, and travel costs land well before the client&#8217;s invoice clears. That one actually is a capacity break: a real, quantifiable gap that more working capital, arranged in advance, would close.</p><p>Of the four points most likely to fail, three have nothing to do with how many people are on the roster. Hiring a second shooter, the obvious first move, would have addressed exactly one of the four, and not the one most likely to break first.</p><h3>Where to Look Before Saying Yes</h3><p>None of this means turning down the opportunity, and it isn&#8217;t an argument for over-preparing before every reasonable next step. Early growth almost always outruns perfect readiness, and that&#8217;s normal. The value of the question isn&#8217;t caution for its own sake. It&#8217;s finding out, before the pressure arrives, which parts of the business are genuinely ready to carry more weight and which parts have simply never been tested.</p><p>A useful way to run the exercise honestly: look at the last time volume actually rose, even briefly, a busy month, a seasonal spike, a single large client. Notice the first thing that felt like it was about to give way. That&#8217;s rarely random. It tends to be the same point every time, because it&#8217;s the same structural gap, not a new one each occasion.</p><h3>What the Honest Answer Looks Like</h3><p>A few questions worth answering specifically, not in general terms:</p><p>If the next surge of demand arrived this month, what is the first thing that would fail, not eventually, but within the first two weeks?</p><p>Is that failure point a shortage of resource, or a decision, standard, or judgment call that currently exists only in one person&#8217;s head?</p><p>If it&#8217;s the second kind, what would need to become explicit, a written standard, a decision rule, a documented method, before more resource would actually help rather than just multiply the confusion?</p><p>The specificity matters more than the answer. &#8220;We&#8217;d struggle&#8221; isn&#8217;t useful information. &#8220;The third property&#8217;s shot list would get built at midnight by someone guessing what I&#8217;d want&#8221; is.</p><h3>The Answer Is Information, Not a Verdict</h3><p>Running this diagnostic honestly doesn&#8217;t produce a pass or fail grade. It produces a map: which parts of the business would hold, and which one would give way first, and why. That&#8217;s worth knowing before the opportunity arrives, not while it&#8217;s already underway and there&#8217;s no room left to fix anything quietly.</p><p>The photography studio still said yes. It just said yes knowing precisely which three things needed to change before the first new property was shot, instead of finding out live, on the worst possible week to learn it.</p><p>Run the exercise on your own business before the next opportunity arrives: if demand doubled tomorrow, what would actually break first, and is that a shortage of resource or a decision nobody has made explicit yet? Reply and tell me what you found. The specific answer tends to be more useful than the general shape of the question.</p>]]></content:encoded></item><item><title><![CDATA[Which of the Three Businesses Have You Actually Built?]]></title><description><![CDATA[An income-producing activity, a founder-dependent business, and a designed business can all produce the exact same bank statement.]]></description><link>https://newsletter.aminollahi.com/p/which-of-the-three-businesses-have-you-built</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/which-of-the-three-businesses-have-you-built</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Fri, 02 Oct 2026 02:29:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mQsY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mQsY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mQsY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mQsY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mQsY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mQsY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mQsY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg" width="1400" height="933" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:933,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:229880,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/218437586?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mQsY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mQsY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mQsY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mQsY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368058e9-b811-4451-87a5-95c2594bf18c_1400x933.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>At a dinner party, a founder describes her business in one breath: twelve staff, national clients, an office lease, seven figures a year. Said like that, it sounds unmistakably like a business, the kind you build once and then own, rather than the kind that quietly owns you.<br><br>Driving home, she runs a quieter tally. Every proposal over fifty thousand dollars waits for her sign-off. Every difficult client conversation gets escalated to her personally. Two of the people she hired specifically to take things off her plate still check in with her before finishing anything that matters. The revenue is real. The staff are real. Whether what she described over dinner is actually a business, in the sense that matters, is a separate question, and one she's never had reason to ask, because nothing about the word "business" forces the distinction.<br><br></p><h2>One Word Covering Three Different Arrangements</h2><p><br>"Business" is one word doing the work of at least three different arrangements, and most of the confusion founders feel about their own company starts right there.<br><br>The first is an income-producing activity. A person does skilled work and gets paid for it: a consultant sells sessions, a designer takes on briefs, a tradesperson takes on jobs. The revenue can be excellent. It sits mainly in the time, judgment, and presence of one individual, and if that person stops working, the income stops with them. That isn't a flaw waiting to be corrected. It's simply what the arrangement is.<br><br>The second is a founder-dependent business. There's a team now, maybe a brand, repeat customers, a system or two, staff to handle the phones and manage delivery. From the outside it looks like a real company, and in most legal and financial senses it is one. The trust, the hard calls, and the final word on quality still concentrate around one person, though. The business exists. Its center of gravity has never actually moved off the founder.<br><br>The third is a designed business. The founder can still matter enormously here. Their judgment, their standards, their reputation can remain part of what makes the offer work. The difference is that some of that value has turned into something the business itself carries: a method, a standard, a decision rule, an escalation path, a way information reaches the right person without anyone having to ask the founder to remember it.<br><br>Size doesn't sort these three. A four-person studio can be genuinely designed if it has a clear promise, a reliable way to deliver it, and a way of noticing when it's falling short. A four-hundred-person company can still be, underneath its org chart, one large founder-dependent business wearing a headcount as a disguise.<br><br>*The Designed Business* names these three conditions because founders rarely do, and the test that actually separates them has nothing to do with revenue, team size, or how the company sounds at a dinner party. It's blunter than that: can the value the customer is paying for be reproduced by the business, or only by the person?<br><br></p><h2>A Catering Business at Three Different Points in Its Life</h2><p><br>Consider a composite example. A private chef starts out cooking for a handful of families each week. She takes the enquiry, plans the menu, buys the produce, cooks the meal, and delivers it herself. Every dollar she earns is a direct trade for her own time and skill. This is an income-producing activity, and for years it's a good one. She works when she wants, charges what her reputation supports, and turns away anything that doesn't interest her. Nothing about that arrangement is broken. It simply is what it is.<br><br>Word of mouth eventually grows her client list past what one person can cook, so she hires two chefs and starts taking corporate events alongside private dinners. Five years later she has a small commercial kitchen, seven staff, and a booking calendar that runs months ahead. But every menu still gets her final tasting before it leaves the kitchen. Every event above a certain size, every client who's hosted something important before and knows exactly what they want, still asks for her by name and gets a call from her personally. Her staff are talented cooks. None of them has ever been told what she's actually checking for when she tastes a dish before it goes out, because that standard has only ever lived in her mouth and her memory. This is a founder-dependent business: real, valuable, staffed, and still entirely dependent on one person's palate and presence.<br><br>The shift into a designed business wouldn't show up as a bigger kitchen or another hire. It would show up the day she writes down, specifically, what she's actually tasting for: not "good food," but four or five concrete things a dish has to do before it's ready to serve, things a head chef could learn to check without her standing there. It would show up when a client asks for her personally and someone can explain, accurately, why that isn't necessary for this particular event, and mean it. Nothing about the food, the client list, or the revenue would need to change for that shift to happen. What changes is where the standard lives.<br><br></p><h2>Why These Aren't Stages on a Ladder</h2><p><br>It's tempting to treat those three as stages, each business climbing automatically from the first to the third as it grows. That isn't how it works, and assuming it is tends to send founders looking for the wrong fix.<br><br>An income-producing activity isn't an unfinished version of a designed business. A specialist who wants to keep working with a handful of clients, charge well, and stay personally close to the work has made a legitimate choice. It isn't half finished. The trouble starts when that same person wants an outcome the arrangement was never built to produce: a buyer, a team that runs without them, income that keeps arriving after they've stopped showing up. That mismatch, wanting a result the current design can't create, is the actual problem. The category itself never was.<br><br>A founder-dependent business carries a different risk. It's easy to mistake a team, a brand, and a system or two for proof the business has already crossed into the third category. Hiring people doesn't move a business between categories by itself. It just adds more people whose work still depends on checking with the same person before anything that matters gets decided. A company can accumulate staff for a decade and never once shift its center of gravity anywhere.<br><br></p><h2>Which One Are You Actually Running?</h2><p><br>A few honest questions, not for scoring yourself against some ideal, but for finding out which of the three sentences actually describes what's been built.<br><br>If you took a genuine month away, no calls, no messages, would the work keep arriving at roughly the same quality, or would it thin out the moment you weren't the one answering?<br><br>Can you name, specifically, what you personally check, decide, or approve that nobody else has ever been shown how to check, decide, or approve?<br><br>If someone offered to buy what you've built tomorrow, what would they actually be buying: your future working hours, or something that keeps producing value with you nowhere near it?<br><br></p><h2>Before the Next Decision About the Business</h2><p><br>Most founders don't make a considered choice about which of these three they're running. They inherit whichever one accumulated while they were busy serving the next client. That isn't a failure of ambition. It's just what happens when a business grows faster than anyone stops to examine it.<br><br>Naming the category honestly doesn't fix anything by itself. It changes what the next decision should actually address. A founder running an income-producing activity who wants something shaped by a future sale or a team-led growth model needs to build economics that don't require her name on every job. A founder running a founder-dependent business who wants to eventually step back needs to find out exactly what she's still personally carrying, and start moving pieces of it into the business, on purpose. Neither problem gets solved by working harder inside the arrangement already in place.<br><br>If this distinction landed, send it to a founder who's convinced they've built a business but privately isn't sure. It tends to be an easier conversation to have about someone else's company first.</p>]]></content:encoded></item><item><title><![CDATA[What Actually Makes a Business Designed?]]></title><description><![CDATA[Not headcount, not a handbook, not an org chart, five choices a business makes, deliberately or by default.]]></description><link>https://newsletter.aminollahi.com/p/what-actually-makes-a-business-designed</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/what-actually-makes-a-business-designed</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Fri, 25 Sep 2026 01:13:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_hhr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_hhr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_hhr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_hhr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_hhr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_hhr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_hhr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg" width="1400" height="933" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:933,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:216287,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/217323724?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_hhr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_hhr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_hhr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_hhr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206f39fb-a785-49ad-b44b-94238118083a_1400x933.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>At some point, most growing businesses reach for the same word: structure. The business needs to become "more professional, more structured, more like a proper business." In practice that usually means an org chart, a staff handbook, a project management tool, and a weekly reporting rhythm. All reasonable things to want.<br><br>Eighteen months later, the org chart exists. So does the handbook. Meetings happen on a schedule instead of whenever something breaks. And the business still runs exactly the way it always did: every important decision waits for the same person, every awkward client conversation gets escalated to the same desk, every new hire spends their first six months learning things nobody ever wrote down.<br><br>The paperwork changed. The business underneath it didn't.<br><br>This confusion is worth naming precisely because it looks like progress from almost every angle except the one that matters. Formality is not design. A business can accumulate structure, documents, dashboards, and layers of management, and still have no real answer to the questions that decide whether it can carry weight without buckling.<br><br>So what does "designed" actually mean, if it isn't size, headcount, or paperwork?<br></p><h2>When Structure Isn't the Same as Design</h2><p>A two-hundred-person logistics company can have an approvals process for almost everything and still be unable to say, in one sentence, which customer problem it exists to solve. Ask five people in five different departments and you'll get five different answers, all plausible, none quite matching. A three-person design studio can run with almost no formal process at all and still know exactly why clients choose it, what they're actually buying, and what happens if a job goes wrong.<br><br>Neither company's size tells you which one is better designed. Only the questions do.<br><br>This cuts the other way too. A business doesn't earn the label "designed" just by staying small and informal. A solo consultant who has never written anything down, and whose entire practice would stop the day she gets sick, isn't undesigned because she lacks a handbook. She's undesigned because nobody, including her, could say with confidence what happens to a client relationship if she's not the one holding it. Smallness protected her from finding that out. It didn't fix it.<br><br>Design and formality are simply different axes. A business can be informal and well designed, formal and badly designed, or any combination in between. Confusing the two leads founders to chase the wrong fix: adding structure to a business that actually needs clarity, or avoiding structure in a business that's confusing informality for freedom.<br></p><h2>Five Questions Every Business Answers, One Way or Another</h2><p>Underneath the paperwork, every business is making the same five kinds of decisions, whether or not anyone sat down to make them on purpose.<br><br>Which problem is the business taking responsibility for? What change does the customer actually walk away with, distinct from what gets delivered to them? Why should someone believe the promise before they've experienced it? How does the promised result actually get produced when the founder isn't the one producing it? And what does the business do differently after something goes wrong, beyond fixing that one instance?<br><br>Call these Problem, Value, Trust, System, and Learning. They aren't five separate departments or five items on a checklist. They're five questions a business cannot avoid answering, because a business that has no answer to "which problem" or "why believe us" still operates as though something had been decided. Someone said yes to the first customer who showed up. A senior person's judgment quietly became the whole trust model. A team learned to route anything unusual to whoever fixed the last one. Nobody wrote any of it down, and it became the answer anyway.<br><br>That's the real distinction underneath this whole framework: not whether a business has answers, but whether those answers were chosen or just accumulated. A chosen answer can be examined, defended, and changed on purpose. An accumulated one usually can't be explained at all, only pointed to, the way you'd point at a load-bearing wall nobody remembers building.<br><br>There's a sharper test worth applying here, and it's the one I'd actually use to check whether something counts as designed rather than merely decided in someone's head. Could a second person, someone other than the founder, state the answer back accurately, without checking first? If the answer to "what problem do we solve" or "why should someone trust us" only exists reliably in one person's head, it isn't a design yet. It's a habit with that person's name on it. The moment it survives being said by someone else, in roughly the same way, it has become something the business actually owns.<br></p><h2>A Bookkeeping Practice and a Marketing Agency</h2><p>A composite comparison makes this concrete. Picture a three-person bookkeeping practice serving trades businesses: electricians, plumbers, small building contractors. The founder can state, without hesitating, what her clients are actually buying: not "bookkeeping," but the ability to make pricing and hiring decisions without guessing whether the business can afford them. Every client gets the same monthly reporting format, built around three numbers that answer that specific question. When a client's numbers look wrong, there's a standing rule about who flags it and how fast. Nothing about the practice is elaborate. All of it is legible. Either of the two staff members could explain the promise to a prospective client and land on nearly the same words the founder would use.<br><br>Now picture a sixty-person digital marketing agency down the street. It has a proper org chart, a account-management handbook, a shared drive full of case study templates, and a weekly leadership meeting with a fixed agenda. Ask three different account managers what the agency actually promises a new client, and you'll get three different answers: "results," "a strategic partner," "more leads." None of them wrong exactly, none of them the same thing. When a campaign underperforms, the response depends on which account manager picked up the account and which senior strategist they happen to be friendly with. The agency has far more structure than the bookkeeping practice. It has considerably less design.<br><br>Neither business is a cautionary tale about ambition or a fable about staying small. The comparison exists to isolate one variable: legibility of the five answers, independent of headcount, revenue, or how many binders sit on a shelf.<br><br></p><h2>What Deliberate Design Actually Looks Like</h2><p>None of this requires a founder to slow down, overthink every decision, or bury a young business under process before it's earned the right to have any. Early businesses need speed, closeness to customers, and a tolerance for improvising. The point isn't to eliminate accident. It's to notice when an accidental answer has quietly hardened into the permanent one, and to make it deliberate before growth puts real weight on it.<br><br>In practice, deliberate design tends to look small and unglamorous. It's a founder who can state the problem, the promise, and the trust basis in the same words twice in a row, a week apart. It's a team that has actually been told, not just assumed to know, which decisions they're allowed to make without asking. It's a business that changes something structural after a mistake, not only apologizes and moves on. None of that requires size, funding, or a management consultant. It requires the founder to have actually decided, out loud, in a form someone else could repeat.<br><br></p><h2>Five Sentences Worth Trying to Write</h2><p>A short exercise makes the gap visible. Try writing one plain sentence for each of the five, no qualifiers, no hedging:<br><br>The problem we take responsibility for is __________.<br>The change a customer walks away with is __________, not the thing we hand them.<br>Someone should believe our promise before trying us because __________.<br>When I'm not the one delivering, the result still happens because __________.<br>The last time something went wrong, what we changed afterward was __________.<br><br>Some of these will come quickly. One or two probably won't. The sentence that's hardest to finish, or that only makes sense with several extra clauses attached, is usually pointing at the part of the business still running on memory and improvisation rather than design. That's not a failure. It's information about where the next real work is.<br><br></p><h2>Before the Next Handbook</h2><p>None of this is an argument against structure. Org charts, handbooks, and reporting rhythms can genuinely help a business that already knows its own answers communicate them consistently. The mistake is expecting the paperwork to generate the answers it was only ever meant to record.<br><br>Before the next hire, the next handbook, or the next round of "getting more organized," it's worth writing the five sentences honestly and seeing which one gives you trouble. That sentence, more than the org chart, is the real state of the business.<br><br><br>Try writing the five sentences above about your own business, and reply and tell me which one was hardest to finish. That answer is usually more revealing than anything an org chart shows.</p>]]></content:encoded></item><item><title><![CDATA[Growth Does Not Fix a Business. It Reveals One]]></title><description><![CDATA[Every business already has a design, chosen or not. What happens next depends on which kind you built]]></description><link>https://newsletter.aminollahi.com/p/growth-does-not-fix-a-business</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/growth-does-not-fix-a-business</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Mon, 10 Aug 2026 02:55:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NsCx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NsCx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NsCx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NsCx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NsCx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NsCx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NsCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1979915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/210547660?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NsCx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NsCx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NsCx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NsCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc57c4335-232f-4fc3-ae7e-1f640b6ceb68_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every business has already made a set of foundational choices, whether anyone sat down and made them deliberately or not. Some businesses arrive at those choices on purpose. Someone decided which problem the business would take responsibility for, what change customers should expect, why trust should extend beyond one person&#8217;s reputation, how the work actually gets delivered, and how the business notices when something has gone wrong. Other businesses accumulate their design by accident, one improvised answer at a time, until the whole pattern is just however things have always been handled.</p><p>The chapters ahead in this series work through five areas where those foundational choices get made: the problem a business takes responsibility for, the change it promises to create, the trust it earns before and after the sale, the systems that deliver on the promise without heroics, and the way the business learns when reality disagrees with the plan. This week stays above all five, because before examining any one of them, it helps to see why growth makes ignoring them so much more expensive than it used to be.</p><p>Both kinds of business can produce real revenue. Under normal conditions, they can look nearly identical from the outside. The difference only becomes visible under load, and growth is one of the fastest ways to put a business under load.</p><p>Here&#8217;s the distinction worth sitting with: growth proves that something is wanted. It does not prove that the business can carry more of it. Those are two separate questions, and most founders spend years answering only the first one.</p><h2>Two Clinics, One Moment of Opportunity</h2><p>Consider two physiotherapy clinics, both in the same fast-growing suburb, both featured in the same short segment on a local news program about treating recreational running injuries. Within a week, both practices had a full inbox of new inquiries.</p><p>At the first clinic, growth changed very little about how the place actually ran. New clients filled out an intake form built years earlier, designed to capture exactly the details a therapist would need before the first session. Every therapist worked from the same assessment framework, so a runner with a sore knee received a consistent standard of care regardless of who was rostered on that day. The clinic had already decided which conditions it treated well and which it referred elsewhere, so it didn&#8217;t try to be everything to every caller. The owner spent the surge fielding a handful of unusual cases and adjusting the roster. Everyone else simply did more of what they already knew how to do.</p><p>At the second clinic, the same surge arrived differently. The practice had built its reputation almost entirely around its founding therapist, a genuinely skilled clinician whose hands-on technique patients specifically requested by name. The other therapists on staff were competent, but standards had never been written down. Which cases were routine and which needed the senior therapist&#8217;s judgment had always lived in her head, not in any shared method. Within two weeks her calendar was booked out a month in advance, the newer therapists were quietly declining anything complicated out of caution, and the front desk was fielding complaints from patients who couldn&#8217;t get the appointment they&#8217;d been promised.</p><p>Both clinics had a good week of publicity. One turned it into a stronger business. The other turned it into a longer waitlist and a more exhausted founder.</p><p>Both clinics worked hard through the surge, so effort wasn&#8217;t the difference. The second clinic&#8217;s founding therapist was also, by any reasonable measure, excellent at her job, so skill wasn&#8217;t the difference either. What separated the two practices had been decided long before the news segment aired: what a good session looks like, who is allowed to make which call, when a case needs escalation, and what the practice will and won&#8217;t take on. The first clinic had already answered those questions. The second clinic never had to, because its founder had always been available to answer them personally, one case at a time. Growth removed the option of answering them personally for every case at once.</p><h2>What Growth Actually Tests</h2><p>This is the pattern worth checking for in your own business, whatever it sells. Growth does not ask a business to work harder. It asks whether the decisions that used to happen inside one person&#8217;s head can now happen without that person in the room.</p><h3>Questions Worth Sitting With</h3><p>A few questions are worth sitting with honestly, before the next campaign, the next hire, or the next big client:</p><p>If your next ten customers arrived this week, what would break first: your calendar, your standards, your cash flow, or your ability to turn away the wrong kind of client?</p><p>Which parts of your recent growth made the business more capable, and which parts simply made it busier?</p><p>If you disappeared for a month, what would the business still be able to do without you, and what would quietly stop?</p><p>None of these questions are about blame. Every business starts with a founder holding more than the business can yet hold on its own. The real question is whether that&#8217;s still true after years of apparent success.</p><h2>Before You Grow Faster</h2><p>Growth is usually treated as a reward for good work, a signal that the hardest part is finally over. It behaves more like a stress test. It applies pressure to whatever already exists, and it doesn&#8217;t much care whether that thing was designed on purpose or assembled under pressure over several years.</p><p>Before asking how to grow faster, it&#8217;s worth asking a quieter question first: what exactly is about to be amplified? A business that already knows the answer can grow with some real confidence. A business that doesn&#8217;t is about to find out the hard way, at exactly the moment it can least afford to.</p><h2></h2><p>This article opens a year-long series working through what it actually means to design a business deliberately, one idea a week. If the tension in this piece feels familiar, join The Designed Business newsletter to get each week&#8217;s diagnosis as it&#8217;s published.</p>]]></content:encoded></item><item><title><![CDATA[Better Data Won’t Save a Customer Who Still Feels Stuck]]></title><description><![CDATA[Better data can expose better options, but if the customer still cannot decide, the business has not solved the real problem.]]></description><link>https://newsletter.aminollahi.com/p/better-data-customer-decision-confidence</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/better-data-customer-decision-confidence</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Tue, 23 Jun 2026 08:13:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nFk0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nFk0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nFk0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 424w, https://substackcdn.com/image/fetch/$s_!nFk0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 848w, https://substackcdn.com/image/fetch/$s_!nFk0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 1272w, https://substackcdn.com/image/fetch/$s_!nFk0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nFk0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108906,&quot;alt&quot;:&quot;Minimal modern workspace with a laptop showing a property data dashboard beside a handwritten decision checklist, representing the gap between better data and confident decisions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/203214596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Minimal modern workspace with a laptop showing a property data dashboard beside a handwritten decision checklist, representing the gap between better data and confident decisions." title="Minimal modern workspace with a laptop showing a property data dashboard beside a handwritten decision checklist, representing the gap between better data and confident decisions." srcset="https://substackcdn.com/image/fetch/$s_!nFk0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 424w, https://substackcdn.com/image/fetch/$s_!nFk0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 848w, https://substackcdn.com/image/fetch/$s_!nFk0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 1272w, https://substackcdn.com/image/fetch/$s_!nFk0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7548745-d298-44e0-ae72-9549126a7d28_1600x900.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Better data can expose better options, but if the customer still cannot decide, the business has not solved the real problem.</p><p>Better Data is one of the easiest ideas to believe in when you come from a technology, analytics or product background.</p><p>It feels logical. If people have better information, they should make better decisions. If the market is confusing, show them more signals. If the options are hard to compare, build a better dashboard. If the customer is uncertain, give them more analysis.</p><p>For a long time, I believed some version of this.</p><p>That belief was not completely wrong. Data can reduce confusion. It can reveal patterns that are otherwise hidden. It can challenge assumptions. It can make a market, a process or a decision more visible. In many industries, the absence of good data is a real problem.</p><p>But building AbodeFinder taught me that data alone rarely completes the customer&#8217;s journey.</p><h3><strong>The Assumption Behind Better Data</strong></h3><p>AbodeFinder started inside Intellicy. It was not originally a standalone property advisory business.</p><p>At the time, I was thinking about a broader problem inside consulting. Consulting creates value, but it also has a structural limitation: much of the value is tied to expert time. More clients usually mean more hours, more delivery pressure and more dependence on the judgement of specific people.</p><p>That led me to explore how parts of our expertise could become more repeatable through software, data and AI-enabled services. This was before ChatGPT became the public symbol of AI. We were not trying to follow a trend. We were trying to answer a business-model question: how can knowledge, judgement and analysis become more scalable without losing their usefulness?</p><p>One of the products that came out of that thinking eventually became AbodeFinder.</p><p>The original idea behind AbodeFinder was simple. Property buyers face an overwhelming amount of information. They need to compare suburbs, understand market signals, look at affordability, assess opportunity and avoid emotional or poorly informed decisions. A better product could organise that information and help buyers see the market more clearly.</p><p>So we built in that direction.</p><h3><strong>When Useful Is Not Enough</strong></h3><p>The application was designed to make property analysis more accessible. It could bring together information, compare locations and help buyers think about opportunities with more structure.</p><p>From a product perspective, this made sense.</p><p>From a data perspective, it made sense.</p><p>From a founder&#8217;s perspective, it felt like a useful answer to a real problem.</p><p>But usefulness is not the same as completion.</p><p>A customer could look at better suburb data and still feel uncertain. They could understand a market more clearly and still not know whether the decision made sense for their personal situation. They could compare locations and still feel exposed.</p><p>That was the uncomfortable lesson.</p><p>The customer was not only asking, &#8220;Where is the opportunity?&#8221;</p><p>They were also asking, &#8220;Is this the right decision for me?&#8221;</p><p>Those are different questions.</p><h3><strong>The Difference Between Information and Confidence</strong></h3><p>The first question can often be supported by data. The second question requires a broader decision journey.</p><p>It involves borrowing capacity, financial position, risk tolerance, lifestyle, timing, confidence, trade-offs and sometimes emotional pressure. A dashboard can support that decision, but it does not automatically carry the customer across it.</p><p>This is where many product-led and technology-led businesses make a quiet mistake. They assume that if the information is useful, the value has been delivered.</p><p>But customers do not usually buy information for its own sake.</p><p>They buy progress.</p><p>They buy a reduction in uncertainty.</p><p>They buy the ability to act with more confidence.</p><p>That distinction changed how I thought about AbodeFinder.</p><h3><strong>Why AbodeFinder Had to Evolve</strong></h3><p>We had to move beyond the idea that the product was only an information tool.</p><p>The real customer journey was bigger than the original product boundary. People did not simply need more property data. They needed to understand what that data meant in relation to their budget, borrowing capacity, goals and risk. They needed a path from analysis to action.</p><p>That is why financial services and advisory support became part of the model.</p><p>Not because the original product was useless, but because the original product was incomplete. The data was part of the value, but it was not the whole value.</p><p>This changed how I think about business design more broadly.</p><p>A business can be technically correct and still fail to solve the full customer problem. A product can work and still leave the customer stuck. A report can be accurate and still not change the decision. An AI recommendation can be impressive and still not create trust.</p><h3><strong>The Better Question to Ask</strong></h3><p>The question is not only:</p><p>&#8220;What can we show the customer?&#8221;</p><p>The better question is:</p><p>&#8220;What can the customer now decide, avoid or achieve because this exists?&#8221;</p><p>That question forces the business to become more honest about value.</p><p>If the customer still cannot decide, the business may not have designed the value clearly enough. If the customer still feels exposed, the business may not have designed trust deeply enough. If the customer needs a human to explain every important step, the business may not have designed the system properly. If the product keeps producing information but the customer journey does not improve, the business may be measuring output instead of progress.</p><h3><strong>AI Makes This Problem Bigger</strong></h3><p>This is especially important now because AI makes it easier than ever to produce more.</p><p>More reports. More summaries. More recommendations. More dashboards. More content. More analysis. More personalised outputs.</p><p>But more output does not necessarily mean more value.</p><p>AI can accelerate the creation of information, but it does not automatically understand the customer&#8217;s decision context. It can make a product feel smarter, but that does not mean the customer feels more confident. It can produce a recommendation, but it cannot replace the need to design the path that makes that recommendation useful, trusted and actionable.</p><p>This is why I am cautious when companies begin with the question, &#8220;Where can we use AI?&#8221;</p><p>It is not a bad question, but it is often asked too early.</p><p>A better starting point is:</p><p>&#8220;Where is the customer currently stuck, and what kind of progress are we responsible for helping them make?&#8221;</p><p>Only after that question is clear does AI become a useful design choice.</p><h3><strong>Data Needs to Sit Inside Value Design</strong></h3><p>In the case of AbodeFinder, the lesson was not that data was unimportant. The lesson was that data needed to sit inside a more complete value design.</p><p>The product had to support a decision, not simply display information. The customer needed clarity, but also confidence. They needed insight, but also a way to act on it.</p><p>That lesson is not limited to property.</p><p>It applies to consulting, where clients often receive detailed recommendations but still struggle to make decisions internally. It applies to enterprise transformation, where dashboards can show performance without changing accountability. It applies to AI adoption, where organisations produce more automated output without redesigning the process around it. It applies to media and content, where publishing more information does not automatically build trust.</p><p>In each case, the same pattern appears.</p><p>The business believes it has delivered value because it has delivered information, analysis or output. But the customer is still carrying the harder part of the journey alone.</p><h3><strong>What This Taught Me About The Designed Business</strong></h3><p>This is one of the reasons I am writing <em>The Designed Business</em>.</p><p>The central idea of the book is that growth does not fix the business. It reveals what has already been built. If a business has not clearly designed the problem it solves, the value it creates, the trust it requires, the system that delivers it and the learning loop that improves it, growth will not quietly repair those gaps. It will expose them.</p><p>AbodeFinder exposed one of those gaps for me.</p><p>It showed me that the value of a business is not always where the founder first thinks it is. I thought the product was mainly about better property data. The customer showed me that the deeper value was confidence in a decision.</p><p>That shift matters.</p><p>When a business understands that shift, it designs differently. It sells differently. It uses technology differently. It decides what should be automated and what should remain human. It measures success differently. It stops asking only whether the product works and starts asking whether the customer has moved.</p><p>That is a much harder standard.</p><p>But it is also a more useful one.</p><h3><strong>The Real Destination Is Not the Dashboard</strong></h3><p>Better Data can make the world more visible. It can show patterns, risks and possibilities. It can help customers think more clearly than they could before.</p><p>But visibility is not the same as progress.</p><p>A customer can see more and still hesitate. They can understand more and still feel uncertain. They can receive better analysis and still not know what to do next.</p><p>That is the point where the real business design begins.</p><p>Not at the dashboard.</p><p>Not at the report.</p><p>Not at the AI output.</p><p>At the moment where the customer asks:</p><p>&#8220;So what should I do now?&#8221;</p><p>The businesses that answer that question well are not just providing information. They are designing confidence.</p>]]></content:encoded></item><item><title><![CDATA[Correct Code Is No Longer Enough: Why AI Agents Need a New SDLC]]></title><description><![CDATA[Traditional software development was built for deterministic systems. Agentic AI introduces runtime decisions, external actions, and new failure modes that require architecture and governance.]]></description><link>https://newsletter.aminollahi.com/p/correct-code-is-no-longer-enough-agentic-sdlc</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/correct-code-is-no-longer-enough-agentic-sdlc</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Mon, 01 Jun 2026 21:37:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LvqE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LvqE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LvqE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 424w, https://substackcdn.com/image/fetch/$s_!LvqE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 848w, https://substackcdn.com/image/fetch/$s_!LvqE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 1272w, https://substackcdn.com/image/fetch/$s_!LvqE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LvqE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1895156,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/199913898?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LvqE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 424w, https://substackcdn.com/image/fetch/$s_!LvqE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 848w, https://substackcdn.com/image/fetch/$s_!LvqE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 1272w, https://substackcdn.com/image/fetch/$s_!LvqE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70e79a2-a418-471a-9311-2dbf89560480_1537x1023.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Software engineering was built for a deterministic world.</p><p>Same input. Same logic. Same output.</p><p>That assumption shaped the way we designed systems, tested systems, deployed systems, and governed change. The traditional Software Development Lifecycle, or SDLC, was built around one central question:</p><p><strong>Did we build the software correctly?</strong></p><p>If the code was clean, the tests passed, the security controls were in place, and the deployment pipeline worked, we could reasonably assume the system would behave as designed.</p><p>That assumption worked when software followed explicit paths written by developers.</p><p>It starts to break when the software itself begins to participate in decisions.</p><p>AI agents do not behave like normal application features. They interpret context. They make bounded decisions under uncertainty. They use tools. They call APIs. They coordinate actions. They may trigger workflows across systems that sit outside the original application boundary.</p><p>That changes the architectural problem.</p><p>The question is no longer only:</p><p><strong>Did we build the software correctly?</strong></p><p>The new question is:</p><p><strong>Did we design, constrain, verify, and operate the agent safely and effectively?</strong></p><p>That is a very different discipline.</p><h2>The Old SDLC Was Designed for Predictable Behaviour</h2><p>Traditional software architecture assumes that system behaviour comes from code and configuration.</p><p>A developer writes the logic.<br>An architect defines the integration pattern.<br>A tester checks the expected outcomes.<br>A release pipeline moves the change into production.</p><p>This model works because the system is deterministic enough to be tested against known scenarios.</p><p>Of course, production systems still fail. APIs break. Databases slow down. Infrastructure goes down. Users do unexpected things. But the behaviour of the software is still mostly traceable to something we designed, coded, configured, or deployed.</p><p>AI agents introduce a different type of uncertainty.</p><p>An agent may receive a new context, interpret that context differently, select a tool, call an external service, and generate a real operational effect.</p><p>The code may be correct.</p><p>The infrastructure may be available.</p><p>The integration may be working.</p><p>And the system may still do the wrong thing.</p><p>That is the uncomfortable part.</p><p>Correct code does not automatically mean controlled behaviour when the software is capable of interpreting, deciding, and acting.</p><h2>AI Agents Are Not Just Features</h2><p>One of the biggest mistakes organisations make is treating AI as a feature to be inserted into an existing delivery model.</p><p>A chatbot here.<br>An automation layer there.<br>A workflow assistant inside an existing platform.<br>A model connected to a few internal tools.</p><p>At small scale, this feels manageable. The agent is seen as a productivity enhancement, not a change to the architecture of control.</p><p>But an AI agent is not just another module.</p><p>Once an agent can use tools, access data, make decisions, or trigger actions, it becomes part of the operational fabric of the organisation. It is no longer only producing text. It is participating in business execution.</p><p>That means the architecture must change.</p><p>The model is only one component. Around it, the organisation needs policies, boundaries, telemetry, approval flows, exception handling, audit trails, and human escalation paths.</p><p>Without those controls, the organisation is not deploying intelligence.</p><p>It is deploying uncertainty.</p><h2>The New Failure Modes Are Behavioural</h2><p>Traditional engineering teams are trained to look for familiar failures.</p><p>Does the code compile?<br>Do the tests pass?<br>Is the API available?<br>Is the database healthy?<br>Is the deployment secure?<br>Is the service observable?</p><p>All of this still matters.</p><p>But agentic systems introduce failure modes that standard CI/CD pipelines were not designed to catch.</p><p>An agent may take an action it was not authorised to take.</p><p>It may misunderstand the meaning of a business instruction.</p><p>It may use the right tool for the wrong purpose.</p><p>It may act on incomplete evidence.</p><p>It may produce a decision that cannot be explained later.</p><p>It may complete a workflow successfully from a technical point of view, while still violating business policy, compliance requirements, or customer expectations.</p><p>These are not simple software bugs.</p><p>They are failures of control.</p><p>This is why testing an agent cannot stop at functional correctness. We also need to test intent, context, authority, evidence, and escalation.</p><p>The real question becomes:</p><p><strong>Can we prove the agent remained inside its authorised operating boundary?</strong></p><h2>Agentic Architecture Requires Runtime Control</h2><p>Traditional architecture relies heavily on design-time structure.</p><p>We define the components.<br>We define the interfaces.<br>We define the data flows.<br>We define the security controls.<br>We define the deployment model.</p><p>Agentic architecture needs all of that, but it also needs active runtime discipline.</p><p>The reason is simple: agentic behaviour emerges at runtime.</p><p>It emerges from model outputs, live context, policy data, tool responses, user instructions, environmental signals, and previous state.</p><p>That means control cannot live only in a design document.</p><p>It must be enforced while the agent is operating.</p><p>Policies need to be machine-readable.<br>Boundaries need to be executable.<br>Approvals need to be built into the workflow.<br>Telemetry needs to capture not only what happened, but why the agent acted.<br>Escalation needs to be part of the operating model, not an afterthought.</p><p>This is where many AI initiatives fail.</p><p>They focus on model capability before they design operational control.</p><p>They ask, &#8220;What can the agent do?&#8221;</p><p>Architects need to ask a more important question:</p><p><strong>What is the agent allowed to do, under what conditions, with what evidence, and with what human oversight?</strong></p><h2>The Six Design Pillars of a Governable Agent</h2><p>Before building an agentic system, architecture needs to define the control model.</p><p>I would frame this around six design pillars.</p><h3>1. Intent Design</h3><p>Intent design defines the purpose of the agent.</p><p>Not in vague terms like &#8220;improve productivity&#8221; or &#8220;automate support&#8221;.</p><p>It must define the agent&#8217;s specific goal, the business outcome it supports, and the negative space around that goal.</p><p>Negative space matters because it clarifies what the agent must not do.</p><p>A well-designed agent needs a narrow and explicit purpose. The broader the intent, the harder the system is to govern.</p><h3>2. Boundary Design</h3><p>Boundary design defines the agent&#8217;s authority.</p><p>What data can it access?<br>What tools can it use?<br>What systems can it touch?<br>What actions can it trigger?<br>What value threshold requires approval?<br>What risk level requires escalation?</p><p>This is where architecture becomes practical.</p><p>An agent that can read information is very different from an agent that can update records, send messages, move money, approve claims, change configurations, or communicate with customers.</p><p>Autonomy must be proportional to risk.</p><h3>3. Semantic Design</h3><p>Semantic design defines shared meaning.</p><p>This is often ignored, but it is critical.</p><p>AI agents operate through language, context, and interpretation. If business terms are ambiguous, the agent may make technically valid but operationally wrong decisions.</p><p>What does &#8220;approved&#8221; mean?<br>What does &#8220;urgent&#8221; mean?<br>What does &#8220;high risk&#8221; mean?<br>What does &#8220;customer consent&#8221; mean?<br>What does &#8220;complete evidence&#8221; mean?</p><p>In traditional systems, ambiguity often hides inside human process.</p><p>In agentic systems, ambiguity becomes executable risk.</p><h3>4. Policy Design</h3><p>Policy design converts governance into machine-readable constraints.</p><p>This is where organisations need to move beyond PDF policies and static documents.</p><p>The agent needs runtime constraints it can follow and the platform can enforce.</p><p>A policy should define what is allowed, what is blocked, what requires approval, what must be logged, and what must be escalated.</p><p>In an agentic world, policy becomes part of the system architecture.</p><p>It should be versioned, tested, monitored, and reviewed with the same seriousness as code.</p><h3>5. Protocol Design</h3><p>Protocol design defines how the agent coordinates with systems, people, and other agents.</p><p>This includes approval flows, handoffs, retries, exception routing, timeout behaviour, and fallback paths.</p><p>Agents should not improvise critical coordination patterns.</p><p>If a decision requires human approval, the approval protocol must be explicit.</p><p>If an external system fails, the recovery protocol must be explicit.</p><p>If confidence is low, the escalation protocol must be explicit.</p><p>The agent should not be trusted to invent the operating model at runtime.</p><h3>6. Assurance Design</h3><p>Assurance design defines how we prove the system behaved correctly.</p><p>This includes telemetry, audit trails, evidence capture, decision provenance, simulation results, test outcomes, and post-incident review.</p><p>For normal software, observability often focuses on performance and availability.</p><p>For agentic systems, observability must also capture intent, context, decision path, policy evaluation, and tool usage.</p><p>Operators need to know more than whether the system was up.</p><p>They need to know whether the agent was under control.</p><h2>The SDLC Must Expand</h2><p>The traditional SDLC is not dead.</p><p>We still need requirements, design, build, test, deploy, and operate.</p><p>But for AI agents, those steps are no longer enough.</p><p>An Agentic SDLC needs additional stages.</p><p>It needs intent definition before solution design.<br>It needs boundary modelling before tool access.<br>It needs semantic validation before workflow automation.<br>It needs policy design before deployment.<br>It needs simulation before production release.<br>It needs runtime monitoring after go-live.<br>It needs exception handling as part of the core architecture.<br>It needs feedback loops that refine the agent&#8217;s operating boundaries over time.</p><p>This is the shift.</p><p>We are not only building applications anymore.</p><p>We are building governable systems of action.</p><p>That requires a different mindset from both engineering and architecture teams.</p><h2>The Model Is Not the Architecture</h2><p>A common mistake in AI discussions is to overfocus on the model.</p><p>Which model should we use?<br>Which vendor is better?<br>Which benchmark looks stronger?<br>Which tool has the best demo?</p><p>These questions matter, but they are not the architecture.</p><p>In production, the model is only the engine.</p><p>The real architecture is the system around the model.</p><p>The policies.<br>The data boundaries.<br>The orchestration layer.<br>The APIs.<br>The approval flows.<br>The monitoring.<br>The audit trail.<br>The incident process.<br>The human escalation path.</p><p>A powerful model inside a weak control environment is not an enterprise capability.</p><p>It is a risk multiplier.</p><p>The organisations that succeed with AI agents will not be the ones that simply adopt the most advanced models.</p><p>They will be the ones that design the most governable operating systems around those models.</p><h2>Change Management Must Also Change</h2><p>In traditional software delivery, change management focuses on code, infrastructure, configuration, and release artefacts.</p><p>In agentic systems, change management needs to expand.</p><p>We must version policies.<br>We must version prompts.<br>We must version semantic definitions.<br>We must version tool permissions.<br>We must version escalation rules.<br>We must version operating boundaries.</p><p>A small change to a policy can change what an agent is allowed to do.</p><p>A small change to a prompt can change how it interprets a situation.</p><p>A small change to tool access can change the operational risk profile of the entire system.</p><p>This is why AI governance cannot sit outside delivery.</p><p>It must be embedded into the engineering lifecycle.</p><h2>The Real Architecture Question</h2><p>The future of software delivery is not just about faster coding.</p><p>That is the shallow conversation.</p><p>The deeper conversation is about controlled autonomy.</p><p>How do we design systems that can reason, act, and adapt without losing organisational control?</p><p>How do we allow agents to create value without allowing them to create unmanaged risk?</p><p>How do we move from experimentation to production without pretending that AI agents behave like normal software?</p><p>This is where architecture becomes essential.</p><p>Not as a documentation function.</p><p>Not as a governance bottleneck.</p><p>But as the discipline that creates clarity between business ambition, engineering capability, operational risk, and long-term control.</p><p>AI agents will force organisations to rediscover the real purpose of architecture.</p><p>Architecture is not about drawing diagrams.</p><p>Architecture is about designing the conditions under which change can happen safely.</p><h2>Final Thought</h2><p>Correct code is no longer enough.</p><p>A system can pass every traditional test and still behave in ways the organisation cannot explain, control, or defend.</p><p>That is the challenge of agentic software.</p><p>The next generation of SDLC must be built around governability.</p><p>Not just delivery.</p><p>Not just automation.</p><p>Not just intelligence.</p><p>Governability.</p><p>Because when software starts making decisions and taking action, the real measure of success is not whether the system works.</p><p>It is whether the system remains under control.</p><p></p><p><strong>Thinking about introducing AI agents into your business? Don&#8217;t start with the model. Start with the control architecture.</strong></p><p>I help technology leaders, founders, and executive teams design AI-enabled systems that are safe, governable, and ready for real business operations.</p><p>Before you connect an agent to your data, workflows, or customer-facing systems, you need clear answers to four questions:</p><p><strong>What is the agent allowed to decide?</strong><br><strong>What actions can it take?</strong><br><strong>When must it stop and escalate to a human?</strong><br><strong>How will you prove later that it acted within policy?</strong></p><p>If your organisation is exploring AI agents, automation, or AI-enabled operating models, I can help you assess the architecture, risks, governance model, and delivery approach before the system becomes expensive to fix.</p><p><strong>Book a consultation to design your AI agent architecture before you deploy autonomy into the business.</strong></p>]]></content:encoded></item><item><title><![CDATA[AI Will Not Fix a Broken Delivery Model]]></title><description><![CDATA[Why AI-native development requires organisations to redesign discovery, design, delivery and governance, not simply give developers faster coding tools.]]></description><link>https://newsletter.aminollahi.com/p/ai-will-not-fix-a-broken-delivery-model</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/ai-will-not-fix-a-broken-delivery-model</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Mon, 25 May 2026 20:42:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!auym!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!auym!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!auym!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!auym!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!auym!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!auym!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!auym!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1886886,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/198907466?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!auym!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!auym!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!auym!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!auym!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d21401-12e1-4e0d-b37f-b58f476af054_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>For the last few years, much of the conversation about AI in software development has focused on one promise: developers will write code faster.</p><p>The assumption is simple. Give engineers better coding assistants, reduce time spent on boilerplate, automate testing and documentation, and delivery velocity will improve.</p><p>But software delivery has never been limited by how quickly a developer can type code.</p><p>The real constraints usually sit elsewhere: unclear requirements, delayed decisions, fragmented ownership, missing context, late security reviews, inconsistent architecture, slow environments, weak governance and teams working from different versions of the same problem.</p><p>AI can generate code quickly. It cannot, by itself, repair a delivery system built on ambiguity.</p><p>That is why the conversation needs to move beyond AI-assisted coding and towards something more fundamental: an AI-native development lifecycle.</p><h2>The productivity paradox should make leaders uncomfortable</h2><p>A 2025 randomised controlled trial by METR studied experienced open-source developers working on mature repositories they already understood well. The developers expected AI tools to make them 24% faster. Even after completing the work, they believed AI had made them around 20% faster.</p><p>The measured result was the opposite. With AI tools available, they took 19% longer to complete the tasks.</p><p>This does not prove that AI is ineffective in software engineering. It does prove that perceived velocity and actual delivery performance are not the same thing.</p><p>That distinction matters.</p><p>AI-generated output creates a strong feeling of progress. Code appears quickly. Documentation can be drafted in seconds. Test cases can be suggested. Sequence diagrams can be generated. The blank page disappears.</p><p>But in a complex enterprise environment, output is not the same as value.</p><p>Every generated artefact must still be understood, validated, integrated, secured, tested, operated and governed. When the AI lacks the right business, architecture or operational context, teams may move faster in producing material while spending more time reviewing, correcting and aligning it later.</p><p>That is not transformation. It is faster production of uncertainty.</p><h2>The two ways organisations get AI wrong</h2><p>Most teams currently approach AI in one of two ways.</p><p>The first is to treat AI as an autonomous delivery engine: provide a prompt, expect a working solution and assume the team can review the output later. This may produce an impressive prototype. It becomes dangerous when applied to complex products, regulated environments, shared platforms or systems with important non-functional requirements.</p><p>AI does not naturally understand the full consequence of a design decision. It does not know which shortcut creates a future support burden, which integration assumption breaks a control boundary, or which apparently simple implementation introduces compliance or operational risk.</p><p>The second approach is safer, but often underwhelming. Teams use AI as a personal assistant for isolated tasks: complete this method, generate this unit test, explain this error, tidy this document.</p><p>That may save individual effort. It rarely changes the delivery outcome because the organisation is still operating through the same slow lifecycle: the same handovers, the same decision delays, the same scattered knowledge and the same governance checkpoints arriving too late.</p><p>One approach over-trusts AI. The other underuses it.</p><p>Neither changes the system of delivery.</p><h2>AI-DLC is not a new coding technique</h2><p>AWS introduced the concept of the <strong>AI-Driven Development Life Cycle</strong>, or AI-DLC, as an AI-centric approach in which AI creates plans, asks for clarification and implements work only after human validation. The second part of the model is equally important: cross-functional teams collaborate dynamically around decisions rather than operating through long, sequential handovers.</p><p>This is the important shift.</p><p>AI-DLC is not simply adding AI tools into an existing agile process. It is a challenge to the structure of that process.</p><p>Traditional delivery models often assume that work should move through stages: discovery, requirements, design, development, testing, security, deployment and operations. Each stage creates artefacts for the next group. Questions move backwards. Decisions wait for meetings. Important assumptions are discovered after implementation has already started.</p><p>AI changes the cost of producing options, documenting decisions, creating models, analysing code and testing assumptions. But those benefits only become meaningful when the people who need to make decisions are brought together around the same context.</p><p>This is why the concept of collaborative, AI-supported working sessions matters more than the coding assistant itself.</p><p>Bring product, architecture, engineering, quality, security and operations into the same problem space. Give the AI the right context. Ask it to produce options, surface gaps, create the initial artefacts and challenge assumptions. Then let the humans make the decisions that require accountability and judgement.</p><p>The value is not that AI replaces the team.</p><p>The value is that the team spends less time waiting for alignment and more time making informed decisions together.</p><h2>Discovery changes first</h2><p>The greatest opportunity for AI-native delivery may not be in development. It may be in discovery.</p><p>Many delivery failures start long before any code is written. The opportunity was poorly framed. The business outcome was vague. System impacts were incomplete. Dependencies were missed. Non-functional requirements appeared late. Delivery teams were asked to estimate a solution before the actual problem was understood.</p><p>Used properly, AI can help teams interrogate an opportunity earlier.</p><p>It can turn an initial business idea into structured questions. It can identify missing stakeholder decisions. It can map likely impacted systems. It can draft journeys, use cases, risks, assumptions, architectural options and test scenarios for the team to validate.</p><p>But the discipline matters: AI should not invent certainty. It should accelerate the identification of uncertainty.</p><p>A stronger discovery outcome is not a longer document generated faster. It is a team that can say, earlier and with greater confidence:</p><ul><li><p>This is the business outcome we are solving for.</p></li><li><p>These are the systems and controls affected.</p></li><li><p>These are the decisions that must be made.</p></li><li><p>These are the risks we will accept, mitigate or avoid.</p></li><li><p>This is the smallest useful slice we can safely deliver.</p></li></ul><p>That is architecture creating decision clarity, with AI improving the speed at which the clarity can be reached.</p><h2>Design becomes a conversation, not a handover</h2><p>In many organisations, solution design is still treated as something an architect prepares and then presents to delivery teams for review.</p><p>That model becomes less useful in an AI-native environment.</p><p>AI can quickly generate multiple design options, sequence diagrams, integration patterns, data flows, failure scenarios and initial threat considerations. The architect&#8217;s role is not reduced by this capability. It becomes more important.</p><p>Someone must decide whether the options are sensible in the real organisational context.</p><p>Someone must understand the existing platform constraints, the regulatory boundary, the long-term operating model, the technical debt already present and the trade-offs the organisation is genuinely willing to carry.</p><p>The architect is no longer spending most of the time creating the first draft of every diagram. The architect is shaping context, challenging generated options, guiding decisions and ensuring the design remains coherent beyond the immediate feature.</p><p>This is not architecture being automated away.</p><p>It is architecture moving closer to where its real value has always been: judgement.</p><h2>Delivery becomes faster only when context is controlled</h2><p>One of the most important principles in AI-driven delivery is that context matters more than prompting cleverness.</p><p>A developer asking AI to work across a large codebase without explaining system boundaries, integration contracts, architectural standards, security expectations or acceptance criteria is not accelerating delivery. They are asking the tool to make guesses faster.</p><p>In an AI-native delivery model, context must become an engineered asset.</p><p>That includes approved architecture principles, system boundaries, API specifications, coding standards, non-functional requirements, security patterns, deployment expectations, test strategies, previous decisions and known constraints.</p><p>Teams that curate this context will get better results from AI. Teams that leave their knowledge scattered across outdated documents, chat messages, individual memories and disconnected tickets will struggle.</p><p>This is a major organisational point.</p><p>AI adoption is not only a tooling decision. It is a knowledge architecture decision.</p><p>Before leaders ask how many developers have access to AI tools, they should ask whether the organisation has made its delivery context usable by those tools.</p><h2>Governance cannot remain at the end</h2><p>There is an obvious risk in AI-enabled delivery: teams can generate more code, more options and more artefacts than governance functions can reasonably review through traditional processes.</p><p>The answer is not to remove governance. It is to make governance continuous and closer to the work.</p><p>Security requirements, architecture principles, compliance controls, operational expectations and evidence needs should be part of the context given to AI from the beginning. The tool can help teams assess proposed changes against those expectations throughout discovery, design and development.</p><p>Human accountability remains essential. AI can identify a possible control gap. It cannot accept the risk on behalf of the organisation. AI can draft evidence. It cannot be accountable for whether that evidence is accurate and sufficient. AI can recommend an architecture option. It cannot carry the operational consequences if that option fails in production.</p><p>In regulated or high-trust environments, this distinction is critical.</p><p>AI should help governance become earlier, more consistent and more evidence-driven. It should never be used as an excuse to weaken ownership.</p><h2>Accountability does not disappear when the code is generated</h2><p>The most dangerous sentence in AI-enabled software delivery is: &#8220;The AI wrote it.&#8221;</p><p>That sentence has no value when a customer is affected, a vulnerability is discovered, a payment fails, data is exposed or a regulator asks how a control was implemented.</p><p>The organisation still owns the outcome.</p><p>The engineer approving generated code must understand what it does. The architect approving the solution must understand its trade-offs. The product owner accepting the feature must understand what problem has been solved. The security and compliance functions must understand whether required controls are present and effective.</p><p>AI can participate in the delivery lifecycle. It cannot become the accountable party.</p><p>That is why AI-native delivery is not a permission to reduce engineering discipline. It requires more disciplined context, clearer decision rights and stronger evidence of why a solution is safe to release.</p><h2>The real leadership question</h2><p>The wrong question for technology leaders is: <strong>Are our developers using AI?</strong></p><p>That question measures adoption of tools, not improvement in delivery.</p><p>The better questions are:</p><p>Are we using AI to improve discovery before we generate code?</p><p>Are product, architecture, engineering, security, quality and operations making decisions together, or are we simply pushing AI-generated outputs through the same slow handovers?</p><p>Have we curated the context AI needs to produce solutions aligned with our architecture and controls?</p><p>Can we demonstrate that AI-supported delivery is improving cycle time, quality, risk management and business outcomes, rather than simply increasing the volume of generated artefacts?</p><p>And most importantly: who remains accountable when AI-generated work reaches production?</p><p>AI will become part of how modern software is designed and delivered. That direction is no longer difficult to see.</p><p>But organisations will not become AI-native simply by giving developers new tools.</p><p>They will become AI-native when they redesign how problems are understood, how decisions are made, how context is managed, how solutions are governed and how accountability is maintained.</p><p>Because the future of software delivery is not about generating code faster.</p><p>It is about creating clarity faster  and turning that clarity into safe, valuable delivery.</p><p></p><h2>Is your organisation using AI tools or redesigning delivery for an AI-native future?</h2><p>AI adoption is no longer just an engineering productivity discussion. It is becoming an architecture, governance and operating model question.</p><p>I work with technology leaders to turn complex delivery challenges into clear architecture decisions, practical operating models and scalable technology strategies.</p><p><strong>If your organisation is exploring AI-enabled delivery, platform transformation or architecture governance, let&#8217;s connect.</strong></p>]]></content:encoded></item><item><title><![CDATA[AI-DLC: The Delivery Trap Leaders Won’t See Coming]]></title><description><![CDATA[AI can speed up delivery, but without lifecycle control it can also hide risk. The question is who owns the consequences.]]></description><link>https://newsletter.aminollahi.com/p/ai-dlc-delivery-trap-leaders-wont-see-coming</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/ai-dlc-delivery-trap-leaders-wont-see-coming</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Thu, 07 May 2026 00:10:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-jsI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-jsI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-jsI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!-jsI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!-jsI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!-jsI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-jsI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:511822,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/196707267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-jsI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!-jsI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!-jsI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!-jsI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4f5b22-9886-4476-a7d8-165c7c618353_1600x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The biggest risk with AI in delivery is not that engineers will write code faster.</p><p>The bigger risk is that organisations will change how work gets done without changing how decisions are governed.</p><p>That is where many AI programmes will quietly fail.</p><p>A team adopts AI for requirements analysis. Another team uses it for code generation. Product managers use it to summarise discovery notes. Architects use it to draft diagrams. Testers use it to create test cases. Delivery leads use it to summarise risks and progress.</p><p>On the surface, everything looks faster.</p><p>But under the surface, something more important has changed.</p><p>The organisation has introduced a new layer into its delivery lifecycle. AI is now influencing discovery, design, implementation, testing, documentation and governance. It is shaping decisions, producing artefacts, interpreting requirements and sometimes nudging teams towards options they do not fully understand.</p><p>If the operating model does not change with it, speed can become a risk multiplier.</p><p>That is why I think the next serious conversation is not only about AI tools.</p><p>It is about AI-DLC.</p><p>AI-DLC means embedding AI into the full delivery lifecycle in a controlled, traceable and human-owned way. Not as a side tool. Not as a chatbot sitting next to the team. Not as an experiment hidden inside individual workflows.</p><p>As part of the delivery system itself.</p><h2><strong>AI-DLC is not SDLC with a chatbot</strong></h2><p>Most organisations will start with the easy version.</p><p>They will give teams access to AI tools and measure whether work feels faster. Code completion improves. Documents are drafted more quickly. Meeting notes are summarised. Test cases appear earlier. Architects can produce first-draft diagrams in minutes rather than days.</p><p>That is useful.</p><p>But it is not an operating model.</p><p>AI-DLC is not simply the software delivery lifecycle with AI sprinkled across it. It is a different way of thinking about how decisions, evidence, controls and delivery artefacts move through the organisation.</p><p>A traditional delivery lifecycle often assumes humans create artefacts, humans interpret them, humans review them, and humans carry context from one stage to another.</p><p>AI changes that.</p><p>It can generate artefacts. It can interpret artefacts. It can connect artefacts. It can challenge gaps. It can detect inconsistencies. It can also hallucinate, over-simplify, miss context, expose sensitive information, or create outputs that sound correct but are not fit for the organisation.</p><p>That is the trade-off.</p><p>AI can reduce effort, but it can also create a new form of architecture debt if the organisation does not control how it is used.</p><p>The answer is not to slow everything down.</p><p>The answer is to make the lifecycle clearer.</p><h2><strong>Discovery: stop losing architecture in workshop noise</strong></h2><p>Discovery is where many delivery problems begin.</p><p>Not because teams do not care. They usually do. The problem is that discovery creates a lot of fragmented information: workshop notes, Slack messages, Jira tickets, customer pain points, process maps, Figma screens, vendor documents, assumptions, risks, constraints and half-formed options.</p><p>A good architect can bring structure to that noise.</p><p>AI can help.</p><p>In AI-DLC, discovery should become less dependent on memory and more dependent on structured evidence. AI can read discovery material and help identify the business problem, impacted capabilities, current-state constraints, upstream and downstream dependencies, open assumptions, likely non-functional requirements and decision points.</p><p>That does not mean AI decides the architecture.</p><p>It means AI helps the team see the discovery landscape earlier.</p><p>The practical value is simple: fewer hidden assumptions.</p><p>In many programmes, the expensive problems are not the ones teams knew about early. They are the assumptions nobody wrote down. The dependency that was &#8220;obvious&#8221;. The data boundary nobody challenged. The support model that was assumed to exist. The vendor limitation discovered after the design had already been shaped.</p><p>AI can help surface those signals earlier if it is given the right material and the right guardrails.</p><p>This connects to a point I have written about before in <a href="https://newsletter.aminollahi.com/p/business-analysis-vs-solution-architecture">Where Business Analysis Ends and Solution Architecture Begins</a>. Business analysis helps clarify the need. Solution architecture has to test whether that need can survive the real system constraints.</p><p>AI-DLC should make that handover stronger, not blur it further.</p><p>The discovery question should not be:</p><p>Can AI summarise the workshop?</p><p>The better question is:</p><p>Can AI help us identify the decisions, risks and assumptions that must be owned before we move into design?</p><p>That is where the value is.</p><h2><strong>Design: architecture needs to become AI-readable</strong></h2><p>AI-DLC will not work if architecture remains trapped in scattered diagrams, stale Confluence pages and tribal knowledge.</p><p>AI needs context.</p><p>Engineers need context.</p><p>Governance needs context.</p><p>If the architecture artefacts are fragmented, outdated or hard to query, AI will not fix the problem. It will only make the gaps less visible.</p><p>This is why architecture-as-code matters.</p><p>I do not mean turning every architecture decision into heavy documentation. I mean making architecture artefacts structured, versioned, searchable and usable by both humans and AI.</p><p>A practical architecture-as-code repository might include:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;a4038f0b-4c13-40ca-8d9b-1b4a8e5756c9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/architecture
  /decisions
  /patterns
  /nfrs
  /risks
  /controls
  /api-contracts
  /data-boundaries
  /sequence-diagrams
  /operational-readiness</code></pre></div><p>The format does not need to be complicated. Markdown, Mermaid, PlantUML, OpenAPI, JSON and YAML can be enough.</p><p>The point is not the format.</p><p>The point is that architecture intent becomes explicit.</p><p>If AI is going to help developers write code, refine stories, generate tests or review pull requests, it needs to understand the approved patterns, system boundaries, integration contracts, security controls and non-functional expectations.</p><p>Otherwise, AI will optimise for generic correctness rather than organisational fit.</p><p>That is dangerous.</p><p>A generated implementation may look technically reasonable and still violate the actual architecture. It may bypass an approved integration pattern. It may log sensitive data. It may introduce coupling the platform was trying to avoid. It may produce code that works locally but creates supportability problems later.</p><p>This is why I keep coming back to technical ownership.</p><p>Technical ownership is not about being the person who writes the code. It is about protecting the technical integrity of the outcome across architecture, delivery, security, data, integration, operations and long-term maintainability.</p><p>AI does not remove that responsibility.</p><p>It makes it more important.</p><h2><strong>Delivery: context before code</strong></h2><p>The most visible AI use case in delivery is code generation.</p><p>That is also where many organisations will make the shallowest mistake.</p><p>They will measure AI adoption by how many developers use a coding assistant. That may be useful as a productivity signal, but it does not prove the organisation is delivering better systems.</p><p>Good delivery is not only about writing code faster.</p><p>It is about building the right thing with the right constraints, in a way the organisation can operate, secure, change and govern.</p><p>In AI-DLC, AI-assisted delivery should be grounded in context. A developer should not only give the AI a Jira ticket and ask it to produce code. The AI should also understand the architecture decision, approved pattern, API contract, data classification, security controls, observability expectations and test strategy.</p><p>That is the difference between AI coding and AI-assisted delivery.</p><p>A Jira story on its own can be too thin. It may describe the task but not the architecture consequence. It may tell the engineer what to build but not explain what not to break.</p><p>The context bundle matters.</p><p>Before AI generates implementation guidance, the team should be able to attach:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;ddd16f8f-a234-4d18-9e8f-d9363bbbab31&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">- The user story or delivery ticket
- The relevant architecture decision record
- The approved integration pattern
- The API or event contract
- The data classification
- The non-functional requirements
- The threat model or control checklist
- The expected test coverage
- The observability requirements
- The release and rollback guardrails</code></pre></div><p>This is where AI-DLC becomes practical.</p><p>AI can help turn architecture decisions into acceptance criteria. It can generate negative test cases from risks. It can suggest missing logs and metrics. It can compare a pull request against an approved design. It can highlight where the implementation has drifted from the decision record.</p><p>But the human team still owns the judgement.</p><p>AI can accelerate the path.</p><p>It cannot own the consequence.</p><h2><strong>Governance: move from late review to continuous assurance</strong></h2><p>Traditional architecture governance often arrives too late.</p><p>A team has already shaped the solution. Engineering has already started. Dependencies are already committed. Then the architecture review asks whether the design is aligned.</p><p>At that point, governance can become a theatre of approval.</p><p>AI-DLC gives us a better option.</p><p>Governance can become more continuous.</p><p>That does not mean more meetings. It should mean fewer surprises.</p><p>AI can help check whether key artefacts exist, whether risks have mitigations, whether decision records are linked to delivery work, whether data classification has been considered, whether non-functional requirements are missing, and whether implementation evidence supports the architecture intent.</p><p>This matters because AI creates a traceability problem.</p><p>If teams are using AI across discovery, design and delivery, leaders need to know how decisions are being shaped. Which outputs were generated? Which were reviewed? Which were accepted? Which risks were identified? Which controls were applied? Who made the final call?</p><p>That is not bureaucracy.</p><p>That is accountability.</p><p>I wrote about decision ownership in <a href="https://newsletter.aminollahi.com/p/rapid-vs-daci-architecture-decisions-templates">RAPID vs DACI: The decision matrix every CIO should steal</a>. The same principle applies here. AI can assist the decision process, but it cannot replace decision rights.</p><p>Someone still needs to own the call.</p><p>Someone still needs to record the why.</p><p>Someone still needs to revisit the decision when assumptions change.</p><p>AI-DLC should make this easier by creating living evidence, not more paperwork.</p><h2><strong>The governance model must include AI-specific risk</strong></h2><p>There is another layer that cannot be ignored.</p><p>AI introduces risks that traditional delivery governance was not designed to handle properly.</p><p>Prompt injection. Sensitive data disclosure. Insecure tool use. Model hallucination. Unreviewed generated code. Excessive agent permissions. Weak audit trails. Private information being pasted into external tools. AI outputs being treated as evidence when they are really suggestions.</p><p>These are not theoretical risks.</p><p>They are delivery risks.</p><p>They need to be managed in the same lifecycle as architecture, security, privacy and operational readiness.</p><p>This is where external frameworks are useful, but they are not enough on their own. NIST&#8217;s AI Risk Management Framework gives a useful risk management structure around Govern, Map, Measure and Manage. OWASP&#8217;s LLM guidance highlights application-level risks such as prompt injection and sensitive information disclosure. Google&#8217;s SAIF gives a security lens for AI systems. Microsoft&#8217;s Responsible AI material connects governance with engineering practices and team enablement.</p><p>But frameworks do not implement themselves.</p><p>The architecture question is:</p><p>How do these controls show up in daily delivery?</p><p>A policy document is not enough.</p><p>The controls need to appear in story refinement, design review, code review, testing, release readiness, vendor assessment, access control, logging, incident response and post-implementation learning.</p><p>Otherwise, AI governance becomes another document that looks mature but does not change behaviour.</p><p>That is one of the most common enterprise architecture anti-patterns: governance that exists on paper but not in the operating model. I explored that broader problem in <a href="https://newsletter.aminollahi.com/p/enterprise-architecture-anti-patterns">When Enterprise Architecture Goes Sideways: 4 Anti-patterns and Fixes</a>.</p><p>AI-DLC needs to avoid the same trap.</p><h2><strong>The real operating model</strong></h2><p>The practical AI-DLC operating model is not complicated.</p><p>But it does need to be explicit.</p><p>Discovery should produce decision-ready evidence.</p><p>Design should produce AI-readable architecture intent.</p><p>Delivery should use AI with controlled context, not isolated prompts.</p><p>Testing should be generated from requirements, risks and failure modes.</p><p>Governance should continuously check traceability, controls and evidence.</p><p>Post-implementation review should feed learning back into the architecture knowledge base.</p><p>That last part is important.</p><p>AI-DLC should improve with every delivery cycle. If a design assumption was wrong, capture it. If a generated test missed an edge case, update the pattern. If a security review found a new class of risk, add it to the control library. If a prompt created poor output, improve the reusable prompt pattern. If engineers repeatedly ask the same architecture question, make the architecture guidance clearer.</p><p>This is how AI-DLC becomes a learning system.</p><p>Not because AI is magic.</p><p>Because the organisation finally treats delivery knowledge as an asset.</p><h2><strong>Do not confuse AI speed with platform maturity</strong></h2><p>AI can make immature delivery look more productive for a while.</p><p>That is the trap.</p><p>A team with unclear ownership can produce more documents. A team with weak architecture can produce more diagrams. A team with poor testing discipline can produce more test cases. A team with fragmented governance can produce more evidence packs.</p><p>But volume is not maturity.</p><p>The real test is whether AI improves decision quality.</p><p>Are assumptions clearer?</p><p>Are risks surfaced earlier?</p><p>Are architecture decisions easier to trace?</p><p>Are security controls applied consistently?</p><p>Are teams reusing approved patterns?</p><p>Are non-functional requirements being designed in, not added late?</p><p>Are support, observability and operational readiness considered before release?</p><p>Are leaders making better trade-offs with better evidence?</p><p>If the answer is no, AI is probably accelerating activity rather than improving the system.</p><p>This is similar to the issue I described in <a href="https://newsletter.aminollahi.com/p/operational-over-tooling-fix-tool-sprawl">Operational Over-Tooling: When Your Stack Becomes the Product</a>. More tools do not automatically create better operations. More AI does not automatically create better delivery.</p><p>The operating model matters.</p><h2><strong>Data quality becomes even more important</strong></h2><p>There is one uncomfortable truth many AI transformation plans underplay.</p><p>AI is only as useful as the context it receives.</p><p>If requirements are vague, architecture documents are stale, system ownership is unclear, data classification is inconsistent and decision records do not exist, AI will not magically create maturity. It may simply produce confident output from poor inputs.</p><p>Bad input becomes bad guidance.</p><p>Bad guidance becomes delivery risk.</p><p>That is why data quality and knowledge quality matter in AI-DLC. Your architecture repository, delivery artefacts, risk registers, design patterns and operational runbooks become part of the context that AI uses to support the team.</p><p>If that context is weak, the AI output becomes weak.</p><p>This connects directly to the issue I wrote about in <a href="https://newsletter.aminollahi.com/p/bad-data-virus-antipattern-fix">Bad Data Virus: The Enterprise Anti-Pattern That Breaks Trust</a>. Bad data does not always fail loudly. It quietly contaminates decisions.</p><p>The same is true for bad architecture knowledge.</p><p>If your AI assistant is learning from stale patterns, unclear boundaries and old assumptions, it may help teams move faster in the wrong direction.</p><p>AI-DLC needs clean, governed, current knowledge.</p><p>Not perfect knowledge.</p><p>But trustworthy enough to support decisions.</p><h2><strong>What leaders should ask before adopting AI-DLC</strong></h2><p>The wrong question is:</p><p>Which AI tool should we buy?</p><p>The better questions are:</p><p>What parts of our lifecycle are ready for AI assistance?</p><p>Which decisions must always remain human-owned?</p><p>What data can and cannot be shared with AI tools?</p><p>How will AI outputs be reviewed?</p><p>Where will architecture decisions be stored?</p><p>How will generated code be tested and traced?</p><p>How will we detect architecture drift?</p><p>How will we prove security and compliance controls were considered?</p><p>How will we prevent every team from creating its own AI delivery process?</p><p>These questions are not designed to slow adoption.</p><p>They are designed to make adoption safe enough to scale.</p><p>There is a difference between experimentation and operating model change. Experimentation can live inside a team. Operating model change affects the enterprise.</p><p>AI-DLC is an operating model change.</p><p>That means architecture, security, engineering, product, delivery and governance need to work together from the start.</p><h2><strong>A practical AI-DLC maturity path</strong></h2><p>The first step is not to automate everything.</p><p>The first step is to create clarity.</p><p>Start by mapping where AI is already being used across discovery, design, delivery, testing and governance. Most organisations will discover that AI adoption is already happening informally.</p><p>Then classify the usage.</p><p>Low-risk use cases might include summarising public documentation, drafting meeting notes or producing first-draft outlines.</p><p>Medium-risk use cases might include story refinement, test generation, documentation updates and architecture draft support.</p><p>High-risk use cases include code generation for critical systems, AI agents with tool access, security-sensitive workflows, customer data handling, regulated processes and decisions that affect financial, legal, privacy or operational outcomes.</p><p>Once the organisation understands the usage, it can define guardrails.</p><p>Not every AI use case needs the same control.</p><p>A draft meeting summary does not need the same review model as generated code in a payments platform. A public blog outline does not need the same governance as an AI agent with access to internal systems.</p><p>Good governance is proportionate.</p><p>That is how you avoid both extremes: uncontrolled adoption and governance theatre.</p><h2><strong>Architecture&#8217;s role in AI-DLC</strong></h2><p>Architecture should not try to own every AI tool.</p><p>That would be the wrong model.</p><p>Architecture should own the integrity of the lifecycle.</p><p>That means helping the organisation define where AI fits, what context it needs, what decisions it can support, what decisions it cannot own, what artefacts must be traceable, and what risks need controls.</p><p>Architecture should also help create the reusable patterns.</p><p>Prompt patterns. Design patterns. Review checklists. Architecture-as-code templates. Decision record formats. Control libraries. Context packs. Governance workflows.</p><p>This is where enterprise architecture can become more useful, not more bureaucratic.</p><p>The value is not in telling teams, &#8220;You need approval before using AI.&#8221;</p><p>The value is in giving teams a safe path to use AI without creating hidden risk.</p><p>That is a different kind of governance.</p><p>It is governance as enablement.</p><h2><strong>The strategic lesson</strong></h2><p>AI-DLC is not about replacing delivery teams.</p><p>It is about making delivery knowledge more structured, more reusable and more governed.</p><p>Used well, AI can help teams move faster with better evidence. It can surface risks earlier, connect decisions to implementation, generate stronger test coverage, improve documentation and make governance more continuous.</p><p>Used poorly, it can hide risk behind speed.</p><p>That is the delivery trap.</p><p>An organisation may believe it is becoming AI-native because teams are using AI tools. But AI-native delivery is not measured by tool usage. It is measured by whether the organisation can use AI while still protecting decision quality, architecture integrity, security, supportability and accountability.</p><p>The real question is not:</p><p>Are our teams using AI?</p><p>The better question is:</p><p>Can our delivery lifecycle absorb AI without losing control of the decisions that matter?</p><p>That is where AI-DLC becomes important.</p><p>Not as another framework.</p><p>As a way to make sure speed does not outrun ownership.</p><h2><strong>Subscribe to Designed to Scale</strong></h2><p>I write about enterprise architecture, AI systems, platform strategy and the real trade-offs behind technical decisions.</p><p>Subscribe to <strong><a href="https://newsletter.aminollahi.com/">Designed to Scale</a></strong> if you want practical architecture thinking for leaders building systems that need to survive real delivery, real growth and real operational pressure.</p><p></p><h2><strong>Read more from Designed to Scale</strong></h2><ul><li><p><a href="https://newsletter.aminollahi.com/p/ai-infrastructure-enterprise-strategy">AI Infrastructure Strategy for Enterprise Architects</a></p></li></ul><ul><li><p><a href="https://newsletter.aminollahi.com/p/business-analysis-vs-solution-architecture">Where Business Analysis Ends and Solution Architecture Begins</a></p></li></ul><ul><li><p><a href="https://newsletter.aminollahi.com/p/enterprise-architecture-anti-patterns">When Enterprise Architecture Goes Sideways: 4 Anti-patterns and Fixes</a></p></li></ul><ul><li><p><a href="https://newsletter.aminollahi.com/p/rapid-vs-daci-architecture-decisions-templates">RAPID vs DACI: The decision matrix every CIO should steal</a></p></li></ul><ul><li><p><a href="https://newsletter.aminollahi.com/p/operational-over-tooling-fix-tool-sprawl">Operational Over-Tooling: When Your Stack Becomes the Product</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Tap-and-Go: 1-Page Architecture & Control Checklist for CIOs]]></title><description><![CDATA[What every CIO should know about payment flows, PCI scope, and the controls that actually matter]]></description><link>https://newsletter.aminollahi.com/p/tap-and-go-plain-english-pci-dss-cio-checklist</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/tap-and-go-plain-english-pci-dss-cio-checklist</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 08 Mar 2026 21:03:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oyxS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oyxS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oyxS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!oyxS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!oyxS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!oyxS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oyxS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2311590,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/190162839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oyxS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!oyxS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!oyxS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!oyxS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9914e6-8ee6-401f-a09a-de72e47d04f3_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every tap-and-go payment is a trust event.</p><p>A customer taps a card, a phone, or a wearable and expects the transaction to feel effortless. Underneath that simplicity sits a chain of systems, networks, service providers, and decisions that must work securely in seconds. When they do, nobody notices. When they fail, the damage is rarely limited to one bug or one team. It becomes a trust problem, an operating problem, and often a board-level problem. That is the real business context behind PCI DSS. In your series, PCI DSS is framed not as an auditor&#8217;s checklist, but as disciplined engineering: segmentation, minimalism, encryption, accountability, and continuous vigilance.</p><p>Most CIOs do not need to memorise the standard. They do need to understand five things:</p><ol><li><p>how a payment flows in plain English</p></li><li><p>where card data appears</p></li><li><p>how scope quietly expands</p></li><li><p>what controls matter most</p></li><li><p>what questions leadership should ask before an incident forces the answer</p></li></ol><p>That is the purpose of this brief.</p><h2>Tap-and-Go in plain English</h2><p>At a high level, a card payment is simple.</p><p><strong>Customer taps card &#8594; merchant app or terminal &#8594; payment gateway or processor &#8594; card network and issuer &#8594; approval or decline returns</strong></p><p>The customer sees a beep and a receipt. The architecture team sees something else: data crossing trust boundaries. A single transaction may pass through multiple organisations and systems before a decision comes back. Each hop is a chance to expose cardholder data if the architecture is sloppy, if data is logged carelessly, or if connected systems absorb more information than they should. Part 1 of your series makes this point clearly: payment security is not abstract. It is about what happens to card data wherever it lives, moves, or hides.</p><p>This is why PCI DSS matters to CIOs. Not because the document is long, but because payment architecture tends to sprawl unless somebody at leadership level keeps asking the right questions.</p><h2>The architecture boundary that matters most</h2><p>When people hear &#8220;PCI&#8221;, they often jump straight to encryption, firewalls, or audit evidence. The more important starting point is scope.</p><p>Before you can protect anything, you need to know what data you are dealing with and where it exists. Part 2 of your series separates payment data into two categories: <strong>Cardholder Data (CHD)</strong>, such as PAN, cardholder name, and expiry date; and <strong>Sensitive Authentication Data (SAD)</strong>, such as CVV, PINs, or full track or chip data. CHD may be stored if properly protected. SAD must not be retained after authorisation, even if encrypted.</p><p>That distinction is not academic. It is the difference between a bounded payment environment and a contaminated estate.</p><p>The CIO question is not only, &#8220;Do we store card data?&#8221; The sharper question is, &#8220;Where can payment data appear today, including by accident?&#8221; Because scope expansion is rarely dramatic. It is usually quiet.</p><p>A developer turns on verbose logging.</p><p>A tester copies production transactions into QA.</p><p>An analytics feed consumes transaction payloads for &#8220;customer insights&#8221;.</p><p>A support workflow exposes more than masked data.</p><p>A monitoring platform indexes payloads that nobody meant to retain.</p><p>Each of those decisions can pull new systems into PCI scope. Your series treats this as one of the core lessons: the biggest PCI cost is often not the initial design, but the systems that become in scope because the architecture was not kept deliberately small.</p><p>That is why the most important architectural principle in payments is simple:</p><p><strong>Keep card data away from internal systems wherever you can.</strong></p><p>Tokenisation, strong encryption, segmentation, and careful provider choices all support that goal. Mature payment architecture is not about heroics. It is about keeping the island small.</p><h2>What PCI DSS really tests</h2><p>PCI DSS is often described as a compliance standard. In practice, it is also a test of operational discipline.</p><p>Part 3 of your series translates the standard into a clearer idea: protect payment data through strong design, disciplined operation, and continuous vigilance. That is a much better executive framing than &#8220;12 requirements&#8221;. The standard may be structured as twelve requirements across six families, but a CIO should see it as a way to test whether payment handling is deliberate or accidental.</p><p>A strong payment environment usually shows the same characteristics:</p><ul><li><p>clear boundaries</p></li><li><p>minimal data exposure</p></li><li><p>deliberate encryption and key handling</p></li><li><p>tightly controlled privileged access</p></li><li><p>secure change practices</p></li><li><p>monitoring that catches drift early</p></li><li><p>teams that understand their role in keeping scope small</p></li></ul><p>A weak environment usually shows the opposite:</p><ul><li><p>unclear ownership</p></li><li><p>logs and tools treated as harmless by default</p></li><li><p>PCI left to security alone</p></li><li><p>audit evidence assembled late</p></li><li><p>delivery speed bought at the cost of discipline</p></li></ul><p>That is why PCI maturity is as much about habits as it is about controls. Part 4 and the final review both reinforce that compliance does not live in the document library. It lives in everyday decisions, every commit, every test path, every deployment, and every exception someone thinks is temporary.</p><h2>The CIO&#8217;s 1-page architecture and control checklist</h2><p>Below is the version I would put in front of a CIO, not as an audit worksheet, but as a leadership checklist.</p><h3>1) Keep the payment estate small</h3><p>Can the team clearly show where card data enters, moves, and stops? Can they explain which systems are in scope today and why? If this map is vague, your risk is already higher than you think. Part 2 repeatedly emphasises that scope definition is the most overlooked part of compliance and the one that shapes how painful everything else becomes.</p><h3>2) Keep sensitive data out of general systems</h3><p>Can the team prove that CVV, PIN-related data, full track data, and other prohibited elements are not being retained after authorisation? Can they prove that logs, dashboards, tickets, support tools, and email templates do not expose more than they should? Your series is very clear here: some data can be protected and retained under strict controls; some data simply must not remain.</p><h3>3) Protect every hand-off</h3><p>Are transmissions encrypted across all relevant paths, not only internet-facing ones but internal APIs and service-to-service communications as well? Are certificates validated properly? Is storage protection deliberate rather than assumed? Part 3 notes that internal traffic is often wrongly treated as &#8220;safe&#8221;, even though encryption in transit matters there too.</p><h3>4) Restrict privileged access and make it attributable</h3><p>Who can access payment systems, secrets, logs, consoles, and supporting platforms? Is that access limited by role, reviewed regularly, and attributable to named individuals? Strong PCI posture requires accountability, not generic administrative convenience. That theme runs across Part 1, Part 3, and Part 4.</p><h3>5) Build controls into delivery, not after delivery</h3><p>Do architecture reviews, design patterns, code reviews, testing, release gates, and project plans include payment-control expectations from the start? Or does PCI only become visible near audit time? Your series consistently argues that good compliance is a natural extension of good engineering, not a clean-up exercise at the end.</p><h3>6) Detect scope drift early</h3><p>Would the organisation know quickly if PAN-like data appeared in logs, databases, reports, analytics feeds, or non-production environments? Part 4 recommends automated scans for PAN-like patterns and treating that detection capability as part of normal engineering hygiene, not an emergency response technique.</p><h3>7) Rehearse response, not just prevention</h3><p>If card data appeared tomorrow in a non-CDE system, what happens next? Who owns containment? Who verifies eradication? Who re-assesses scope? Who informs stakeholders? The final review in your series makes an important point: PCI competence is not just knowing the rules when calm, but applying them instinctively under deadline pressure and operational stress.</p><h2>Three red flags every CIO should recognise</h2><h3>Red flag 1: &#8220;We don&#8217;t store card data&#8221;</h3><p>This statement is often true in spirit and false in practice.</p><p>Many teams mean they do not deliberately store card data in a business database. That does not answer whether card data appears in debug logs, observability tooling, reports, email templates, message queues, or copied test datasets. Your series uses multiple examples of accidental contamination to show that unplanned exposure is still exposure.</p><h3>Red flag 2: PCI is treated as the security team&#8217;s job</h3><p>That is a governance smell.</p><p>Architects define boundaries. Developers decide what gets logged and transmitted. Testers validate masking and data hygiene. Project managers decide whether compliance work is visible or perpetually postponed. Part 4 makes this explicit: compliance happens in daily choices across roles, not inside one specialised function.</p><h3>Red flag 3: Audit readiness begins late</h3><p>When evidence gathering starts close to assessment time, it usually means controls are not embedded deeply enough in delivery.</p><p>Healthy environments produce evidence naturally because the underlying habits already exist: controlled access, repeatable builds, disciplined logging, scanning, segmentation, and clear ownership. Unhealthy ones produce frantic spreadsheet work. PCI is expensive when it is bolted on. It is much cheaper when it is built in. That is one of the clearest through-lines of the entire series.</p><h2>Three questions every CIO should ask this quarter</h2><p>The point of this brief is not to turn CIOs into assessors. It is to sharpen leadership questions.</p><p>Here are the three I would use.</p><p><strong>1. Where exactly can PAN appear today across production, logs, observability, support workflows, and non-production environments?</strong></p><p>A vague answer here is a genuine warning sign. Scope cannot be managed if data location is fuzzy.</p><p><strong>2. Which systems would become in scope tomorrow if a developer enabled verbose logging or if real data was copied into a test path?</strong></p><p>This question gets people thinking about blast radius, not just current-state diagrams. It also exposes whether teams understand contamination pathways.</p><p><strong>3. Who owns payment-scope reduction as an architecture objective, not just a compliance activity?</strong></p><p>If nobody owns scope reduction, scope expansion will happen by default. This is one of the most important strategic ideas in your series.</p><h2>The leadership takeaway</h2><p>The real lesson of PCI DSS is not that payment systems need more paperwork. It is that payment systems need sharper boundaries.</p><p>When payment architecture is deliberately small, heavily bounded, and handled with engineering discipline, compliance becomes more manageable. Audits become less painful. Incidents become less likely. Delivery becomes more predictable. When payment data is allowed to drift into logs, tooling, test environments, and loosely governed integrations, every future change becomes harder and every future assurance activity becomes more expensive. That is the operating logic running through all five pieces in the series.</p><p>So the best CIO question is not:</p><p><strong>&#8220;Are we compliant?&#8221;</strong></p><p>It is:</p><p><strong>&#8220;Can we prove our payment scope is as small and controlled as we think it is?&#8221;</strong></p><p>That question does more than prepare you for an assessment. It drives better architecture.</p><p></p><h2>Continue the payments series</h2><p><strong>This article is the canonical entry point for the full series.</strong></p><ol><li><p><strong>Foundations:</strong> <em><a href="https://newsletter.aminollahi.com/p/pci-dss-foundations-trust-secure-card-payments-1">The secret rulebook behind every tap-and-go payment (Part 1)</a></em><a href="https://newsletter.aminollahi.com/p/pci-dss-foundations-trust-secure-card-payments-1">, why PCI DSS exists and why trust matters.</a></p></li><li><p><strong>Data &amp; Scope:</strong> <em><a href="https://newsletter.aminollahi.com/p/pci-dss-data-scope-cardholder-environment">The secret rulebook behind every tap-and-go payment (Part 2)</a></em><a href="https://newsletter.aminollahi.com/p/pci-dss-data-scope-cardholder-environment">, what counts as cardholder data, what belongs in scope, and how scope expands.</a></p></li><li><p><strong>The 12 Requirements:</strong> <em><a href="https://newsletter.aminollahi.com/p/pci-dss-12-requirements-simplified-3">The secret rulebook behind every tap-and-go payment (Part 3)</a></em><a href="https://newsletter.aminollahi.com/p/pci-dss-12-requirements-simplified-3">, the control model in plain language.</a></p></li><li><p><strong>Roles &amp; Breach Lessons:</strong> <em><a href="https://newsletter.aminollahi.com/p/pci-dss-role-based-awareness-breach-lessons">The secret rulebook behind every tap-and-go payment (Part 4)</a></em><a href="https://newsletter.aminollahi.com/p/pci-dss-role-based-awareness-breach-lessons">, how everyday decisions turn theory into practice.</a></p></li><li><p><strong>Final Review:</strong> <em><a href="https://newsletter.aminollahi.com/p/pci-dss-final-review-integrative-challenge">PCI DSS Final Review: Real-World Scenarios, Scope Reduction &amp; the PCI Mindset</a></em><a href="https://newsletter.aminollahi.com/p/pci-dss-final-review-integrative-challenge">, scenarios, judgement, and the final mindset test.</a></p></li></ol>]]></content:encoded></item><item><title><![CDATA[RAPID vs DACI: The decision matrix every CIO should steal]]></title><description><![CDATA[A practical guide for architecture decisions, with copy-paste templates, meeting scripts, and an ADR-ready record.]]></description><link>https://newsletter.aminollahi.com/p/rapid-vs-daci-architecture-decisions-templates</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/rapid-vs-daci-architecture-decisions-templates</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 15 Feb 2026 20:00:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Si9D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Si9D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Si9D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Si9D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Si9D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Si9D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Si9D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:835994,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/187905957?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Si9D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Si9D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Si9D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Si9D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9563571f-8c86-4b7d-b80d-483e0f75a599_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><p>If you&#8217;re a CIO choosing RAPID vs DACI for architecture decisions, use the matrix above. Pick one model per decision, name the roles in 10 minutes, and write the decision down in an ADR so you don&#8217;t relitigate it next month. Because the fastest way to slow a tech organisation down isn&#8217;t a bad architecture choice, it&#8217;s a decision that never actually lands. You&#8217;ve seen the pattern: &#8220;just one more stakeholder&#8221;, &#8220;we need alignment&#8221;, &#8220;let&#8217;s socialise it&#8221;, and suddenly a simple call turns into a four-week saga. This article gives you a clean way to choose the right decision model, run the meeting, and ship the outcome without turning governance into theatre.</p><h2>The real problem isn&#8217;t the framework, it&#8217;s decision fog</h2><p>Decision fog is what happens when nobody can clearly answer three questions: What are we deciding? Who decides? When is it decided? In architecture, it shows up as endless pre-reads that nobody finishes, &#8220;quick alignments&#8221; that turn into debate clubs, silent vetoes that appear after the meeting, and surprise stakeholders joining late with &#8220;one more concern&#8221; that resets the whole conversation.</p><p>The cost isn&#8217;t just frustration. Decision fog slows delivery, pushes teams into building their own versions of &#8220;the standard&#8221;, and creates security gaps because controls get negotiated differently every time. Over a few quarters, it turns into platform drift: five logging patterns, three ways of doing auth, two pipelines &#8220;temporarily&#8221; bypassing checks, and an Architecture Review Board that feels like a weekly rerun.</p><p>Mini-story: I&#8217;ve sat in ARB sessions where the room is full of smart people and the doc is 20 pages long&#8230; and still, nobody can name the decider. Everyone has input, someone has a concern, the meeting ends with &#8220;we&#8217;ll take it offline&#8221;, and the team ships anyway because the sprint clock doesn&#8217;t care.</p><p>By the end of this, you&#8217;ll know when to use RAPID vs DACI, and you&#8217;ll have templates you can copy-paste into your next decision so it sticks.</p><h2>RAPID and DACI in one minute</h2><h3>RAPID (roles)</h3><p>RAPID is built for decisions where ownership and follow-through are the main risks. It forces you to name who proposes, who can block, who ships, and who makes the final call.</p><p>&#9;&#8226;&#9;R &#8212; Recommend: writes the proposal and options</p><p>&#9;&#8226;&#9;A &#8212; Agree: limited, explicit veto / approval points</p><p>&#9;&#8226;&#9;P &#8212; Perform: owns delivery and adoption</p><p>&#9;&#8226;&#9;I &#8212; Input: consulted experts</p><p>&#9;&#8226;&#9;D &#8212; Decide: final decision maker</p><h3>DACI (roles)</h3><p>DACI is built for decisions where coordination and clarity are the main risks. It makes the process visible: who drives it, who approves it, who contributes, and who just needs to know.</p><p>&#9;&#8226;&#9;D &#8212; Driver: runs the process, keeps it moving</p><p>&#9;&#8226;&#9;A &#8212; Approver: final call</p><p>&#9;&#8226;&#9;C &#8212; Contributors: provide input and work</p><p>&#9;&#8226;&#9;I &#8212; Informed: kept in the loop, not part of the decision</p><p>The difference in one line: RAPID makes execution ownership explicit; DACI makes facilitation and participation explicit.</p><h2>When RAPID wins for architecture decisions</h2><p>RAPID is your pick when the decision isn&#8217;t the hard part, getting it executed across teams is. It&#8217;s built for calls that need a clear decider, explicit guardrails, and a named owner who will actually make it real in delivery.</p><h3>Best-fit decision types (examples)</h3><p>Use RAPID for decisions like these:</p><p>&#9;&#8226;&#9;Cloud landing zone standards, guardrails, and exceptions</p><p>Things like network patterns, identity boundaries, logging baselines, and the &#8220;no, you can&#8217;t do that&#8221; rules, plus the exception process.</p><p>&#9;&#8226;&#9;&#8220;Build vs buy&#8221; for a shared platform capability</p><p>CI/CD platforms, observability stacks, API gateways, feature flag platforms, and secrets tooling choices that will shape teams for years.</p><p>&#9;&#8226;&#9;Security boundary calls</p><p>CDE scope, tokenisation boundaries, encryption approach, key management patterns, where secrets live, what&#8217;s allowed in which environment.</p><p>&#9;&#8226;&#9;Integration patterns that affect many squads</p><p>Sync vs async, eventing vs request/response, canonical models, contract standards, idempotency rules, the stuff that becomes organisational muscle memory.</p><h3>What to watch for (failure modes)</h3><p>RAPID works brilliantly&#8230; until people blur the roles.</p><p>&#9;&#8226;&#9;Too many &#8220;Agree&#8221; roles becomes a hidden committee</p><p>&#8220;Agree&#8221; is not &#8220;everyone who cares&#8221;. Keep it to true veto points (security, risk, legal) or you&#8217;ve rebuilt the problem you were trying to fix.</p><p>&#9;&#8226;&#9;The decider avoids deciding and turns &#8220;Input&#8221; into voting</p><p>If &#8220;Input&#8221; becomes a poll, you&#8217;ll get &#8220;alignment&#8221; and still no outcome. Input is advice, not a referendum.</p><p>&#9;&#8226;&#9;&#8220;Perform&#8221; isn&#8217;t named, so the decision never lands in production</p><p>This is the silent killer. If there&#8217;s no delivery owner, the decision becomes a document, not a change. RAPID only works when &#8220;Perform&#8221; is a real person with capacity and a plan.</p><h2>When DACI wins for architecture decisions</h2><p>DACI is the better tool when the main problem is coordination. You don&#8217;t need a heavyweight decision chain; you need one person to drive the process, pull in the right contributors, and land the outcome cleanly without everyone feeling like they have to attend every meeting.</p><h3>Best-fit decision types (examples)</h3><p>DACI works well for decisions like:</p><p>&#9;&#8226;&#9;API standards updates and versioning rules</p><p>Naming conventions, error formats, pagination rules, deprecation timelines, and decisions that need consistency and a simple way to socialise change.</p><p>&#9;&#8226;&#9;Reference architecture updates</p><p>Logging and tracing standards, CI/CD guardrails, &#8220;golden path&#8221; patterns where the goal is repeatability and predictable adoption.</p><p>&#9;&#8226;&#9;Repeated &#8220;same-shaped&#8221; decisions across squads</p><p>The sort of decisions you make every month: &#8220;Which pattern is the default?&#8221;, &#8220;What&#8217;s the exception path?&#8221;, &#8220;What&#8217;s the minimum bar?&#8221; If you&#8217;ll do it again, DACI keeps it lightweight.</p><p>&#9;&#8226;&#9;Tooling choices inside a lane</p><p>Observability, feature flags, testing strategy, secrets tooling, especially when it&#8217;s a platform capability that needs input from a few teams but shouldn&#8217;t become an all-hands debate.</p><h3>What to watch for (failure modes)</h3><p>DACI breaks down when the roles become symbolic.</p><p>&#9;&#8226;&#9;The Driver becomes a note-taker instead of a closer</p><p>The Driver&#8217;s job is to move the decision to a finish line: set deadlines, chase inputs, frame options, and force a call with the Approver. If the Driver is only capturing comments, you&#8217;ll loop forever.</p><p>&#9;&#8226;&#9;Too many Contributors, no quality bar for input</p><p>If everyone is a contributor, nobody is accountable. Keep contributors tight, and ask for input in a useful shape: risks, trade-offs, and a recommendation, not essay-length opinions.</p><p>&#9;&#8226;&#9;&#8220;Informed&#8221; stakeholders show up late and try to reopen the call</p><p>This is where DACI needs backbone. Informed means they get the decision, not a seat at the table. If someone comes in late with new information, treat it as a change request; don&#8217;t replay the whole decision.</p><h2>The &#8220;architecture decision types&#8221; checklist (pick a model fast)</h2><p>Use this like a quick diagnostic. Don&#8217;t overthink it. Count the &#8220;yes&#8221; answers and pick the model that matches the shape of the decision.</p><h3>Score RAPID if you answer &#8220;yes&#8221; to 3+</h3><p>&#9;&#8226;&#9;Does the decision require cross-team execution and adoption? (Multiple squads will need to change how they build, deploy, or integrate.)</p><p>&#9;&#8226;&#9;Are there true veto points (security, risk, legal, finance)? (Someone must be able to say &#8220;no&#8221; for real reasons, not preference.)</p><p>&#9;&#8226;&#9;Will this decision change delivery roadmaps or operational load? (New work across teams, new on-call burden, new runbooks, new costs.)</p><p>&#9;&#8226;&#9;Is there a high cost of rollback? (Undoing it later would be expensive, disruptive, or risky.)</p><h3>Score DACI if you answer &#8220;yes&#8221; to 3+</h3><p>&#9;&#8226;&#9;Is the main pain coordination and stakeholder clarity? (The decision itself isn&#8217;t scary,  the process keeps wobbling.)</p><p>&#9;&#8226;&#9;Is this a recurring decision pattern (you&#8217;ll do it again soon)? (Standards, templates, playbooks, &#8220;default patterns&#8221; that repeat.)</p><p>&#9;&#8226;&#9;Do you need one person to drive inputs and timeboxes? (The herding cats problem. You need a Driver who closes.)</p><p>&#9;&#8226;&#9;Is the change easy to roll forward with a clear standard? (You can iterate, refine, and improve without massive rollback risk.)</p><h2>Templates (copy-paste)</h2><p>These are designed to be fast. Paste them into Confluence/Notion/Google Docs, fill the blanks, and you&#8217;re ready to run the decision.</p><h3>Template 1: RAPID roles table (one decision)</h3><p><strong>Decision statement: </strong>[One sentence: what are we deciding?]</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!joTQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!joTQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 424w, https://substackcdn.com/image/fetch/$s_!joTQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 848w, https://substackcdn.com/image/fetch/$s_!joTQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 1272w, https://substackcdn.com/image/fetch/$s_!joTQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!joTQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png" width="722" height="406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:406,&quot;width&quot;:722,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:387442,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/187905957?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!joTQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 424w, https://substackcdn.com/image/fetch/$s_!joTQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 848w, https://substackcdn.com/image/fetch/$s_!joTQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 1272w, https://substackcdn.com/image/fetch/$s_!joTQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f248535-70f1-4f1a-a329-0952ca6d9e60_722x406.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Timebox + meeting date:</strong></p><ul><li><p>Input closes: DD MMM</p></li><li><p>Decision meeting: DD MMM (max 30&#8211;45 mins)</p></li><li><p>Decision locked in ADR by: DD MMM (same day)</p></li></ul><p><strong>&#8220;Agree&#8221; guardrails (what counts as a veto):</strong></p><ul><li><p>Veto is valid only if it&#8217;s tied to: security / legal / risk / finance policy</p></li><li><p>Must include: specific concern + impact + proposed mitigation/alternative</p></li><li><p>No &#8220;veto by vibe&#8221;</p></li></ul><p></p><h3>Template 2: DACI roles table (one decision)</h3><p><strong>Decision statement: </strong>[One sentence: what are we deciding?]</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W-a8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W-a8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 424w, https://substackcdn.com/image/fetch/$s_!W-a8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 848w, https://substackcdn.com/image/fetch/$s_!W-a8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 1272w, https://substackcdn.com/image/fetch/$s_!W-a8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!W-a8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png" width="721" height="406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:406,&quot;width&quot;:721,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:397456,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.aminollahi.com/i/187905957?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W-a8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 424w, https://substackcdn.com/image/fetch/$s_!W-a8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 848w, https://substackcdn.com/image/fetch/$s_!W-a8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 1272w, https://substackcdn.com/image/fetch/$s_!W-a8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F353dadb7-a5bc-4840-9d8c-c31cfa06d978_721x406.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Input deadline + decision date:</strong></p><ul><li><p>Input due: DD MMM (written input, max 5 bullets each)</p></li><li><p>Decision date: DD MMM</p></li><li><p>Publish outcome by: DD MMM (same day)</p></li></ul><p><strong>How the outcome will be shared:</strong></p><ul><li><p>Posted in: #architecture (Slack/Teams) + linked in Confluence</p></li><li><p>Recorded as: ADR-###</p></li><li><p>Rollout note: who changes what by when</p></li></ul><p></p><h3>Template 3: One-page architecture decision brief (works for both)</h3><p><strong>Title:</strong> Decision: [X]</p><p><strong>Owner:</strong> [Name]</p><p><strong>Decision date:</strong> DD MMM YYYY</p><p><strong>Framework:</strong> RAPID / DACI</p><p><strong>Context (3 bullets)</strong></p><ul><li><p>What&#8217;s happening / why now?</p></li><li><p>What&#8217;s broken or at risk?</p></li><li><p>What success looks like</p></li></ul><p><strong>Options (2&#8211;3 options, with trade-offs)</strong></p><ul><li><p><strong>Option A:</strong> &#8230;</p><ul><li><p>Pros: &#8230;</p></li><li><p>Cons: &#8230;</p></li><li><p>Risks: &#8230;</p></li></ul></li><li><p><strong>Option B:</strong> &#8230;</p><ul><li><p>Pros: &#8230;</p></li><li><p>Cons: &#8230;</p></li><li><p>Risks: &#8230;</p></li></ul></li><li><p><strong>Option C (if needed):</strong> &#8230;</p></li></ul><p><strong>Recommendation (1 paragraph)</strong></p><p>State the call, the core reason, and the trade-off you&#8217;re accepting.</p><p><strong>Risks and mitigations</strong></p><ul><li><p>Risk: &#8230; &#8594; Mitigation: &#8230;</p></li><li><p>Risk: &#8230; &#8594; Mitigation: &#8230;</p></li></ul><p><strong>Rollout plan (who, when, how we measure)</strong></p><ul><li><p>Who: Perform/Owners</p></li><li><p>When: milestones + dates</p></li><li><p>Measures: adoption %, incident rate, cost, latency, time-to-ship, etc.</p></li></ul><p><strong>Decision record (ADR link)</strong></p><ul><li><p>ADR-###: [link]</p></li></ul><p></p><h3>Template 4: ADR mini-template (so decisions stick)</h3><p><strong>Title:</strong> Decision: [X]</p><p><strong>Status:</strong> Proposed / Accepted / Superseded</p><p><strong>Date:</strong> DD MMM YYYY</p><p><strong>Owner:</strong> [Name]</p><p><strong>Decision</strong></p><p>What we decided, in 2&#8211;5 lines.</p><p><strong>Rationale (trade-offs)</strong></p><ul><li><p>Why this option over the others</p></li><li><p>What we&#8217;re optimising for</p></li><li><p>What we&#8217;re consciously accepting</p></li></ul><p><strong>Consequences</strong></p><ul><li><p>Positive: &#8230;</p></li><li><p>Negative: &#8230;</p></li><li><p>Follow-ups: &#8230; (tickets, migration plan, deprecation)</p></li></ul><p><strong>Links</strong></p><ul><li><p>Decision brief: &#8230;</p></li><li><p>Threat model / risk assessment: &#8230;</p></li><li><p>Diagrams: &#8230;</p></li><li><p>Related ADRs: &#8230;</p></li></ul><p></p><h2>Meeting scripts (short lines that actually work)</h2><p>These are the lines you can use in the room without sounding like you&#8217;re quoting a framework. Short, calm, and they move things forward.</p><p>When the meeting starts to spiral</p><p>&#9;&#8226;&#9;&#8220;We&#8217;re mixing input with decision. Who&#8217;s the decider for this call?&#8221;</p><p>&#9;&#8226;&#9;&#8220;Let&#8217;s timebox. What do you need to be comfortable, and by when?&#8221;</p><p>When someone wants a vote</p><p>&#9;&#8226;&#9;&#8220;Happy to take input. We&#8217;re trading off, not running a poll.&#8221;</p><p>When late stakeholders try to reopen it</p><p>&#9;&#8226;&#9;&#8220;If there&#8217;s new information, let&#8217;s log it as a change request against the ADR.&#8221;</p><p></p><h2>How to operationalise this in your architecture governance</h2><p>Frameworks don&#8217;t fix anything on their own. What changes behaviour is making the decision process repeatable and boring: same roles, same timeboxes, same place to record outcomes. That&#8217;s what enterprise architecture governance is meant to do: keep standards consistent, make decision rights visible, and stop every team inventing their own &#8220;rules&#8221; in isolation.</p><h3>Where it fits</h3><p>&#9;&#8226;&#9;Squad-level decisions (DACI most of the time)</p><p>Most day-to-day architecture calls are local: API patterns, small tooling choices, reference implementation updates. DACI keeps it lightweight and fast, with a clear Driver and Approver so it doesn&#8217;t stall.</p><p>&#9;&#8226;&#9;Cross-domain decisions (RAPID for clarity)</p><p>When a decision spans squads, platforms, or risk domains, RAPID keeps it clean: one decider, explicit veto points, and a named &#8220;Perform&#8221; who owns delivery and adoption.</p><p>&#9;&#8226;&#9;ARB as &#8220;red lines only&#8221; with explicit veto criteria</p><p>Treat the ARB like a safety rail, not a weekly court hearing. If something doesn&#8217;t hit a red line (security boundary, compliance, material risk, major cost), it shouldn&#8217;t need ARB airtime. And if it does hit a red line, the veto criteria should be written down so it&#8217;s predictable, not personal.</p><h3>Simple cadence</h3><p>&#9;&#8226;&#9;Weekly decision slot (30 mins)</p><p>One recurring slot for decisions that need cross-team visibility. Keep it tight: two decisions max, timeboxed discussion, clear outcome.</p><p>&#9;&#8226;&#9;Decisions written same day (ADR link)</p><p>Don&#8217;t rely on memory. Publish the decision and the &#8220;why&#8221; while it&#8217;s fresh, then link it everywhere the delivery teams will actually see it.</p><p>&#9;&#8226;&#9;Monthly review of exceptions and drift (standards vs reality)</p><p>This is where governance earns its keep. Review what teams are deviating from, why they needed exceptions, and whether the standard should change. Standards that don&#8217;t match reality don&#8217;t get followed, they get worked around.</p><h2>Close: your operating model in 5 lines</h2><p>&#9;&#8226;&#9;Pick one model per decision.</p><p>&#9;&#8226;&#9;Name roles in 10 minutes.</p><p>&#9;&#8226;&#9;Timebox inputs.</p><p>&#9;&#8226;&#9;Decide once, record it (ADR).</p><p>&#9;&#8226;&#9;Review exceptions, not old arguments.</p><p>If you want architecture playbooks you can run on Monday morning, subscribe to my newsletter.</p>]]></content:encoded></item><item><title><![CDATA[Operational Over-Tooling: When Your Stack Becomes the Product]]></title><description><![CDATA[How tool sprawl quietly breaks delivery, on-call, and governance, and the fixes that actually stick.]]></description><link>https://newsletter.aminollahi.com/p/operational-over-tooling-fix-tool-sprawl</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/operational-over-tooling-fix-tool-sprawl</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 08 Feb 2026 20:41:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qgC-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qgC-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qgC-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!qgC-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!qgC-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!qgC-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qgC-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:707825,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/187235435?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qgC-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!qgC-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!qgC-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!qgC-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abf6294-67d8-437b-91fc-d38bc4fcdee6_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Friday 4:47 pm. A payment flow is failing. Slack is loud. Someone drops a screenshot of a red dashboard&#8230; then another. Then a link to logs. Then a different log tool &#8220;because this service ships there&#8221;. Traces are in a third place. Alerts are coming from a bot only one person knows how to tune, and they&#8217;re away today. Twelve tabs later, you still don&#8217;t have a single story of what happened, just fragments, guesses, and rising heart rates.</p><p>This is operational over-tooling in the wild. It doesn&#8217;t just add licences; it adds <em>load</em>. It turns incident response into a scavenger hunt and makes &#8220;moving fast&#8221; feel like gambling.</p><p>Over-tooling is an architecture anti-pattern because it shifts complexity out of code and into day-to-day operations, where it taxes every release and every outage.</p><p>Before you buy &#8220;one more tool&#8221;, use this decision matrix. It forces the real question: keep, consolidate, or retire and who owns it.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HiID!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 424w, https://substackcdn.com/image/fetch/$s_!HiID!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 848w, https://substackcdn.com/image/fetch/$s_!HiID!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 1272w, https://substackcdn.com/image/fetch/$s_!HiID!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HiID!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png" width="1200" height="288.46153846153845" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:350,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:103667,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/187235435?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HiID!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 424w, https://substackcdn.com/image/fetch/$s_!HiID!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 848w, https://substackcdn.com/image/fetch/$s_!HiID!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 1272w, https://substackcdn.com/image/fetch/$s_!HiID!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab1f128-001c-4b2d-aa0a-6cc34dd09d52_2156x518.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><h2>What &#8220;operational over-tooling&#8221; looks like in real teams</h2><p>It usually starts with a good reason.</p><p>A team ships a new service. They need visibility fast, so they pick a monitoring tool they already know. Another team has a different stack and chooses something else. Security rolls out a scanner &#8220;just for coverage&#8221;. A platform team adds a CI/CD tool to unblock delivery. None of these choices are reckless. In isolation, they&#8217;re sensible.</p><p>Then a Friday incident happens and all the sensible choices collide.</p><p>You&#8217;re in the war room and the questions sound familiar: <em>&#8220;Where are the logs for this one?&#8221;</em> <em>&#8220;Which dashboard is the source of truth?&#8221;</em> <em>&#8220;Why is the alert firing when the trace looks clean?&#8221;</em> Someone shares a link, then another, then another. The team isn&#8217;t debugging the payment flow anymore they&#8217;re debugging the tooling around the payment flow.</p><p>That&#8217;s operational over-tooling: when your stack becomes a second system you have to operate before you can operate the product.</p><h3>The symptoms you can feel (not just measure)</h3><ul><li><p><strong>Same job, three tools.</strong> Monitoring is split, CI/CD is split, feature flags are split. Everyone has a reason. Nobody has the full picture.</p></li><li><p><strong>Incidents become a scavenger hunt.</strong> Logs live here, traces live there, alerts come from somewhere else, and correlation becomes guesswork.</p></li><li><p><strong>&#8220;Hidden&#8221; work becomes the real work.</strong> Agents, connectors, pipelines, retention rules, token rotation, webhook retries. It&#8217;s not visible on the roadmap, but it eats the roadmap anyway.</p></li><li><p><strong>Ownership gets blurry.</strong> When something breaks, the question isn&#8217;t &#8220;how do we fix it?&#8221; &#8212; it&#8217;s &#8220;who even owns this tool?&#8221;</p></li><li><p><strong>Tooling turns into a career moat.</strong> One person can tune the alerting bot, manage the permissions model, or fix the pipeline when it jams. When they&#8217;re away, progress slows to a crawl.</p></li></ul><p>The giveaway is emotional, not technical: teams start sounding tired. They stop trusting signals. They default to &#8220;ask Sam, he knows the system&#8221;. That&#8217;s not resilience, that&#8217;s dependency.</p><h3>The root cause (it&#8217;s rarely the tool)</h3><p>This pattern doesn&#8217;t exist because teams are bad at picking tools. It exists because the organisation is bad at owning them.</p><ul><li><p><strong>Procurement-by-pain.</strong> The last incident hurts, so the next purchase feels urgent. Speed beats design, and the tool ships faster than the operating model.</p></li><li><p><strong>Local optimisation beats global outcomes.</strong> Each team improves their corner, but the company pays the integration and support tax across every corner.</p></li><li><p><strong>No thin-core standards.</strong> Without a few non-negotiables (identity, observability, policy enforcement), every new tool becomes its own mini-platform with its own rules.</p></li><li><p><strong>Decisions don&#8217;t get revisited.</strong> Tool choices get made once, then slide into auto-renew. The cost isn&#8217;t just the licence, it&#8217;s the permanent operational burden.</p></li></ul><p>If you&#8217;ve ever watched an incident drift from &#8220;what&#8217;s failing?&#8221; to &#8220;which tool do we trust?&#8221;, you&#8217;ve seen the anti-pattern. And it&#8217;s exactly why the decision matrix matters: it forces a clear call to keep, consolidate, or retire before &#8220;one more tool&#8221; becomes &#8220;one more system to run.&#8221;</p><h2>Why it&#8217;s an architecture anti-pattern (not a shopping problem)</h2><p>If this was just a shopping problem, you could solve it with a better shortlist, a sharper RFP, and a hard negotiation. But operational over-tooling keeps coming back because it&#8217;s really an architecture and operating-model problem: you&#8217;re creating more moving parts than your organisation can reliably run.</p><h3>It increases operational load faster than delivery speed</h3><p>Every tool promises &#8220;faster delivery&#8221;. Then it quietly adds a new slice of operational reality that someone has to own, secure, integrate, monitor, upgrade, and pay for. Multiply that by a few teams, a few years, and a few &#8220;temporary&#8221; exceptions, and your stack becomes a second product.</p><p>Each new tool tends to add:</p><ul><li><p><strong>another auth model</strong> (roles, groups, service accounts, break-glass access)</p></li><li><p><strong>another data model</strong> (naming, tagging, schemas, retention rules)</p></li><li><p><strong>another billing line</strong> (renewals, tier creep, usage surprises)</p></li><li><p><strong>another integration surface</strong> (agents, APIs, webhooks, connectors, plugins)</p></li><li><p><strong>another failure mode</strong> (outages, rate limits, misconfig, noisy alerts)</p></li></ul><p>That&#8217;s why tool-centric DevOps without the operating model creates failure and fatigue. You don&#8217;t just buy software, you buy ongoing work, plus a new way to fail.</p><h3>It slows incident response</h3><p>Over-tooling doesn&#8217;t usually break the system directly. It breaks the <em>story</em> of the system.</p><p>When telemetry is split across tools, teams lose the ability to correlate signals quickly: the alert fires in one place, the logs are somewhere else, traces are incomplete, and dashboards disagree. Time-to-detect stretches because nobody trusts the first signal. Time-to-recover stretches because you&#8217;re stitching together fragments under pressure.</p><p>The result looks like this: more Slack messages, more screenshots, more &#8220;can someone check X?&#8221; and less actual diagnosis.</p><h3>It makes governance either heavy or useless</h3><p>Tool sprawl pushes governance into two bad extremes.</p><ul><li><p><strong>Heavy governance:</strong> endless approvals and architecture reviews because nobody trusts the stack&#8217;s risk profile anymore. Every tool request becomes a debate about identity, data access, auditability, and support because those basics aren&#8217;t standardised.</p></li><li><p><strong>Useless governance:</strong> &#8220;teams can choose anything&#8221; until a breach, audit finding, or major outage forces a reset. Then you swing back to heavy governance, usually with a blunt consolidation program and a lot of resentment.</p></li></ul><p>A healthy setup sits in the middle: a thin core of standards, clear ownership, and a simple decision loop. Without that, you&#8217;re not managing tools, you&#8217;re managing chaos with invoices attached.</p><h2>The &#8220;keep vs consolidate&#8221; decision framework</h2><p>Here&#8217;s the mistake most organisations make: they treat every tool decision like a feature decision. One team has a need, they pick a tool, and the business moves on. That works right up until the tool becomes shared infrastructure, then you&#8217;re no longer choosing a product, you&#8217;re choosing an operating burden.</p><p>So instead of arguing &#8220;Tool A vs Tool B&#8221;, make the first decision simpler: <strong>is this a local choice, or does it belong on the platform?</strong> Once you agree on the lane, the vendor discussion becomes much easier (and a lot less political).</p><h3>Scannable checklist (copy/paste ready)</h3><p>A tool can be a <strong>local choice</strong> only if <strong>all</strong> of these are true:</p><ul><li><p><strong>No customer data classification surprises</strong></p><p>It doesn&#8217;t store, process, or expose sensitive data in ways that will bite you later.</p></li><li><p><strong>No privileged access outside standard IAM</strong></p><p>It uses your normal identity patterns (SSO, MFA, least privilege). No rogue admin accounts.</p></li><li><p><strong>No dependency in incident response</strong></p><p>If the tool is down, you can still debug production. It&#8217;s helpful, not required.</p></li><li><p><strong>Can be replaced inside a sprint</strong></p><p>Low switching cost. If you had to rip it out, you wouldn&#8217;t need a six-month program.</p></li><li><p><strong>Has a named owner and a clear exit plan</strong></p><p>Someone is accountable for cost, security, and lifecycle, and you already know how you&#8217;d leave.</p></li></ul><p><strong>If any answer is &#8220;no&#8221;, it goes into the platform lane.</strong> That means: standardise it, support it properly, and make it part of the &#8220;thin core&#8221; rather than another optional add-on.</p><p>And yes, this ties straight back to the matrix at the top: <strong>local choice = keep</strong>, <strong>platform lane = consolidate</strong>, and anything that fails both (duplicate, low value, no owner) is a <strong>retire</strong> candidate.</p><div><hr></div><p>Relatd Artciles:</p><ul><li><p><a href="https://www.aminollahi.com/p/stop-design-by-committee-architecture-governance">Stop &#8220;Design by Committee&#8221; in Architecture</a></p></li><li><p><a href="https://www.aminollahi.com/p/bad-data-virus-antipattern-fix">Bad Data Virus: The Enterprise Anti-Pattern That Breaks Trust</a></p></li><li><p><a href="https://www.aminollahi.com/p/fix-swiss-army-knife-integration-anti-pattern">Stop Building the Swiss Army Knife Integration Hub</a></p></li></ul><div><hr></div><p></p><h2>Fix pattern 1: Build a thin core, then give teams freedom above it</h2><p>The fastest way to shrink tool sprawl without starting a civil war is to separate <em>standards</em> from <em>preferences</em>. Most teams don&#8217;t actually want unlimited choice. They want freedom where it helps delivery and consistency where inconsistency hurts.</p><p>That&#8217;s the &#8220;thin core + autonomy above&#8221; move: lock down the few foundations that make systems safe and operable, then let teams innovate on top without reinventing the basics every time.</p><h3>The non-negotiables (thin core)</h3><p>These are the pieces that should feel boring because boring is reliable:</p><ul><li><p><strong>Identity and access patterns</strong></p><p>SSO, MFA, least privilege, consistent service account handling, break-glass rules.</p></li><li><p><strong>Observability standards</strong></p><p>Common fields, correlation IDs, agreed retention, and one standard pipeline for logs/metrics/traces.</p></li><li><p><strong>Deployment and rollback guardrails</strong></p><p>Release patterns, rollback expectations, feature toggle rules, and what &#8220;safe deploy&#8221; means here.</p></li><li><p><strong>Policy enforcement points</strong></p><p>Where controls live: gateway for ingress policy, runtime for service controls, CI for build-time checks.</p></li></ul><p>This pattern shows up again and again because it reduces sprawl without freezing delivery. Teams can still move quickly, they&#8217;re just moving quickly on rails instead of inventing a new train track each sprint.</p><h3>What autonomy actually means (examples)</h3><p>Autonomy isn&#8217;t &#8220;do whatever you want&#8221;. It&#8217;s &#8220;choose freely inside safe boundaries&#8221;.</p><ul><li><p>Teams can choose <strong>UI dashboards</strong>, but <strong>logs must land in the standard pipeline</strong> with the standard fields.</p></li><li><p>Teams can choose <strong>feature flag products</strong>, but <strong>kill switches follow one pattern</strong> (naming, ownership, where they&#8217;re documented).</p></li><li><p>Teams can <strong>experiment</strong>, but experiments <strong>expire unless adopted</strong> (time-boxed, owned, and reviewed).</p></li></ul><p>The goal isn&#8217;t to win an argument about tools. It&#8217;s to make sure every tool choice doesn&#8217;t quietly become a company-wide dependency.</p><p></p><h2>Fix pattern 2: Platform engineering and an Internal Developer Platform (IDP)</h2><p>If thin core is the rules, an IDP is the shortcut.</p><p>Most tool sprawl happens because teams are trying to assemble a working delivery and operations experience from scratch: build, deploy, observe, secure, repeat. An Internal Developer Platform bundles those capabilities into something that&#8217;s supported, consistent, and easy to adopt.</p><h3>What an IDP does (plain English)</h3><ul><li><p><strong>Provides &#8220;golden paths&#8221;</strong> that make the right thing the easy thing</p><p>Create a service, get standard logging, safe deploy, sensible alerts, and a runbook template without begging three teams.</p></li><li><p><strong>Reduces tool sprawl</strong> by packaging a supported set of capabilities</p><p>Build, deploy, and observe with defaults that work and integrations that are already done.</p></li><li><p><strong>Treats developer experience as a product</strong></p><p>There&#8217;s a roadmap, a support model, clear ownership, and feedback loops, not a pile of scripts nobody owns.</p></li></ul><h3>The trap to avoid</h3><ul><li><p><strong>Don&#8217;t build a &#8220;platform of platforms&#8221;</strong></p><p>If your platform needs a platform team to operate it, you&#8217;ve recreated the problem with a nicer logo.</p></li><li><p><strong>Keep it small, opinionated, and measured by adoption</strong></p><p>Adoption is the score. If teams avoid it, it&#8217;s not a platform, it&#8217;s a side project.</p></li></ul><p></p><h2>Fix pattern 3: A lightweight governance loop that prevents relapse</h2><p>Even with a thin core and a platform, sprawl returns if decisions don&#8217;t have a lifecycle. The fix isn&#8217;t heavy approvals. It&#8217;s a simple loop that keeps visibility and ownership alive.</p><h3>The Tooling Decision Record (TDR) in one page</h3><p>Think of this as the smallest artefact that stops &#8220;we bought it because reasons&#8221;.</p><p>Include:</p><ul><li><p><strong>What problem are we solving?</strong></p></li><li><p><strong>Who owns it?</strong> (service owner + platform owner)</p></li><li><p><strong>What is the exit plan?</strong></p></li><li><p><strong>What data and access does it touch?</strong></p></li><li><p><strong>What is the success measure?</strong> (adoption, incident reduction, cost)</p></li></ul><p>If the TDR can&#8217;t be written clearly, that&#8217;s usually a signal the tool choice isn&#8217;t clear either.</p><h3>Quarterly rationalisation cadence (30 minutes per domain)</h3><p>This isn&#8217;t a big program. It&#8217;s maintenance &#8212; like brushing your teeth.</p><ul><li><p><strong>Keep / consolidate / retire review</strong></p></li><li><p><strong>Licence true-up</strong></p></li><li><p><strong>Security review refresh</strong></p></li><li><p><strong>Decommission plan for &#8220;retire&#8221;</strong></p></li></ul><p>This matches what actually works in sprawl governance: visibility, ownership, regular review, and renewal control without turning every request into theatre.</p><p></p><h2>Fix pattern 4: Use AI to reduce friction, not to multiply tools</h2><p>AI can either cut your operational overhead or become the newest category of sprawl. The difference is whether AI is used to <em>simplify workflows</em> or to <em>introduce new platforms</em> with new permissions, new data paths, and new vendors.</p><h3>Where AI helps immediately</h3><ul><li><p><strong>Draft TDRs</strong> from a template (problem statement, risks, owners, exit plan)</p></li><li><p><strong>Generate migration runbooks and test checklists</strong> (so consolidation doesn&#8217;t stall)</p></li><li><p><strong>Summarise incidents</strong> across Slack + tickets + telemetry (faster shared understanding)</p></li></ul><h3>Where AI makes sprawl worse</h3><ul><li><p><strong>&#8220;AI tool of the week&#8221; procurement</strong></p><p>Every team trialling a different assistant with a different data policy.</p></li><li><p><strong>Multiple copilots with different permissions and data paths</strong></p><p>Now you&#8217;ve got duplicated tooling <em>and</em> a mess of access, retention, and compliance questions.</p></li></ul><p>Use AI like power steering, not a new engine. If it makes your stack bigger, noisier, or harder to govern, it&#8217;s not helping; it&#8217;s just moving the burden somewhere else.</p><h2>A practical 30/60/90-day plan (doable, not heroic)</h2><p>You don&#8217;t fix tool sprawl with a big-bang program and a six-month steering committee. You fix it by stopping new sprawl, consolidating one capability end-to-end, then locking in a lightweight loop so you don&#8217;t slide back.</p><h3>First 30 days: stop the bleeding</h3><p>Your goal in the first month is simple: <strong>no more surprise tooling</strong>.</p><ul><li><p><strong>Freeze new tools in the platform lane unless a TDR exists</strong></p><p>If a tool affects identity, customer data, or incident response, it needs a one-page Tooling Decision Record. No TDR, no new dependency.</p></li><li><p><strong>Inventory the top 20 tools by pain, not by popularity</strong></p><p>Rank them by:</p><ul><li><p>cost (licence + hidden support effort)</p></li><li><p>access risk (privileged roles, data exposure)</p></li><li><p>incident dependency (do you need it to debug production?)</p></li></ul></li><li><p><strong>Pick two consolidation targets</strong></p><p>Start with the two areas that create the most fragmentation:</p><ul><li><p><strong>observability</strong> (logs/metrics/traces/alerts)</p></li><li><p><strong>CI/CD</strong> (pipelines, releases, rollback patterns)</p></li></ul></li></ul><p>Keep it focused. Two targets is realistic. Ten targets is theatre.</p><h3><strong>60 days: consolidate one lane</strong></h3><p>Now you do one consolidation properly. Not &#8220;we chose a tool&#8221;. Real consolidation: standards, migration, ownership.</p><ul><li><p><strong>Choose the standard for one capability</strong></p><p>Example: logging + tracing correlation. Define the required fields, correlation IDs, and the source of truth pipeline.</p></li><li><p><strong>Migrate the highest pain services first</strong></p><p>Don&#8217;t start with the easiest. Start with the services that:</p><ul><li><p>page people most often</p></li><li><p>block incident response</p></li><li><p>have the messiest &#8220;where do I look?&#8221; story</p></li></ul></li></ul><p>That&#8217;s how you earn trust fast.</p><ul><li><p><strong>Publish golden path docs and a support model</strong></p><p>One page that answers:</p><ul><li><p>how to onboard a service in under an hour</p></li><li><p>what&#8217;s supported (and what&#8217;s not)</p></li><li><p>who to contact when it breaks</p></li></ul></li></ul><p>If teams can&#8217;t adopt it quickly, they won&#8217;t adopt it at all.</p><h3>90 days: lock in governance</h3><p>By day 90, you want the system to stay clean without constant heroics from you.</p><ul><li><p><strong>Run a quarterly rationalisation meeting</strong></p><p>30 minutes per domain: keep, consolidate, retire. Decisions recorded. Owners assigned.</p></li><li><p><strong>Require a TDR for renewals</strong></p><p>This is where you win. Tool sprawl often survives because renewals are automatic. Make renewals earn their place.</p></li><li><p><strong>Make exceptions expire unless renewed</strong></p><p>Every exception has an end date. If it&#8217;s still valuable, renew it with a fresh TDR. If not, it disappears quietly, which is exactly what you want.</p></li></ul><p>The aim isn&#8217;t to have fewer tools for the sake of it. It&#8217;s to have fewer <em>operational stories</em> your team needs to remember at 4:47 pm on a Friday.</p><h2>The takeaway</h2><p>Back to Friday 4:47pm. The payment flow didn&#8217;t fail because the team lacked tools. It failed because, in the moment that mattered, nobody could see a single, trusted story. The signals were scattered, the dashboards disagreed, and the &#8220;one person who knows the bot&#8221; wasn&#8217;t online. That&#8217;s the real cost of over-tooling: not licences, but minutes and mental load when pressure is high.</p><p>Here&#8217;s the truth in one line: <strong>the fix is less about tools, more about ownership and boundaries.</strong> Your best engineers shouldn&#8217;t be doing archaeology across dashboards.</p><p><strong>If you want architecture playbooks you can run on Monday, subscribe to my newsletter.</strong></p>]]></content:encoded></item><item><title><![CDATA[Stop Building the Swiss Army Knife Integration Hub]]></title><description><![CDATA[Use this CIO-ready matrix to pick API, events, iPaaS or ESB, then unwind the &#8220;do-everything&#8221; layer safely.]]></description><link>https://newsletter.aminollahi.com/p/fix-swiss-army-knife-integration-anti-pattern</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/fix-swiss-army-knife-integration-anti-pattern</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 01 Feb 2026 20:22:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!chbJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!chbJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!chbJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!chbJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!chbJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!chbJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!chbJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:757926,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/186259266?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!chbJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!chbJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!chbJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!chbJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f21a4-0a8c-443a-b1a2-90e54e8b2e93_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Integration decision matrix</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cwAA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cwAA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 424w, https://substackcdn.com/image/fetch/$s_!cwAA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 848w, https://substackcdn.com/image/fetch/$s_!cwAA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 1272w, https://substackcdn.com/image/fetch/$s_!cwAA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cwAA!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png" width="1200" height="464.71081307627827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:462,&quot;width&quot;:1193,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:91880,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/186259266?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cwAA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 424w, https://substackcdn.com/image/fetch/$s_!cwAA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 848w, https://substackcdn.com/image/fetch/$s_!cwAA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 1272w, https://substackcdn.com/image/fetch/$s_!cwAA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35092c4f-80dd-471f-9827-b392b2120a07_1193x462.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Quick &#8220;Swiss Army knife&#8221; risk check</h3><p>Tick <strong>4+</strong> and you&#8217;re in the danger zone:</p><ul><li><p>One integration service owns routing <strong>and</strong> mapping <strong>and</strong> retries <strong>and</strong> auth <strong>and</strong> business rules</p></li><li><p>Every new project says: &#8220;Just add it to the hub&#8221;</p></li><li><p>Changes require a central team queue and a lot of coordination</p></li><li><p>A single deploy can break multiple unrelated domains</p></li><li><p>Teams can&#8217;t ship value without waiting on the hub</p></li><li><p>The hub keeps adding &#8220;optional fields&#8221; and &#8220;one endpoint for everything&#8221;</p></li></ul><p></p><p>If you&#8217;re a CIO choosing <strong>API gateway vs iPaaS/ESB vs event broker</strong>, use the matrix above and make the call in 10 minutes. Then hold the line. The fastest way to slow delivery is letting one integration layer turn into the Swiss Army knife that &#8220;handles everything&#8221;. It feels tidy at first &#8212; one team, one platform, one place to plug things in. Then the queue forms. Every change needs a coordination meeting. One deploy breaks three unrelated journeys. Suddenly your integration layer isn&#8217;t enabling delivery; it&#8217;s rationing it. And the worst part? Domain ownership quietly slips away, because the real business logic ends up living in &#8220;the hub&#8221; instead of the teams that should own it.</p><h3>The story: how the &#8220;helpful&#8221; integration hub became the choke point</h3><p>It usually starts with good intentions. Two systems need to talk, the timeline is tight, and one team offers a &#8220;temporary&#8221; integration service to get things moving. It&#8217;s a sensible call: one connector, one mapping, one place to manage retries. It ships. People celebrate. Then the next project comes along and someone says, &#8220;Just run it through the integration hub; it&#8217;s already there.&#8221; And then the next one. Before long, the hub isn&#8217;t a shortcut; it&#8217;s the default.</p><p>Six months later, a small change goes out on a Thursday afternoon. It looks harmless. By Friday morning, five domains are dealing with failures they didn&#8217;t cause and can&#8217;t fix. Nobody wants to deploy without a war room. That&#8217;s when the nickname sticks: &#8220;The Octopus&#8221;, because everything runs through it,&#8202;&#8202;and when it thrashes, everyone gets dragged under.</p><h4>The moment you realise you&#8217;re stuck</h4><p>The hub becomes a queue, not a platform. Instead of teams owning their integrations, they file tickets and wait. Integration turns into a central dependency, and delivery slows to the speed of the busiest team.</p><h3>What the Swiss Army knife integration anti-pattern looks like</h3><p>You can spot it without reading a single line of code. It shows up in day-to-day behaviour, team habits, and the shape of the interfaces.</p><ul><li><p><strong>Interface bloat:</strong> &#8220;kitchen sink&#8221; endpoints appear in one API that tries to serve every consumer. Schemas grow into mega-objects with endless optional fields because &#8220;someone might need it later&#8221;.</p></li><li><p><strong>Responsibility bloat:</strong> the same component starts enforcing security policy, transforming payloads, orchestrating multi-step workflows, and quietly embedding domain rules (&#8220;if VIP customer then&#8230;&#8221;).</p></li><li><p><strong>Coupling bloat:</strong> every system&#8217;s release plan becomes dependent on the hub&#8217;s release cycle. Teams stop shipping independently because the integration layer is now the shared choke point.</p></li><li><p><strong>Operational bloat:</strong> retries, dead-letter handling, monitoring dashboards, data fixes, and one-off scripts all pile into the same codebase. The hub becomes a production support tool as much as a runtime.</p></li></ul><p>The net effect is predictable: changes feel risky, testing becomes expensive, and the blast radius grows. People start avoiding improvements because &#8220;touching the hub&#8221; is a career-limiting move.</p><h4>Why it happens in enterprises (not because people are silly)</h4><p>It&#8217;s usually a rational response to pressure. The pitch is simple: a central team will be faster and more consistent. Vendor platforms reinforce it by selling &#8220;do-everything&#8221; toolkits that make it easy to add one more connector, one more flow, one more rule. And without a clear split between <strong>gateway duties</strong> (policy and traffic management) and <strong>integration runtime duties</strong> (bounded orchestration and transformation), everything collapses into one place by default.</p><h2>The real costs (and why they sneak up on you)</h2><p>The Swiss Army knife hub doesn&#8217;t fail loudly on day one. It fails slowly, in ways that look like &#8220;just normal delivery friction&#8221; until you add it up.</p><ul><li><p><strong>Delivery:</strong> every change waits for the hub team. Even small tweaks carry a coordination tax: extra ceremonies, extra handovers, extra testing across journeys that don&#8217;t belong together. Your best engineers spend time negotiating the queue instead of shipping outcomes.</p></li><li><p><strong>Reliability:</strong> the blast radius grows. One bad deploy, one misconfigured retry policy, one schema tweak, and suddenly multiple flows across unrelated domains degrade at once. Incidents become harder to isolate because the hub sits in the middle of everything.</p></li><li><p><strong>Security and compliance:</strong> the hub becomes a privilege magnet. It needs secrets, tokens, elevated network access, and broad permissions &#8220;because it integrates with everything&#8221;. That&#8217;s exactly how you end up with a single component that&#8217;s both operationally critical and over-privileged.</p></li><li><p><strong>Architecture drift:</strong> business rules leak into integration glue. The hub starts deciding things domains should own, and your domain boundaries get fuzzy. Over time, the real system behaviour lives in flows and mappings, not in the services that should be accountable.</p></li></ul><h3>A quick smell test</h3><p>Ask two questions:</p><ul><li><p>Can a domain ship value without changing the hub?</p></li><li><p>Do we have more than one way to integrate, and do we know why?</p></li></ul><h2>Root causes in plain English</h2><p>This anti-pattern isn&#8217;t a tooling problem. It&#8217;s what happens when a few small decisions stack up and nobody draws a boundary early.</p><p>First, <strong>integration concerns get mixed with product decisions</strong>. Instead of domains owning what their data means and how it should change, the hub starts making those calls in mappings and flows. Second, <strong>&#8220;reuse&#8221; gets pushed too far</strong>. Someone introduces a mega canonical model to &#8220;standardise everything&#8221;, and now every team must contort their reality to fit one schema. That&#8217;s not reuse; that&#8217;s a shared constraint you&#8217;ll pay for forever.</p><p>Third, there&#8217;s <strong>no product thinking</strong>. The hub has users (engineering teams), but it rarely has a clear service promise, a catalogue of what it offers, or a roadmap that&#8217;s aligned with business priorities. Finally, a <strong>governance gap</strong> seals the deal: there are no lightweight rules that stop the hub from swallowing the next use case.</p><p>That&#8217;s the Swiss Army knife in a sentence: <strong>one interface trying to serve every use case and becoming worse for all of them.</strong></p><h3>The fix: split the problem into lanes</h3><p>The way out is to stop arguing about &#8220;the right tool&#8221; and start agreeing on <strong>lanes</strong>. Each lane has a job, a boundary, and a failure mode you actively avoid. When you split the problem this way, you get a clean target state: teams can choose the right pattern for the job, ship independently, and you stop feeding the Octopus.</p><h4>Lane 1: API gateway is for policy and proxy</h4><p>Use the gateway for <strong>traffic management</strong>, not business logic:</p><ul><li><p>AuthN/AuthZ, rate limits, WAF, routing, versioning, observability hooks</p></li><li><p>Avoid turning it into a &#8220;brain&#8221;. If the gateway is doing payload mapping, workflow branching, or domain decisions, it&#8217;s no longer a gateway; it&#8217;s a brittle integration service with a shiny badge.</p></li></ul><h4>Lane 2: Integration runtime is for bounded orchestration</h4><p>This is where <strong>connectors and workflow steps</strong> belong:</p><ul><li><p>Transformations, protocol translation, retries, and multi-step orchestration</p></li><li><p>The key rule: orchestration must have an <strong>owner</strong> and a <strong>domain boundary</strong>. If it&#8217;s &#8220;enterprise-wide glue&#8221;, you&#8217;re rebuilding the same anti-pattern with a different logo.</p></li></ul><h4>Lane 3: Event broker is for decoupling and fan-out</h4><p>Use events to publish facts and let teams subscribe by need:</p><ul><li><p>Publish &#8220;what happened&#8221;, not &#8220;how to do the job&#8221;</p></li><li><p>Keep event contracts lean and versioned, avoid fat events that try to carry the whole world. And be honest: event-driven isn&#8217;t magic. It needs discipline around contracts, idempotency, and observability.</p></li></ul><h4>Lane 4: Data pipelines are for analytics, not operational flow</h4><p>Keep reporting and backfills in <strong>data plumbing</strong>, not runtime integration. Separate them so operational reliability and analytics flexibility don&#8217;t sabotage each other.</p><h3>A practical 30/60/90-day plan to unwind the hub</h3><p>You don&#8217;t fix a Swiss Army knife hub by &#8220;rewriting integration&#8221;. You fix it by <strong>stopping the bleeding</strong>, then moving work out in small, safe cuts. The goal in 90 days isn&#8217;t perfection, it&#8217;s momentum, lower risk, and a clear path where teams can ship without asking permission.</p><h4>Days 0&#8211;30: Stabilise and put fences up</h4><p>Start with a simple rule: no new &#8220;just add it to the hub&#8221; work unless it passes the decision matrix. That one move reduces future debt straight away. Next, make the hub visible. Pick the critical flows (the ones that wake people up at 2 am) and create <strong>one dashboard per flow</strong>. Add basic SLOs so you can say what &#8220;good&#8221; looks like. Then improve change safety: introduce contract tests for the top integrations and agree on a basic rollback plan. If you can&#8217;t roll back quickly, you&#8217;ll never move fast safely.</p><h4>Days 31&#8211;60: Split by ownership, not by technology</h4><p>Identify the top five flows by business criticality and map who should own the behaviour. Then carve out <strong>thin adapters</strong> at the edge and move domain rules back into the services that own the outcomes. This is the big mindset shift: you&#8217;re not &#8220;modernising integration&#8221;, you&#8217;re restoring accountability. Introduce a lightweight integration catalogue: what exists, who owns it, how changes happen, and where the contracts live.</p><h4>Days 61&#8211;90: Migrate, retire, and measure</h4><p>Replace one end-to-end workflow with either events or bounded orchestration, then retire what it replaced. Decommission at least one hub capability, a connector, a mega mapping, or a reporting job. Finally, track the metrics that prove it&#8217;s working: lead time, incident rate, blast radius, and deployment frequency.</p><p></p><h2>Governance that prevents the next Swiss Army knife</h2><p>Governance only works if it&#8217;s light enough to survive contact with delivery. You don&#8217;t need a committee for every integration; you need a few clear rules that make the right choice the easy choice.</p><p>Start with a <strong>one-page integration decision record</strong>. It should capture two things: <em>why this pattern</em> (API, runtime, events, or data pipeline) and <em>who owns it</em> end-to-end. No owner, no build. Next, publish simple <strong>guardrails</strong>: the gateway does policy and proxy, the integration runtime does bounded orchestration, and events are for fan-out. Make these rules visible and repeat them until they become habit.</p><p>Then lock in a practical <strong>definition of done</strong>: contracts are versioned, observability exists at the flow level, and ownership is explicit (including who&#8217;s on the hook when it breaks). Finally, use <strong>AI where it helps</strong>: let it draft mappings, generate contract tests, and propose runbooks, but keep human approval in the loop. That gives you speed without handing control to the tool or the hub.</p><p>&#8220;The Octopus&#8221; wasn&#8217;t evil. It was overloaded to be a gateway, an orchestrator, a translator, a rules engine, and a support console all at once. Once you see that, the fix becomes clear: this is less about swapping tools and more about restoring <strong>ownership and boundaries</strong> so teams can ship safely without a central choke point.</p><p>If you want more run-it-on-Monday architecture and governance playbooks (no fluff), subscribe to my newsletter.</p>]]></content:encoded></item><item><title><![CDATA[Bad Data Virus: The Enterprise Anti-Pattern That Breaks Trust]]></title><description><![CDATA[How to spot it early, contain the spread, and build &#8220;quality by design&#8221; with contracts, tests, and observability.]]></description><link>https://newsletter.aminollahi.com/p/bad-data-virus-antipattern-fix</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/bad-data-virus-antipattern-fix</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 11 Jan 2026 19:43:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CGQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6CGQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6CGQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6CGQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6CGQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6CGQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6CGQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2563483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/184080541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6CGQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6CGQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6CGQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6CGQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F250853e9-f80a-4c61-b9d7-65923895dd52_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>If you&#8217;re a CIO choosing centralised data clean-up vs distributed data ownership, use the matrix below.</p><p>Bad data doesn&#8217;t fail loudly. It quietly rewrites decisions.</p><p>Most teams only notice when the numbers don&#8217;t match in an exec meeting or when a customer asks the awkward question first.</p><p>In 7 minutes you&#8217;ll have a way to diagnose, contain, and prevent it.</p><h2>The CIO matrix: &#8220;Clean-up squad&#8221; vs &#8220;Quality by design&#8221;</h2><p>Most leaders don&#8217;t choose between these because they love one approach. They choose because something has already gone wrong: a board pack number is challenged, a revenue metric shifts overnight, or three dashboards tell three stories.</p><p>This matrix is a quick way to decide what you need <strong>first:</strong>  a fast containment move, or a structural fix that stops repeat outbreaks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0jjZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0jjZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 424w, https://substackcdn.com/image/fetch/$s_!0jjZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 848w, https://substackcdn.com/image/fetch/$s_!0jjZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 1272w, https://substackcdn.com/image/fetch/$s_!0jjZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0jjZ!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png" width="1200" height="492.85714285714283" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:598,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:156842,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/184080541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0jjZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 424w, https://substackcdn.com/image/fetch/$s_!0jjZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 848w, https://substackcdn.com/image/fetch/$s_!0jjZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 1272w, https://substackcdn.com/image/fetch/$s_!0jjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e31915-bdf0-45f5-a6aa-9bbb8b690668_2026x832.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now the honest bit: most enterprises need both. Option A is what you do when the house is already smoky. It buys you time and restores confidence. Option B is what stops the next fire by making quality part of normal delivery, not an after-hours rescue mission. A contains today&#8217;s outbreak. B is the vaccine.</p><h3>10-point &#8220;Bad Data Virus&#8221; early warning checklist</h3><p>If you want the fastest diagnosis, don&#8217;t start with tooling. Start with behaviour. When a bad data virus is spreading, you&#8217;ll see it in how people act before you see it in logs.</p><p>Read this like a quick health check. If you&#8217;re nodding along to three or more, you&#8217;re not dealing with a one-off defect&#8202;&#8212;&#8202;you&#8217;re dealing with a pattern.</p><ul><li><p>Same metric, three dashboards, three answers (and everyone has a &#8220;reason&#8221;)</p></li><li><p>Teams can&#8217;t name the source of truth, only the dashboard they prefer</p></li><li><p>Manual CSV &#8220;fixes&#8221; happen right before every exec meeting</p></li><li><p>No shared definitions for key fields (customer, active, churn)</p></li><li><p>Pipelines succeed, but the numbers are wrong, green jobs, red outcomes</p></li><li><p>Schema changes ship without notice, and downstream teams find out the hard way</p></li><li><p>Data quality checks exist, but nobody watches alerts (or alerts are ignored noise)</p></li><li><p>Ownership is unclear (producer vs consumer blame cycle)</p></li><li><p>AI/ML outputs drift and nobody can trace which inputs changed</p></li><li><p>The data team is stuck doing ad-hoc reconciliations instead of building capability</p></li></ul><p>If this feels familiar, good news: you don&#8217;t need a miracle platform. You need a clean decision on containment vs prevention and then a simple operating model that makes quality repeatable.</p><h2>What the &#8220;Bad Data Virus&#8221; anti-pattern looks like</h2><h3>The pattern in one sentence</h3><p>Bad data enters quietly, gets copied everywhere, and becomes &#8220;truth&#8221; through repetition.</p><h3>Why &#8220;virus&#8221; is the right metaphor</h3><p>It rarely arrives as a big, obvious failure. It slips in as a missing field, a duplicated record, a &#8220;temporary&#8221; mapping, or a late change to a definition. Then it multiplies. ETL jobs pick it up, extracts ship it to other teams, reverse ETL pushes it back into operational tools, and downstream marts bake it into KPIs. Before long, it&#8217;s in spreadsheets, board decks, and AI features &#8212; and unwinding it becomes harder than building it correctly in the first place.</p><h3>The cost isn&#8217;t just wrong numbers</h3><p>The real damage is behavioural. Decision latency creeps in: teams hesitate, double-check, and delay because they stop trusting what they see. Then governance overhead follows: more meetings, more approvals, more &#8220;alignment&#8221;, and less delivery.</p><p>A useful anchor: data quality is simply fitness for use.</p><h2>How bad data spreads in modern architectures</h2><h3>Three common transmission paths</h3><p>Bad data doesn&#8217;t need a fancy failure mode. It spreads through normal delivery work, especially when speed wins, and nobody owns the &#8220;downstream blast radius&#8221;.</p><p><strong>Path 1: Operational systems &#8594; analytics.</strong></p><p>Source systems aren&#8217;t built for clean reporting. Capture rules vary by team, fields get reused for new meanings, and updates arrive late. Add duplicate keys, merges, and backfills, and you get dashboards that look stable until they suddenly aren&#8217;t.</p><p><strong>Path 2: &#8220;Helpful&#8221; transformations.</strong></p><p>This is where good intentions turn into long-term pain. Someone patches a logic gap in a pipeline: a mapping table, a filter, a &#8220;quick fix&#8221; to match finance numbers. If that logic isn&#8217;t documented and tested, it becomes invisible business policy, and it quietly diverges from what the business thinks is happening.</p><p><strong>Path 3: Self-serve scale.</strong></p><p>Self-serve analytics is great, until it isn&#8217;t. More consumers means more extracts, more copies, and more versions of &#8220;truth&#8221;. Two teams can start from the same dataset and still ship conflicting definitions of the same metric.</p><h3>The silent killer: breaking changes</h3><p>Schema drift and incompatible changes break consumers even when pipelines are &#8220;green&#8221;. The jobs run. The tables load. The numbers are just wrong, or worse, wrong in a way that looks plausible.</p><h2>Root causes CIOs should look for</h2><h3>Ownership gaps</h3><p>The most common root cause is also the least technical: nobody can clearly say who owns quality for a dataset that matters. &#8220;The data team owns quality&#8221; sounds tidy, but it becomes a loophole. Producers change fields, tweak definitions, or ship new logic to hit delivery dates. Consumers then discover the impact days later, usually when a KPI shifts and someone starts asking for screenshots. The blast radius lands downstream, and everyone argues about whose job it is to fix it.</p><h3>No contracts, no tests, no alarms</h3><p>When there&#8217;s no contract, expectations live in people&#8217;s heads: what a field means, what &#8220;complete&#8221; looks like, how fresh the data should be. That&#8217;s tribal knowledge, not an engineering system. Without tests, regressions slip through even the boring ones like not-null, uniqueness, and referential integrity. And without observability, you don&#8217;t find out early. You find out in the exec meeting, with a graph on screen and zero time to explain it.</p><h3>Misaligned incentives</h3><p>Most organisations reward feature shipping. Data correctness is treated as &#8220;maintenance&#8221; until it becomes a crisis. When incentives don&#8217;t match the risk, bad data becomes predictable.</p><h2>The fix in three moves: contain, treat, vaccinate</h2><h3>1) Contain the outbreak (what to do this month)</h3><p>When trust is already wobbling, your first job is to stop the spread. Pick the KPI that&#8217;s causing the most noise (usually revenue, active customers, churn, or risk exposure) and quarantine the metric. Name one &#8220;official&#8221; dataset for that KPI and freeze definition changes for a short window. You&#8217;re not trying to solve all data quality this month you&#8217;re buying stability so people can make decisions again.</p><p>Next, create a lightweight data incident loop. Keep it simple: P0 for exec metrics and board reporting, P1 for customer impact, P2 for internal issues. Use one channel and one comms owner, so updates aren&#8217;t scattered across Slack threads, email chains, and meetings. If you can&#8217;t say who owns comms, you don&#8217;t have an incident process; you have chaos with a spreadsheet.</p><p>Finally, stop the worst replication. The fastest way bad data becomes permanent is through uncontrolled extracts and &#8220;shadow marts&#8221; that nobody admits owning. For critical domains, temporarily block or gate ad-hoc exports and duplicate marts until the official source is stable.</p><h3>2) Treat the source (what to do this quarter)</h3><p>Containment is triage. Treatment is where you remove the root cause. Start by defining &#8220;fitness for use&#8221; for each critical dataset in plain language. Don&#8217;t overthink it, just be explicit about the basics: accuracy, completeness, timeliness, uniqueness, and consistency.</p><p>Then implement automated checks where the data lives, not three layers downstream. Begin with high-signal tests that catch real breakages early: not-null, uniqueness, accepted values, and relationship tests (think referential integrity between key tables). Add richer rules only when you need them, using a validation framework like Great Expectations, especially for complex expectations or anomaly-style checks.</p><p>Make quality visible. Track it like a product metric, not a one-off project. A weekly scorecard for the top 10 datasets visible to both producers and consumers changes behaviour fast. When teams see quality trends, they stop treating data issues as &#8220;random&#8221; and start treating them as engineering.</p><h3>3) Vaccinate with &#8220;quality by design&#8221; (what to do over 6&#8211;12 months)</h3><p>Now you prevent recurrence. For critical data products, introduce data contracts and treat them like APIs for data: schema, constraints, freshness expectations, and change rules. This is how you stop &#8220;surprise&#8221; from becoming normal.</p><p>Back it with schema evolution discipline. Backwards compatible changes by default. Breaking changes require explicit versioning and a migration plan. No exceptions for &#8220;it&#8217;s just analytics&#8221;.</p><p>Add data observability so you learn early: monitor freshness, volume, distribution shifts, lineage, and failures. If the first time you notice a problem is the monthly exec pack, you&#8217;re running blind.</p><p>Finally, build governance teams can live with: federated guardrails, not a central bottleneck. Set minimum controls and clear decision rights, then let teams move fast inside the rails.</p><h2>A practical operating model (so this doesn&#8217;t become theatre)</h2><h3>Decision rights (keep it crisp)</h3><p>Most data programs fail for the same reason: everyone agrees quality matters, then nobody has the pen when a trade-off shows up. The fix is boring, clear decision rights.</p><ul><li><p>Data Producer owns correctness at the source. They control schema changes and they&#8217;re accountable for contract compliance when they publish data.</p></li><li><p>Data Product Owner owns definitions, SLAs, and consumer outcomes. They decide what &#8220;active customer&#8221; means and what &#8220;good enough&#8221; looks like for freshness and completeness.</p></li><li><p>Platform Team provides the paved road: tooling, pipelines, observability, templates, and patterns that make the right thing the easy thing.</p></li><li><p>Governance sets minimum controls and arbitrates red lines (the small number of issues where risk or compliance means you can&#8217;t &#8220;just ship it&#8221;).</p></li></ul><h3>Two rules that stop 80% of pain</h3><ul><li><p>No breaking changes without a version and a migration plan.</p></li><li><p>No tier 1 KPI without tests and a clear alerting path (who gets paged, and what &#8220;action&#8221; looks like).</p></li></ul><h2>30/60/90-day plan (actionable, not heroic)</h2><p>Days 0&#8211;30: Pick three exec KPIs and declare a single source of truth for each. Write the definition in plain English and publish it where teams actually look. Add basic tests (not-null, uniqueness, accepted values) and route alerts to one channel with a named owner, so issues don&#8217;t die in silence.</p><p>Days 31&#8211;60: Publish data contracts for those KPIs: schema, constraints, freshness targets, and change rules. Put a schema change workflow in place (review + versioning) so breaking changes can&#8217;t sneak in as &#8220;just a small tweak&#8221;.</p><p>Days 61&#8211;90: Expand the approach to the top 10 datasets that drive decisions. Start measuring reliability like an engineering outcome: incidents per month, MTTR, and a simple &#8220;trust score&#8221; your execs can understand.</p><h2>Closing</h2><p>Bad data isn&#8217;t a tooling problem first. It&#8217;s an ownership and change-management problem that tools can enforce. Containment buys you time. Contracts and tests buy you trust, and trust is what lets teams move fast without weekly reconciliation theatre.</p><p>If you want more run-it-on-Monday architecture and governance playbooks, subscribe to the newsletter.</p>]]></content:encoded></item><item><title><![CDATA[Stop “Design by Committee” in Architecture]]></title><description><![CDATA[Keep stakeholders involved without turning every decision into a meeting series]]></description><link>https://newsletter.aminollahi.com/p/stop-design-by-committee-architecture-governance</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/stop-design-by-committee-architecture-governance</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 04 Jan 2026 19:23:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tVCA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tVCA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tVCA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tVCA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tVCA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tVCA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tVCA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:446379,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/183194604?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tVCA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tVCA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tVCA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tVCA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df7b4aa-fbe2-42cf-96ee-29deb52e1eff_1536x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MpZ0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MpZ0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 424w, https://substackcdn.com/image/fetch/$s_!MpZ0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 848w, https://substackcdn.com/image/fetch/$s_!MpZ0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 1272w, https://substackcdn.com/image/fetch/$s_!MpZ0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MpZ0!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png" width="1200" height="393.9593908629442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:2587,&quot;width&quot;:7880,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:882813,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/183194604?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F087e36e0-81e7-4e0b-9eb5-5c10c201faba_7880x2587.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MpZ0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 424w, https://substackcdn.com/image/fetch/$s_!MpZ0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 848w, https://substackcdn.com/image/fetch/$s_!MpZ0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 1272w, https://substackcdn.com/image/fetch/$s_!MpZ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbac17ab-97f3-4152-8b1f-515a0fa5fea7_7880x2587.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;re a CIO choosing between &#8216;the architecture review board as the gate&#8217; and &#8216;empowered teams with guardrails&#8217;, use the matrix above and pick your default. If decisions keep bouncing between recurring meetings, and every stakeholder feels like they get a vote, you&#8217;re living the design-by-committee anti-pattern. The good news is you don&#8217;t need a dictatorship to fix it. You need clear decision rights, a fast path for input, and a simple way to record the call so you stop re-arguing the same topics next quarter.</p><h2>What &#8220;design by committee&#8221; looks like in real architecture work</h2><p>You don&#8217;t usually see it written on a Jira ticket. You feel it. The calendar fills up, the same diagram gets re-litigated, and the &#8220;decision&#8221; turns into a series of polite compromises that nobody&#8217;s proud to own. If you&#8217;ve ever left a meeting thinking <em>&#8220;Wait&#8230; did we actually decide anything?&#8221;</em> this is what you&#8217;re dealing with.</p><h3>The symptoms (you can almost hear them)</h3><ul><li><p><strong>Every decision needs &#8220;one more meeting&#8221;</strong></p><p>There&#8217;s always another stakeholder to &#8220;bring along&#8221;, another review to &#8220;sanity check&#8221;, another forum to &#8220;socialise the approach&#8221;.</p></li><li><p><strong>Architecture turns into negotiation, not trade-offs</strong></p><p>Instead of cost, risk, operability, and time-to-value, you&#8217;re bartering preferences: &#8220;If we add your requirement, can we keep mine?&#8221;</p></li><li><p><strong>Solutions grow features to satisfy everyone, then satisfy no one</strong></p><p>You end up with the &#8220;camel&#8221; solution: heavy, awkward, and expensive to run. It technically includes everyone&#8217;s request, yet it misses the actual goal.</p></li><li><p><strong>People leave meetings unclear on who decided what</strong></p><p>There&#8217;s a vague sense of alignment, but no decision owner, no decision record, and no next step that anyone can quote later.</p></li><li><p><strong>The system gets complex, inconsistent, and hard to operate</strong></p><p>More moving parts, more exceptions, more bespoke integrations. The on-call experience gets worse, and delivery slows because every change has hidden dependencies.</p></li></ul><h3>Why it happens (good intent, bad mechanics)</h3><p>Most teams don&#8217;t choose this on purpose. It&#8217;s usually a well-meaning response to pressure.</p><ul><li><p><strong>Leaders want alignment and risk reduction</strong></p><p>When the blast radius is high (security, compliance, shared platforms), leaders understandably want visibility and confidence.</p></li><li><p><strong>Decision rights are unclear, so consensus becomes the fallback</strong></p><p>If nobody can point to a decision owner, the group defaults to agreement-by-exhaustion. It feels safe, but it&#8217;s slow, and it avoids accountability.</p></li><li><p><strong>The architecture review board (ARB) becomes the place where work goes to slow down</strong></p><p>Instead of a focused escalation path for &#8220;red line&#8221; decisions, the ARB becomes a queue. Teams start designing for approval, not for outcomes.</p></li></ul><h2>The hidden cost: speed, coherence, and accountability</h2><p>Design by committee feels polite. Everyone gets heard, risk feels &#8220;managed&#8221;, and nobody walks out upset. Then the bill arrives in delivery time, system quality, and ownership. You don&#8217;t notice it in a single sprint. You notice it when the same decisions resurface, the platform drifts, and teams stop taking initiative because initiative gets punished with meetings.</p><h3>Speed tax</h3><ul><li><p><strong>Lead time balloons because feedback is serial, not parallel</strong></p><p>One review triggers another review, which triggers another stakeholder request. Each loop adds days, sometimes weeks, and none of it shows up cleanly on your delivery dashboard.</p></li><li><p><strong>Teams wait for permission instead of shipping evidence</strong></p><p>When the default is &#8220;get everyone to agree first&#8221;, teams stop running small experiments. They stop bringing options with data. They bring slide decks and hope for a blessing. That&#8217;s how architecture governance turns into a queue instead of a capability.</p></li></ul><h3>Coherence tax</h3><ul><li><p><strong>&#8220;Camel architecture&#8221;: stitched compromises, no unifying direction</strong></p><p>You end up with a solution built from negotiated pieces rather than a clear set of trade-offs. The result usually has extra components, inconsistent patterns, and awkward seams. It works&#8230; until it has to scale, or be operated at 2am, or be secured properly.</p></li></ul><h3>Accountability tax</h3><ul><li><p><strong>When everyone is involved, no one owns the outcome</strong></p><p>A group can create a decision, but it can&#8217;t carry responsibility the way a named decision owner can. When the outcome is messy, you get finger-pointing or silence &#8212; neither helps the next decision.</p></li><li><p><strong>Decisions are hard to revisit because the reasoning was never captured</strong></p><p>Without an Architecture Decision Record (ADR) or similar, you can&#8217;t tell whether you&#8217;re reversing a bad call or repeating a good one in a new context. So you re-run the debate from scratch, with a slightly different cast, and call it &#8220;alignment&#8221;.</p></li></ul><h2>The fix in one sentence</h2><p>Separate <strong>input</strong> from <strong>authority</strong>, then <strong>record the decision</strong> so you can move fast without losing control.</p><p>Here&#8217;s what that looks like in practice: you still invite strong input from security, platforms, data, finance, and delivery, but you don&#8217;t pretend it&#8217;s a vote. You name a <strong>decision owner</strong>, timebox the consultation, make the call, and capture the &#8220;why&#8221; in an <strong>Architecture Decision Record (ADR)</strong>. That&#8217;s lightweight governance: fewer meetings, clearer decision rights, and far less d&#233;j&#224; vu the next time the topic comes up.</p><p></p><h2>Step-by-step playbook to kill design by committee (without killing collaboration)</h2><p>You don&#8217;t fix this by telling people to &#8220;be decisive&#8221;. You fix it by changing the operating system: decision types, decision rights, and a simple record of what got decided. Here&#8217;s a playbook you can roll out in a week, then tighten over the next month.</p><h3>1) Define decision types and the escalation line</h3><p>Start by sorting decisions into three buckets. This stops the ARB (or &#8220;governance&#8221;) being dragged into everything.</p><ul><li><p><strong>Team decisions</strong>: local, reversible, low blast radius</p><p>Examples: library choice for a service, minor refactors, feature flags, internal API shaping.</p></li><li><p><strong>Platform decisions</strong>: shared, hard to reverse, multi-team impact</p><p>Examples: standard logging pattern, event contracts, shared CI/CD approach, platform authentication method.</p></li><li><p><strong>Enterprise &#8220;red line&#8221; decisions</strong>: security, regulatory, major spend</p><p>Examples: anything touching regulated data, material vendor lock-in, new payment rails, material cost commitments.</p></li></ul><p><strong>One rule that changes everything:</strong> if it&#8217;s a <strong>red line</strong> decision, it gets a <strong>timeboxed review</strong>. Everything else stays with the team. No exceptions &#8220;because someone&#8217;s curious&#8221;.</p><h3>2) Assign decision rights using DACI or RAPID (pick one)</h3><p>If you want to stop consensus-by-default, you need a decision model people can remember on a busy Tuesday.</p><ul><li><p><strong>Use DACI</strong> when you want a simple model that most teams can apply without training wheels.</p><p>(Driver, Approver, Contributors, Informed.)</p></li><li><p><strong>Use RAPID</strong> when decisions span layers and you need clarity on who recommends versus who decides.</p><p>(Recommend, Agree, Perform, Input, Decide.)</p></li></ul><p><strong>Quick callout:</strong> <strong>RACI</strong> often fails for decisions because it&#8217;s task-flavoured. It tells you who&#8217;s &#8220;responsible&#8221; for work, not who has the authority to decide when opinions clash.</p><h3>3) Install a single &#8220;decision owner&#8221; per decision</h3><p>This is the moment everything speeds up.</p><ul><li><p><strong>One person is accountable for the call</strong></p><p>Name them. Put it on the doc. If you can&#8217;t name them, you&#8217;ve found the real problem.</p></li><li><p><strong>Many people can be consulted</strong></p><p>Consultation is encouraged. Chaos isn&#8217;t.</p></li><li><p><strong>Input is a gift, not a vote</strong></p><p>People should feel heard. They shouldn&#8217;t feel entitled to a veto.</p></li></ul><p>A practical line to use: <em>&#8220;We&#8217;ll take input widely, then the decision owner will make the call and record it.&#8221;</em></p><h3>4) Use a one-page pre-read so meetings become decisions</h3><p>Most architecture meetings fail before they start: no pre-read, no options, no trade-offs, no decision needed. Fix that and half your committee problem disappears.</p><p><strong>One-page pre-read template</strong></p><ul><li><p><strong>Context and constraints</strong> (what&#8217;s true, what&#8217;s non-negotiable)</p></li><li><p><strong>Options</strong> (2&#8211;3 max, if you bring 7, you&#8217;re not ready)</p></li><li><p><strong>Trade-offs</strong> (cost, risk, time, operability)</p></li><li><p><strong>Recommendation</strong> and <strong>&#8220;what would change my mind?&#8221;</strong></p></li><li><p><strong>Decision needed today</strong> (yes/no plus the selected option)</p></li></ul><p>If the pre-read isn&#8217;t ready, don&#8217;t hold the meeting. You&#8217;re just creating calendar noise.</p><h3>5) Record the decision with ADRs (lightweight, searchable)</h3><p>This is how you stop re-arguing decisions every quarter.</p><ul><li><p><strong>Store ADRs with the code or in a shared repo</strong></p><p>Somewhere searchable, versioned, and easy to link.</p></li><li><p><strong>Keep them short:</strong> context, decision, consequences</p><p>You&#8217;re writing a memory aid, not a novel.</p></li><li><p><strong>Link ADRs to principles and standards when relevant</strong></p><p>That way the decision isn&#8217;t floating on vibes; it&#8217;s connected to the operating model.</p></li></ul><p>The win here is cultural: teams learn that decisions are made once, recorded, and revisited only when assumptions change.</p><h3>6) Turn the ARB into a service, not a gate</h3><p>An ARB can be useful. The problem is when it becomes the choke point.</p><ul><li><p><strong>Office hours for early advice</strong></p><p>Bring rough ideas early and get directional feedback before it becomes a political document.</p></li><li><p><strong>Async review with a 48-hour SLA for red line items</strong></p><p>Give teams a predictable path. Timebox the feedback. Move on.</p></li><li><p><strong>Publish &#8220;approved patterns&#8221;</strong></p><p>If you keep re-reviewing the same choices (logging, auth, secrets, networking), publish the patterns and let teams reuse them without re-litigating.</p></li></ul><p>Net result: better architecture governance, less theatre, and teams that can actually deliver.</p><h2>A simple checklist you can copy </h2><p>Paste this into your project space and use it at the start of any architecture discussion. It&#8217;s a quick way to spot when a healthy consult is turning into committee mode.</p><h3>&#8220;Are we drifting into committee mode?&#8221;</h3><ul><li><p><strong>Do we know who decides (a name, not a group)?</strong></p></li><li><p><strong>Is the decision reversible? If yes, why is it stuck?</strong></p></li><li><p><strong>Are we debating preferences instead of constraints (security, cost, time, operability)?</strong></p></li><li><p><strong>Are we missing architecturally significant requirements</strong> (security, latency, audit, availability, data retention)?</p></li><li><p><strong>Did we timebox consultation</strong> (who gets input, by when)?</p></li><li><p><strong>Will we publish an ADR within 24 hours of the decision</strong> (context, decision, consequences)?</p></li></ul><h2>What to say in the room </h2><p>You don&#8217;t need to &#8220;win&#8221; the meeting. You just need to steer it back to a decision. These lines keep things respectful while still moving forward.</p><h3>When the meeting starts to spiral</h3><ul><li><p>&#8220;Let&#8217;s separate concerns from decisions. What input do we still need, and who&#8217;s deciding today?&#8221;</p></li><li><p>&#8220;If we can&#8217;t name the decision owner, that&#8217;s the real problem.&#8221;</p></li><li><p>&#8220;Quick reset: are we here to explore options, or to decide one?&#8221;</p></li></ul><h3>When someone wants a vote</h3><ul><li><p>&#8220;Happy to take your input. We&#8217;re not voting, we&#8217;re trading off.&#8221;</p></li><li><p>&#8220;Let&#8217;s capture your concern as a constraint. Then the decision owner can weigh it with the others.&#8221;</p></li><li><p>&#8220;If this is a veto, say it plainly; otherwise, it&#8217;s input.&#8221;</p></li></ul><h3>When someone raises risk late</h3><ul><li><p>&#8220;Great catch. Is this a red line risk? If yes, we escalate. If no, we document and proceed.&#8221;</p></li><li><p>&#8220;What would need to be true for this risk to be acceptable?&#8221;</p></li><li><p>&#8220;Let&#8217;s record it in the ADR with a mitigation and an owner, so it doesn&#8217;t vanish after this call.&#8221;</p></li></ul><p></p><h3>Closing: your operating model in 3 bullets</h3><ul><li><p><strong>Clear decision rights</strong> (DACI or RAPID), with <strong>named decision owners</strong></p></li><li><p><strong>Lightweight governance</strong> (ARB for <strong>red lines only</strong>, timeboxed so delivery keeps moving)</p></li><li><p><strong>ADRs as memory</strong> (so you don&#8217;t re-litigate the past every quarter)</p></li></ul><p></p><p>If you want more patterns like this, follow and <strong>subscribe to the newsletter</strong>. I share practical architecture operating models you can run on Monday morning.</p>]]></content:encoded></item><item><title><![CDATA[When Enterprise Architecture Goes Sideways: 4 Anti-patterns and Fixes]]></title><description><![CDATA[Practical warning signs, metrics, and governance moves you can use this quarter.]]></description><link>https://newsletter.aminollahi.com/p/enterprise-architecture-anti-patterns</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/enterprise-architecture-anti-patterns</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 21 Dec 2025 19:14:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CB34!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CB34!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CB34!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!CB34!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!CB34!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!CB34!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CB34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:749196,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/182220696?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CB34!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!CB34!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!CB34!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!CB34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40af1c58-f8b3-4b79-bade-b72935995a8f_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>A team I worked with did everything &#8220;right&#8221; on paper. We had a clear business goal, a tight deadline, and a talented group of engineers who could ship fast. And we did. The first release landed quickly, stakeholders were happy, and the roadmap looked achievable.</p><p>Then the second phase arrived.</p><p>Suddenly, every sprint started with a long meeting about &#8220;the right&#8221; database. Then another about messaging. Then another about observability tools. Decisions dragged because too many people needed to agree, but nobody owned the final call. To buy time, we ran more spikes. To reduce risk, we added more tools. To &#8220;future-proof&#8221; analytics, we copied more data into more places.</p><p>A few months later, the delivery pace slowed to a crawl. The architecture wasn&#8217;t broken because the team lacked skill. It broke because a handful of well-meant choices multiplied across the enterprise: decision-making drifted, data spread without ownership, integration layers became overloaded, and tooling started running the teams instead of supporting them.</p><p>In this article, you&#8217;ll learn four enterprise architecture anti-patterns, how to spot them early using simple signals and metrics, and the practical steps to fix them before they become expensive habits.</p><h2>What is an anti-pattern in enterprise architecture?</h2><p>Enterprise architecture is full of &#8220;best practice&#8221; advice. The catch is that the same idea can be brilliant in one context and painful in another. That&#8217;s where patterns and anti-patterns matter.</p><h3>Patterns vs anti-patterns (plain-English definitions)</h3><ul><li><p><strong>Pattern:</strong> a repeatable approach that solves a known problem in a specific context. It has trade-offs, but the benefits are worth it when the conditions fit.</p></li><li><p><strong>Anti-pattern:</strong> something that looks smart at the start, often because it feels efficient or &#8220;safe&#8221;, but it creates recurring pain once the organisation scales.</p></li><li><p><strong>Quick tell:</strong> if teams keep saying <strong>&#8220;we&#8217;ll fix it later&#8221;</strong>, you&#8217;re probably already in anti-pattern territory. &#8220;Later&#8221; becomes the roadmap, and the architecture starts accruing interest.</p></li></ul><p>A useful mindset shift is this: an anti-pattern is rarely stupidity. It&#8217;s usually speed, fear, or unclear ownership showing up as &#8220;design&#8221;.</p><h3>A grounded definition of &#8220;architecture&#8221;</h3><p>To keep this practical (and avoid word games), anchor on a simple, standards-based view:</p><blockquote><p>Architecture describes the&nbsp;fundamental elements of a system, the&nbsp;relationships between those elements, the&nbsp;environment&nbsp;in which the system operates, and the&nbsp;guiding principles&nbsp;that shape how the system is designed and how it evolves over time.</p></blockquote><p>That last part matters. Architecture is not just a diagram of what exists today. It&#8217;s also the set of rules that decide how change happens tomorrow. When those rules are missing or messy, anti-patterns spread fast.</p><h2>The four layers where EA anti-patterns show up</h2><p>Enterprise architecture anti-patterns don&#8217;t appear in one place. They spread across layers, and each layer has its own style of failure. If you only look at apps, you&#8217;ll miss the business decision problem. If you only look at tooling, you&#8217;ll miss the data lifecycle problem.</p><h3>A simple lens: Business, Data, Application, Technology</h3><ul><li><p><strong>Business:</strong> decision-making, priorities, operating model</p><p>This is where anti-patterns show up as slow decisions, unclear ownership, competing agendas, and &#8220;everyone approves, nobody owns&#8221;.</p></li><li><p><strong>Data:</strong> quality, retention, governance, value</p><p>This is where anti-patterns look like uncontrolled replication, mystery datasets, poor classification, and growing risk wrapped in &#8220;just in case&#8221;.</p></li><li><p><strong>Application:</strong> service boundaries, integration, coupling</p><p>This is where anti-patterns appear as messy service responsibilities, overloaded integration layers, brittle dependencies, and change that breaks unrelated teams.</p></li><li><p><strong>Technology:</strong> platform, tooling, operational practices</p><p>This is where anti-patterns show up as tool sprawl, inconsistent environments, fragile automation, and operational effort that keeps rising even when &#8220;everything is automated&#8221;.</p></li></ul><p>Same enterprise, different layer, different failure mode.</p><h2>Anti-pattern 1: Design by committee</h2><p>&#8220;Design by committee&#8221; usually starts with good intent: get the right people in the room, reduce risk, and avoid bad calls. The problem is what happens next. Decision-making turns into a recurring meeting series, and architecture becomes a negotiation instead of a discipline.</p><h3>What it looks like in real teams</h3><ul><li><p>Endless architecture meetings that end with <strong>&#8220;let&#8217;s do another spike&#8221;</strong></p></li><li><p>No clear decision owner</p></li><li><p>Everyone can block, nobody can close</p></li></ul><p>You&#8217;ll often see a team shipping early, then stalling as complexity rises. The meeting load goes up while delivery slows down.</p><h3>Early warning signs</h3><ul><li><p>Too many decision-makers in one room</p></li><li><p>Repeated debates on storage, messaging, frameworks</p></li><li><p>Increasing tech debt and refactoring churn</p></li><li><p>Delivery dates slip because decisions arrive late</p></li></ul><p>A classic symptom is &#8220;decision drift&#8221;: the team starts coding without a decision, then later discovers a half-written guideline somewhere and tries to retrofit it.</p><h3>Metrics you can track (even without fancy tooling)</h3><p>You don&#8217;t need a big governance platform to spot this. Track a few simple indicators:</p><ul><li><p><strong>Number of architecture meetings per decision</strong></p></li><li><p><strong>Time from &#8220;decision needed&#8221; to &#8220;decision published&#8221;</strong></p></li><li><p><strong>Count of spikes raised due to decision ambiguity</strong></p></li><li><p><strong>Rework rate:</strong> stories reopened due to architectural changes</p></li></ul><p>If those numbers trend up together, you&#8217;re paying a &#8220;decision tax&#8221; every sprint.</p><h3>Fix: a lightweight decision system, not a heavyweight committee</h3><p>The goal isn&#8217;t less collaboration. It&#8217;s clearer ownership and faster closure.</p><ul><li><p><strong>Define decision roles</strong></p><p>One accountable owner for the decision, plus a small review group. Keep the decision-making circle tight; widen the feedback circle instead.</p></li><li><p><strong>Standardise decisions with ADRs and a simple lifecycle</strong></p><p>Use a consistent format and statuses such as <strong>proposed, accepted, superseded, rejected</strong>. The point is clarity: what we decided, why, what we didn&#8217;t choose, and when it changes.</p></li><li><p><strong>Set a &#8220;decision SLA&#8221; for common choices</strong></p><p>Example: &#8220;Most decisions close within <strong>5 working days</strong>.&#8221; If it can&#8217;t close, force the next question: what information is missing and who owns getting it?</p></li><li><p><strong>Publish a small set of viewpoints and tools</strong></p><p>Pick the minimum that keeps teams aligned (for example <strong>C4/UML</strong>, <strong>draw.io/PlantUML</strong>, and <strong>one shared repository</strong> for diagrams and ADRs). Consistency beats perfection.</p></li></ul><h3>Two &#8220;hidden traps&#8221; to call out (quick and human)</h3><ul><li><p><strong>Ivory tower architect</strong>: decisions appear, but nobody can ask questions. The team learns by guessing, and gaps turn into rework.</p></li><li><p><strong>Architect plays golf</strong>: the architect leaves, and the team inherits a design they can&#8217;t evolve. The architecture becomes a relic, not a living guide.</p></li></ul><p>Design by committee is a process smell. Fix the decision system, and the architecture starts behaving like a product again: owned, iterated, and measurable.</p><h2>Anti-pattern 2: Bad data virus</h2><p>Bad data rarely arrives with a bang. It spreads quietly. One &#8220;temporary&#8221; dataset becomes a permanent table. One export becomes a pipeline. One replica becomes a lake. Then suddenly you&#8217;re paying for data nobody trusts, nobody owns, and nobody can confidently delete.</p><h3>What it looks like</h3><ul><li><p>Old, unused data gets replicated into new systems (replicas, lakes, analytics, AI)</p></li><li><p>Nobody can explain why certain datasets exist</p></li><li><p>Storage and risk grow together</p></li></ul><p>The giveaway is when the enterprise keeps copying the same uncertainty into new platforms. The data looks more &#8220;modern&#8221;, but the confusion stays.</p><h3>Why it happens</h3><ul><li><p>Fear of deleting data</p></li><li><p>Weak classification and ownership</p></li><li><p>Retention handled as an afterthought</p></li></ul><p>Most teams don&#8217;t choose this deliberately. They&#8217;re trying to stay safe, keep options open, and avoid being blamed for deleting &#8220;something important&#8221;. Over time, &#8220;safe&#8221; becomes expensive.</p><h3>Early warning signs</h3><ul><li><p>Low usage datasets with high storage cost</p></li><li><p>Unclear sensitivity classification</p></li><li><p>&#8220;We might need it later&#8221; becomes the default policy</p></li></ul><p>If your data discussions are mostly about where to store it, not why it exists and who uses it, you&#8217;re already slipping.</p><h3>Metrics to watch</h3><p>You can make this measurable without turning it into a massive governance program:</p><ul><li><p><strong>Data access frequency</strong> (reads/writes per dataset)</p></li><li><p><strong>Age distribution of data</strong> (how much is stale)</p></li><li><p><strong>Percentage classified vs unclassified</strong></p></li><li><p><strong>Audit findings tied to data governance gaps</strong></p></li></ul><p>A simple starting point: rank your top datasets by cost, then overlay usage. The scary ones rise to the top fast.</p><h3>Fix: treat data like a product with a lifecycle</h3><p>The cure is less about new platforms and more about basic hygiene and accountability.</p><ul><li><p><strong>Run a data assessment</strong> (what exists, who owns it, who uses it)</p><p>Build a lightweight inventory: dataset name, owner, purpose, consumers, retention rule, and sensitivity level.</p></li><li><p><strong>Classify data and align retention policies</strong></p><p>Classify by value and risk, then set retention based on actual need (not fear). If you can&#8217;t explain the purpose, it&#8217;s not ready to spread.</p></li><li><p><strong>Introduce deletion and archiving automation</strong></p><p>Manual deletion rarely happens. Automate it with clear approvals, logging, and safety rails (archive first, delete after a defined window).</p></li><li><p><strong>Tie dark data reduction to security outcomes</strong></p><p>Less unknown data means fewer places sensitive information can hide, leak, or get copied into tools that were never designed to protect it. Smaller attack surface, cleaner audits, and less time arguing about what&#8217;s safe to share.</p></li></ul><p>Bad data virus is the anti-pattern where &#8220;just in case&#8221; becomes the default architecture. Fix it by making data ownership, lifecycle, and retention normal operational work, like patching or access reviews.</p><h2>Anti-pattern 3: Swiss Army knife integration</h2><p>This one is sneaky because it often starts as a rescue mission. Teams move to event-driven patterns to reduce tight coupling, then the integration layer slowly becomes the place where &#8220;everything gets solved&#8221;. Over time, the broker turns into a Swiss Army knife: handy, overloaded, and impossible to hand to someone new without cutting yourself.</p><h3>What it looks like in 2025 systems</h3><ul><li><p>The message broker or integration layer starts doing everything: routing, transforms, auth logic, orchestration, even business rules</p></li><li><p>A small &#8220;core team&#8221; becomes a bottleneck because only they understand the glue</p></li></ul><p>It&#8217;s the modern version of the old &#8220;mega-database with magic stored procedures&#8221;. Different tool, same problem: logic hidden in a place that&#8217;s hard to test, hard to version, and hard to reason about.</p><h3>Symptoms you&#8217;ll hear out loud</h3><ul><li><p>&#8220;We can&#8217;t change that, it might break other flows&#8221;</p></li><li><p>&#8220;It&#8217;s all in the broker rules&#8221;</p></li><li><p>&#8220;We need the one person who built it&#8221;</p></li></ul><p>When those phrases show up, your integration layer has stopped being plumbing and started being a shadow application.</p><h3>Metrics that reveal it</h3><ul><li><p><strong>Growth in message types and transformations</strong></p></li><li><p><strong>Incidents tied to broker changes</strong></p></li><li><p><strong>Mean time to recover when messaging breaks</strong></p></li><li><p><strong>Percentage of business rules living outside services</strong></p></li></ul><p>A practical check: if a broker change needs the same level of analysis and testing as a service release, you&#8217;ve turned the broker into a product without admitting it.</p><h3>Fix: move intelligence to services, keep pipes simple</h3><p>The goal isn&#8217;t &#8220;no integration logic&#8221;. The goal is to keep the broker focused on transport and coordination, while services own the domain rules.</p><ul><li><p><strong>Reduce transformation logic in the broker</strong></p><p>Minimise mapping scripts and embedded decision trees. If transformations must exist, make them simple, visible, and versioned like code.</p></li><li><p><strong>Standardise contracts and versioning</strong></p><p>Define event/message schemas, version them explicitly, and treat compatibility as a first-class concern.</p></li><li><p><strong>Push business rules back into domain services (&#8220;smart endpoints&#8221;)</strong></p><p>Keep decision-making close to the domain. Services should validate, decide, and act. The integration layer should pass messages, not &#8220;think&#8221;.</p></li><li><p><strong>Add tracing and clear observability for message flows</strong></p><p>Make every hop visible: correlation IDs, distributed tracing, and meaningful metrics (latency, failures, retries). If you can&#8217;t see the flow end-to-end, you can&#8217;t manage the risk.</p></li></ul><p>Swiss Army knife integration feels efficient until the day you need to change it quickly. Then it becomes a single point of confusion, delay, and fragility. Keep pipes simple, and your teams get their autonomy back.</p><h2>Anti-pattern 4: Operational over-tooling</h2><p>Tools are meant to remove friction. Operational over-tooling does the opposite: it adds layers of dashboards, scanners, pipelines, and platforms until teams spend more time managing the toolchain than improving the product. The result is a noisy, expensive system that still wakes people up at 2am.</p><h3>What it looks like</h3><ul><li><p>Tool sprawl: overlapping CI/CD, logging, monitoring, security scanners, dashboards</p></li><li><p>Teams spend more time operating tools than shipping outcomes</p></li><li><p>Automation exists, but the on-call pain stays</p></li></ul><p>A clear sign is when &#8220;keeping the platform running&#8221; becomes a bigger job than building the thing the platform exists to support.</p><h3>Common causes</h3><ul><li><p>Tool adoption driven by trends or CV-building</p></li><li><p>&#8220;DevOps equals automation&#8221; thinking</p></li><li><p>No exit plan once a tool is in</p></li></ul><p>A lot of over-tooling is fear in disguise: fear of manual work, fear of incidents, fear of being seen as behind. So the response is &#8220;add another tool&#8221;.</p><h3>Metrics to track</h3><ul><li><p><strong>Tool count per category</strong> (CI, observability, security, IaC)</p></li><li><p><strong>Feature usage rate</strong> (how much of the tool you actually use)</p></li><li><p><strong>Integration effort per tool</strong> (time to onboard, maintain, upgrade)</p></li><li><p><strong>Training/support load per quarter</strong></p></li></ul><p>If the tool count rises while incident rates and lead time don&#8217;t improve, you&#8217;re buying complexity, not reliability.</p><h3>Fix: governance that helps teams move faster</h3><p>This isn&#8217;t about banning tools. It&#8217;s about making tool decisions deliberate, visible, and reversible.</p><ul><li><p><strong>Run a tooling audit and create a simple inventory</strong></p><p>List the tools, licences, owners, purpose, cost, and which teams rely on them. You can&#8217;t fix sprawl if nobody can see it.</p></li><li><p><strong>Set tool adoption criteria</strong></p><p>For every new tool: define the problem, compare options, write a decision record, run a trial, and set a rollout plan (including success measures).</p></li><li><p><strong>Standardise where it pays off, allow exceptions with an ADR</strong></p><p>Standardisation reduces cognitive load and onboarding time. Exceptions are fine, but they should be explicit and justified so they don&#8217;t quietly become the new default.</p></li><li><p><strong>Use Well-Architected style anti-pattern checks as a review prompt</strong></p><p>Treat reviews as a way to catch operational smells early: duplicated tooling, noisy alerting, brittle pipelines, and automation that creates work instead of removing it.</p></li></ul><p>Operational over-tooling is the moment your tooling becomes the product. The fix is simple governance that keeps choice intentional and keeps teams focused on outcomes, not operating a maze.</p><h2>A practical cadence to prevent anti-patterns (without slowing delivery)</h2><p>Most anti-patterns don&#8217;t arrive as a single bad decision. They grow when teams are busy, deadlines are real, and &#8220;we&#8217;ll clean it up later&#8221; feels like the only way to move. The fix isn&#8217;t heavier governance. It&#8217;s a repeatable cadence that keeps decisions small, visible, and testable.</p><h3>A six-step loop your teams can repeat</h3><p>Think of this as an architecture &#8220;heartbeat&#8221; you can run every iteration or every PI, depending on your scale:</p><ul><li><p><strong>Gather stakeholder inputs</strong></p><p>Short, purposeful conversations: product, delivery, ops, security, data, and the teams building the work. Capture what success looks like and what pain must be avoided.</p></li><li><p><strong>Identify ASRs, constraints, risks, assumptions</strong></p><p>Make the hidden stuff explicit. What must be true for this to work? What can&#8217;t change? What are we betting on? What could hurt customers or delivery?</p></li><li><p><strong>Choose principles and tactics</strong></p><p>Agree on a few guiding rules (security-by-design, minimise coupling, prefer managed services, etc.) and the tactics that support them.</p></li><li><p><strong>Compare options, make trade-offs, publish ADRs</strong></p><p>Don&#8217;t debate forever. Compare a small set of options, state the trade-offs, and publish the decision so teams can move with confidence.</p></li><li><p><strong>Create the few diagrams people will read</strong></p><p>Resist the urge to document everything. Create the minimum set that helps teams build, operate, and change safely.</p></li><li><p><strong>Build a delivery roadmap, then iterate</strong></p><p>Translate architecture into delivery slices: sequencing, dependencies, risks, and checkpoints. Then revisit as reality changes (because it will).</p></li></ul><p>This loop keeps architecture close to delivery. It also makes anti-patterns easier to spot early, because you&#8217;re repeatedly surfacing decisions, ownership, and trade-offs.</p><h3>&#8220;Fitness functions&#8221; as your guardrails</h3><p>Fitness functions are simple measurable checks that protect the architecture over time. They reduce arguments because the system tells you when you&#8217;re drifting.</p><p>Keep the list short and tied to outcomes, for example:</p><ul><li><p><strong>Latency</strong> (end-to-end response time targets)</p></li><li><p><strong>Cost</strong> (unit cost per transaction or per customer)</p></li><li><p><strong>Recovery time</strong> (RTO/RPO, or time-to-restore for key services)</p></li><li><p><strong>Security events</strong> (unauthorised access attempts, critical vulnerabilities, failed controls)</p></li><li><p><strong>Data retention compliance</strong> (datasets with owners, classification, and enforced retention)</p></li></ul><p>If a change improves features but fails the fitness functions, it&#8217;s a signal to pause, adjust, and avoid baking in the next anti-pattern.</p><h2>Simple checklist you can run this week</h2><p>Anti-patterns rarely start as disasters. They start as shortcuts that quietly become habits. The earlier you notice them, the cheaper they are to fix.</p><p>Here&#8217;s a quick recap of the four anti-patterns we covered:</p><ul><li><p><strong>Design by committee</strong>: decisions stall, spikes multiply, and delivery slows because nobody owns the call.</p></li><li><p><strong>Bad data virus</strong>: unused data spreads into replicas, lakes, analytics, and AI, while cost and risk climb together.</p></li><li><p><strong>Swiss Army knife integration</strong>: the broker/integration layer absorbs routing, transforms, and business rules until one team becomes the bottleneck.</p></li><li><p><strong>Operational over-tooling</strong>: tool sprawl grows, cognitive load rises, and on-call pain stays even when &#8220;everything is automated&#8221;.</p></li></ul><p>If you want a practical next step, run this mini-checklist in your next architecture sync:</p><ul><li><p>Do we have a clear decision owner for each major choice?</p></li><li><p>Are we capturing decisions in a consistent way (even a lightweight ADR)?</p></li><li><p>Which datasets exist &#8220;just in case&#8221;, and who owns them?</p></li><li><p>Is our integration layer doing transport, or is it doing business logic?</p></li><li><p>Which tools do we pay for but barely use, and what problem are they meant to solve?</p></li></ul><p>If you comment your context (team size, delivery model, and where you&#8217;re feeling the most pain), I&#8217;ll suggest the top two anti-patterns to tackle first and a small, realistic plan to unwind them without slowing delivery.</p><p></p>]]></content:encoded></item><item><title><![CDATA[The secret rulebook behind every tap-and-go payment (Part 5)]]></title><description><![CDATA[From awareness to ownership: the final PCI mindset test]]></description><link>https://newsletter.aminollahi.com/p/pci-dss-final-review-integrative-challenge</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/pci-dss-final-review-integrative-challenge</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 14 Dec 2025 19:42:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W0iE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W0iE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W0iE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W0iE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W0iE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W0iE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W0iE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg" width="1248" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1248,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148014,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/181546937?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W0iE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W0iE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W0iE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W0iE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf7435b-c5a8-4163-a888-88a9132f8dc4_1248x832.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://aminollahi.substack.com/p/pci-dss-foundations-trust-secure-card-payments-1">Part 1</a>, <a href="https://aminollahi.substack.com/p/pci-dss-data-scope-cardholder-environment">Part 2</a>, <a href="https://aminollahi.substack.com/p/pci-dss-12-requirements-simplified-3">Part 3</a>, <a href="https://aminollahi.substack.com/p/pci-dss-role-based-awareness-breach-lessons">Part 4</a></p><h1>Chapter 6: Final Review &amp; Integrative Challenge</h1><p>By now, you&#8217;ve explored the what, why, and how of PCI DSS from understanding its origins and scope, to learning how every architect, developer, tester, and project manager contributes to compliance.<br>But understanding the standard isn&#8217;t the goal.<br><strong>Applying it instinctively</strong> even under pressure, deadlines, and complexity is.</p><p>This final chapter helps you bring all the pieces together through real-world scenarios, reflection, and a closing synthesis of the PCI mindset.</p><h2>6.1 The Real Meaning of &#8220;Compliance&#8221;</h2><p>When most people hear the word <em>compliance</em>, they picture checklists and audits. But in PCI, compliance isn&#8217;t a destination, it&#8217;s a rhythm.<br>You don&#8217;t &#8220;get&#8221; compliant; you <em>stay</em> compliant, every day, through a thousand small actions.</p><p>It&#8217;s like driving safely. You don&#8217;t pass the driving test once and forget the road rules. Every journey, every traffic light, every weather change demands awareness.</p><p>The same applies to PCI.<br>The audit report or Attestation of Compliance (AoC) is just the snapshot.<br>The real protection lives in daily behaviour: encrypting data, reviewing logs, patching systems, and keeping curiosity alive.</p><h2>6.2 The Integrative Scenario; &#8220;The New Checkout Project&#8221;</h2><p>Let&#8217;s step into a realistic situation that mirrors what many modern teams face.</p><p>Your company, <strong>AuroraPay</strong>, is launching a new checkout microservice to process payments for digital gift cards. You are part of a cross-functional squad with an architect, developers, testers, and a project manager. The CTO has made one thing clear: the system <em>must</em> be PCI DSS compliant by design, no last-minute clean-ups.</p><p>You&#8217;ve been given this initial plan:</p><ol><li><p><strong>Frontend:</strong> A React single-page application (SPA) that collects card details and calls the backend API.</p></li><li><p><strong>Backend:</strong> A Node.js microservice running on AWS Fargate that sends card data to an external payment processor (Adyen).</p></li><li><p><strong>Database:</strong> A PostgreSQL instance storing transactions, order details, and some user metadata.</p></li><li><p><strong>Logs and Monitoring:</strong> CloudWatch for logs, Datadog for metrics.</p></li><li><p><strong>Project Timeline:</strong> 10 weeks until production release.</p></li></ol><p>Everything looks neat. But PCI awareness means seeing what others miss.</p><p>Let&#8217;s test that awareness.</p><h3>Challenge Part 1: Scoping the CDE</h3><p><strong>Question:</strong> Which components are <em>in scope</em> for PCI DSS?</p><p>At first glance, you might think only the backend API is.<br>But remember Chapter 2: <em>any system that stores, processes, or transmits cardholder data</em> even temporarily, falls into the <strong>Cardholder Data Environment (CDE)</strong>.</p><p>That means:</p><ul><li><p>The <strong>React frontend</strong> (if it captures raw card numbers)</p></li><li><p>The <strong>API</strong> (since it transmits card data)</p></li><li><p>The <strong>network segment</strong> where the API runs</p></li><li><p>The <strong>logging and monitoring systems</strong> capturing any CHD accidentally</p></li></ul><p>Now imagine the React app is hosted on the same domain as your marketing site. Suddenly, the entire web environment is connected and your PCI scope just exploded.</p><h3>Challenge Part 2: Designing for Scope Reduction</h3><p>You propose a different design:</p><ul><li><p>Use Adyen&#8217;s <strong>hosted payment page</strong> or client-side encryption so that the browser never sends raw card data to your backend.</p></li><li><p>The backend receives only a <strong>token</strong>, which represents the transaction.</p></li><li><p>All logs contain order IDs and masked PANs only (e.g. **** **** **** 1234).</p></li><li><p>The backend stores transaction metadata, but not card numbers.</p></li><li><p>TLS 1.3 enforced across all communication.</p></li><li><p>Access to the database restricted by IAM roles and MFA.</p></li></ul><p><strong>Result:</strong> The backend is now <em>out of scope</em> for PCI DSS because it never touches CHD or SAD.<br>Your CDE shrinks to the external payment processor&#8217;s domain and the PCI burden moves to them (supported by their AoC).</p><p>You&#8217;ve achieved the architect&#8217;s dream: <strong>security through design simplicity.</strong></p><h3>Challenge Part 3: The Logging Trap</h3><p>Two sprints later, a developer adds this debug statement:</p><p><code>console.log(&#8221;Payment request body:&#8221;, JSON.stringify(req.body));<br></code></p><p>What happens?</p><p>That single line, harmless during local testing, writes full card data to CloudWatch logs which sync to Datadog.<br>In one commit, your observability pipeline becomes part of the CDE.<br>You&#8217;ve turned a one-system scope into a multi-vendor audit nightmare.</p><p><strong>Lesson:</strong> PCI compliance isn&#8217;t about encryption keys or firewalls.<br>It&#8217;s about awareness. Every log, every payload, every variable can either keep you safe or expose your entire environment.</p><h3>Challenge Part 4: Vendor and People Risks</h3><p>During testing, the PM signs a contract with an analytics vendor to &#8220;track customer purchase behaviour.&#8221; The vendor asks for API access to the transaction database.</p><p>As an architect, your alarm bells ring:<br>Analytics systems often aren&#8217;t PCI-compliant. If they can access even tokenised data with partial PANs, you may inadvertently expose CHD.</p><p><strong>Action Plan:</strong></p><ul><li><p>Verify the vendor&#8217;s <strong>PCI Attestation of Compliance</strong>.</p></li><li><p>Restrict access via a <strong>read-only view</strong> with masked data.</p></li><li><p>Ensure the data export process is logged, encrypted, and approved.</p></li><li><p>Document this design decision in your PCI scope register.</p></li></ul><p>Meanwhile, a developer leaves the company.<br>Offboarding fails to revoke their access to CloudWatch. Two weeks later, auditors find an active user account.</p><p><strong>PCI DSS violation:</strong> Requirement 8, <em>every user must have unique access and timely revocation upon termination.</em></p><p>Small oversights, big consequences.</p><h3>Challenge Part 5: The Test Data Dilemma</h3><p>Your QA environment needs sample transactions to verify refunds and partial authorisations.<br>A new tester, unaware of PCI, exports a few real production transactions &#8220;for realism.&#8221;</p><p>Suddenly, your test environment now holds live card data and therefore, becomes part of the CDE.<br>Your scope just tripled.</p><p><strong>Correct approach:</strong></p><ul><li><p>Use <strong>synthetic tokens</strong> or dummy card numbers provided by Adyen.</p></li><li><p>Validate with test-mode APIs only.</p></li><li><p>Prohibit real data replication across environments.</p></li><li><p>Automate nightly scans for PAN-like patterns in logs and databases.</p></li></ul><p>Testing securely is as important as coding securely.</p><h2>6.3 The Human Side of Compliance</h2><p>PCI DSS is a technical standard, but failures are almost always human.<br>People skip steps when they&#8217;re tired, or they make assumptions when documentation lags.</p><p>That&#8217;s why Requirement 12, maintaining security policy and training is so essential.<br>Compliance is sustained not through one-off audits but through <strong>habits, rituals, and accountability</strong>.</p><p>Every person in the PCI ecosystem has a small part to play:</p><ul><li><p>The <strong>architect</strong> defines safe boundaries.</p></li><li><p>The <strong>developer</strong> guards data at the code level.</p></li><li><p>The <strong>tester</strong> hunts for leaks before they spread.</p></li><li><p>The <strong>project manager</strong> ensures processes don&#8217;t drift.</p></li></ul><p>Individually, each role might seem minor. Together, they build resilience.</p><blockquote><p>&#8220;PCI isn&#8217;t a firewall. It&#8217;s a culture of carefulness.&#8221;</p></blockquote><h2>6.4 Reflection Exercise; The Team Retrospective</h2><p>Imagine your squad has just completed the AuroraPay project.<br>During your sprint retrospective, your manager asks three questions:</p><ol><li><p>What did we do well in our PCI implementation?</p></li><li><p>Where did we take unnecessary risks or shortcuts?</p></li><li><p>How can we make compliance automatic next time?</p></li></ol><p>Spend a few minutes writing honest answers from your perspective and from another role&#8217;s.<br>For instance:</p><ul><li><p>If you&#8217;re a developer, how can you make life easier for testers?</p></li><li><p>If you&#8217;re a PM, how can you ensure architects have enough time for design reviews?</p></li><li><p>If you&#8217;re a tester, how can you share findings that influence coding standards?</p></li></ul><p>Compliance is teamwork under pressure. Reflection keeps the team humble and sharp.</p><h2>6.5 The &#8220;What If?&#8221; Game</h2><p>Let&#8217;s test your instincts with short, thought-based scenarios.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZgWb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZgWb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 424w, https://substackcdn.com/image/fetch/$s_!ZgWb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 848w, https://substackcdn.com/image/fetch/$s_!ZgWb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!ZgWb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZgWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png" width="1456" height="987" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:987,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:257342,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/181546937?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZgWb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 424w, https://substackcdn.com/image/fetch/$s_!ZgWb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 848w, https://substackcdn.com/image/fetch/$s_!ZgWb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!ZgWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df980d9-8d8b-4d1d-b085-a4319b0dea05_1534x1040.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These &#8220;micro-decisions&#8221; are where PCI lives or dies.<br>Every choice above affects multiple requirements &#8212; from access control to vulnerability management.</p><h2>6.6 Group Discussion Prompts</h2><p>Use these prompts for a 20-minute discussion:</p><ol><li><p>How can your organisation make PCI training less of a compliance exercise and more of a shared culture?</p></li><li><p>Which PCI controls feel most natural to your role? Which feel alien?</p></li><li><p>What would a &#8220;PCI by Design&#8221; culture look like in your product teams?</p></li><li><p>Should PCI be integrated into sprint reviews, definition of done, or architecture sign-off?</p></li><li><p>How can you collaborate with vendors to share responsibility transparently?</p></li></ol><p>The goal isn&#8217;t to find right answers, it&#8217;s to surface blind spots.</p><h2>6.7 The Final Checklist; Can You Explain PCI in Plain English?</h2><p>By the end of this course, you should be able to explain PCI DSS without jargon.<br>Try this exercise:</p><blockquote><p>&#8220;Explain PCI DSS to a new engineer in two minutes.&#8221;</p></blockquote><p>Here&#8217;s a model answer:</p><blockquote><p>&#8220;PCI DSS is a global security standard that protects payment card data.<br>It applies to anyone who stores, processes, or transmits cardholder data.<br>The goal is to minimise where that data exists and secure it through encryption, restricted access, and continuous monitoring.<br>It has 12 core requirements &#8212; things like firewalls, secure coding, and logging.<br>Compliance isn&#8217;t just about passing audits; it&#8217;s about building systems that keep customer trust safe every day.&#8221;</p></blockquote><p>If you can deliver that confidently, you&#8217;ve achieved awareness, the purpose of this entire program.</p><h2>6.8 From Awareness to Ownership</h2><p>Take ten minutes and write a brief &#8220;PCI Pledge&#8221; in your own words.<br>What habits will you personally maintain after this course?</p><p>Here are a few examples:</p><ul><li><p><em>I will never store or log unmasked card data, even temporarily.</em></p></li><li><p><em>I will challenge designs that blur PCI boundaries, no matter who proposes them.</em></p></li><li><p><em>I will keep learning about new attack patterns and mitigation techniques.</em></p></li><li><p><em>I will treat compliance as part of engineering excellence, not bureaucracy.</em></p></li></ul><p>Awareness without ownership fades. Ownership turns rules into reflex.</p><h2>6.9 Building a PCI Mindset</h2><p>Let&#8217;s close the loop.</p><p><strong>PCI DSS</strong> isn&#8217;t about avoiding fines or impressing auditors. It&#8217;s about <strong>protecting trust</strong> the invisible currency behind every tap, click, and swipe.</p><p>When you secure cardholder data, you protect not only your customers but also your team&#8217;s integrity and your company&#8217;s reputation.</p><p>Across these six chapters, you&#8217;ve learned to:</p><ol><li><p>Understand <em>why</em> PCI DSS exists and what it protects.</p></li><li><p>Identify <em>what</em> data is in scope and <em>how</em> to reduce exposure.</p></li><li><p>Apply the <em>12 requirements</em> in plain, practical language.</p></li><li><p>See <em>how each role</em> contributes to compliance daily.</p></li><li><p>Learn from <em>real-world breaches</em> where negligence had a cost.</p></li><li><p>Integrate all of this into <em>one coherent mindset</em>: design small, protect deeply, monitor continuously.</p></li></ol><p>If you take nothing else away, remember this truth:</p><blockquote><p><strong>PCI DSS is not a standard for computers, it&#8217;s a standard for people who build them responsibly.</strong></p></blockquote><h2>6.10 Mini-Final Quiz</h2><ol><li><p>What is the fastest way to reduce PCI scope in an application design?</p></li><li><p>Why must test environments follow the same rules as production?</p></li><li><p>Which three requirements would be violated by logging raw PANs?</p></li><li><p>What human behaviour caused most major PCI breaches discussed in Chapter 5?</p></li><li><p>What&#8217;s the difference between compliance and security in practice?</p></li><li><p>What one action can you personally take tomorrow to strengthen PCI compliance at work?</p></li></ol><h1>The Quiet Confidence</h1><p>True PCI mastery isn&#8217;t loud. It doesn&#8217;t rely on security slogans or compliance badges.<br>It&#8217;s quiet, the calm confidence that every line of code, every diagram, every decision was made with respect for the people whose data you hold.</p><p>You&#8217;ll never meet most of them. They&#8217;ll never know your name. But their trust is in your hands every time they swipe or click.</p><p>And that is what being PCI-aware truly means.</p>]]></content:encoded></item><item><title><![CDATA[The secret rulebook behind every tap-and-go payment (Part 4)]]></title><description><![CDATA[How everyday roles and famous breaches turn PCI DSS from theory into daily discipline]]></description><link>https://newsletter.aminollahi.com/p/pci-dss-role-based-awareness-breach-lessons</link><guid isPermaLink="false">https://newsletter.aminollahi.com/p/pci-dss-role-based-awareness-breach-lessons</guid><dc:creator><![CDATA[Ryan Aminollahi]]></dc:creator><pubDate>Sun, 07 Dec 2025 21:42:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9XY1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9XY1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9XY1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 424w, https://substackcdn.com/image/fetch/$s_!9XY1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 848w, https://substackcdn.com/image/fetch/$s_!9XY1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 1272w, https://substackcdn.com/image/fetch/$s_!9XY1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9XY1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png" width="1248" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/743c40d7-c31f-4735-9704-d150d91221db_1248x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1248,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:371287,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/180986774?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9XY1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 424w, https://substackcdn.com/image/fetch/$s_!9XY1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 848w, https://substackcdn.com/image/fetch/$s_!9XY1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 1272w, https://substackcdn.com/image/fetch/$s_!9XY1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743c40d7-c31f-4735-9704-d150d91221db_1248x832.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br><a href="https://www.aminollahi.com/p/pci-dss-foundations-trust-secure-card-payments-1">Part 1</a></p><p><a href="https://www.aminollahi.com/p/pci-dss-data-scope-cardholder-environment">Part 2</a></p><p><a href="https://www.aminollahi.com/p/pci-dss-12-requirements-simplified-3">Part 3</a></p><h1>Chapter 4: ROLE-BASED AWARENESS</h1><p>When people first learn about PCI DSS, it can feel abstract, twelve requirements, dozens of controls, hundreds of acronyms.<br>But compliance doesn&#8217;t happen in the document library; it happens in the choices people make each day.<br>Every commit, every deployment, every configuration file either strengthens or weakens the protection of cardholder data.</p><p>This chapter takes you inside four everyday roles, <strong>Solution Architect</strong>, <strong>Software Developer</strong>, <strong>Tester</strong>, and <strong>Project Manager</strong> to show how each one keeps the organisation within the PCI guardrails.<br>You&#8217;ll see that PCI isn&#8217;t the job of &#8220;the security team.&#8221; It&#8217;s a shared language of safety.</p><h2>4.1 The Solution Architect, Guardian of Boundaries</h2><p>The architect&#8217;s super-power is design foresight. Long before a single line of code is written, you decide <strong>where card data will flow and where it won&#8217;t</strong>.<br>That boundary, more than any single control, determines the size of your PCI scope and the effort to keep it secure.</p><h3>Defining the CDE</h3><p>Start every payment-related project by drawing the <strong>data-flow diagram</strong>.<br>Ask, step by step:</p><ol><li><p>Where does card data enter?</p></li><li><p>Where is it transformed, stored, or transmitted?</p></li><li><p>Who or what touches it on the way out?</p></li></ol><p>Every arrow on that diagram is a potential exposure.<br>Architects who design without mapping data flow are like electricians wiring a house blindfolded.</p><p><strong>Example:</strong><br>An architect at an e-commerce firm noticed that a marketing plug-in was receiving full card numbers via analytics tags. By simply changing the integration point to fire <em>after</em> tokenisation, he removed an entire vendor from scope, saving the company tens of thousands in audit costs.</p><h3>Building Segmentation and Isolation</h3><p>Think of segmentation as the moat around your castle.<br>Your PCI zone should be a small, self-contained island: isolated networks, restricted subnets, minimal connectivity to non-PCI systems.</p><p>Use:</p><ul><li><p>Separate <strong>VPCs or network segments</strong> for the CDE.</p></li><li><p><strong>Firewall rules</strong> allowing only required traffic.</p></li><li><p><strong>Jump hosts or bastions</strong> for administrative access.</p></li></ul><p><strong>Golden rule:</strong> <em>If a server doesn&#8217;t need to talk to the CDE, it must not be able to.</em></p><h3>Designing for Tokenisation and Outsourcing</h3><p>Every architect faces a pivotal choice: <em>build or delegate?</em><br>If a third-party payment gateway can safely process card data, let them.<br>By externalising the sensitive part, you reduce your internal exposure and shift the compliance burden to a specialist whose entire business is PCI.</p><p>However, you must validate the vendor&#8217;s <strong>Attestation of Compliance (AoC)</strong> and ensure contracts specify PCI responsibilities.<br>Outsourcing does not mean abdication, it means partnership under written assurance.</p><h3>Architect&#8217;s Checklist</h3><ul><li><p>Card data flow mapped and documented</p></li><li><p>Network segmentation diagram approved</p></li><li><p>Encryption and tokenisation designed end-to-end</p></li><li><p>Vendor AoCs reviewed and stored</p></li><li><p>Non-functional requirements include PCI controls (IAM, monitoring, DR)</p></li></ul><h3>Reflection Pause</h3><p>If you drew your current system&#8217;s boundaries today, could you clearly mark which components are in PCI scope?<br>If you can&#8217;t, that&#8217;s your first priority tomorrow.</p><h2>4.2 The Software Developer, Defender of Data</h2><p>Developers are closest to the raw material of compliance: code.<br>A single logging statement can undo a million dollars of architecture.<br>Yet, developers are also best placed to stop problems early because they control how data is handled at the source.</p><h3>The Rule of Least Exposure</h3><p>The simplest way to stay compliant is <strong>never handle real card data</strong>.<br>Where possible, use <strong>client-side tokenisation</strong> or <strong>hosted payment pages</strong> so the browser sends the PAN directly to the payment provider, not to your API.<br>Your backend receives a harmless token instead of the real number.</p><p>If you must handle CHD, immediately encrypt or tokenise it before any persistence or logging occurs.</p><h3>Secure Coding Habits</h3><ol><li><p><strong>Validate inputs strictly.</strong> Never trust user data, sanitise, whitelist, and type-check.</p></li><li><p><strong>Use parameterised queries.</strong> Prevent SQL injection.</p></li><li><p><strong>Mask logs.</strong> Replace sensitive digits with <code>XXXX</code> or omit them entirely.</p></li><li><p><strong>Protect secrets.</strong> Store keys in managed services (AWS Secrets Manager, Azure Key Vault).</p></li><li><p><strong>Avoid real data in tests.</strong> Use gateway-supplied dummy cards.</p></li></ol><h3>Story: The Danger of Debug Logs</h3><p>During integration testing, a developer left <code>console.log(request.body)</code> active inside a Lambda. It worked fine until real payments began. Overnight, hundreds of PANs appeared in CloudWatch logs.<br>No breach occurred, but the company&#8217;s entire observability stack became in-scope for PCI. It took weeks to cleanse and re-architect.</p><p>The fix? Introduce a <strong>logging filter middleware</strong> that automatically masks any field named <code>card</code>, <code>pan</code>, or <code>cvv</code> before writing logs.<br>A ten-line utility now protects millions of transactions.</p><h3>Code Review and Automation</h3><p>Security reviews shouldn&#8217;t depend on human memory. Integrate <strong>Static Application Security Testing (SAST)</strong> and <strong>Dependency Scanning</strong> into CI/CD pipelines.<br>Flag issues early, before merge.<br>Treat a failed security scan the same way you treat a failed unit test.</p><h3>Developer&#8217;s Checklist</h3><ul><li><p>No CHD/SAD logged or stored</p></li><li><p>Encryption libraries validated and tested</p></li><li><p>Secrets managed through approved vaults</p></li><li><p>Automated scanning in pipeline</p></li><li><p>Dummy cards only in non-production</p></li></ul><h3>Reflection Pause</h3><p>Open your latest codebase. Search for the words &#8220;card&#8221;, &#8220;cvv&#8221;, &#8220;pan&#8221;, or &#8220;payment&#8221;.<br>Would any of those lines raise a red flag to an auditor?<br>If yes, fix them today, future-you will thank present-you.</p><h2>4.3 The Tester, Detective of Exposure</h2><p>Testers are the quality guardians.<br>While developers ensure data is handled correctly, testers confirm that <strong>nothing slips through the cracks</strong>.<br>They are the ones who can catch data leakage before it becomes a breach.</p><h3>Testing for Data Safety</h3><p>When testing payment flows:</p><ul><li><p><strong>Inspect responses and logs.</strong> Ensure no API returns or stores full PANs or CVVs.</p></li><li><p><strong>Check error handling.</strong> Failed transactions must never echo card details.</p></li><li><p><strong>Verify TLS.</strong> Capture network traffic and confirm encryption throughout the chain.</p></li><li><p><strong>Validate data masking.</strong> Reports, dashboards, and exports should display only partial PANs (e.g. <code>**** **** **** 1234</code>).</p></li></ul><h3>Negative Testing and Abuse Cases</h3><p>Attackers don&#8217;t follow the happy path, and neither should you.<br>Try:</p><ul><li><p>Submitting malformed payloads or very long numbers.</p></li><li><p>Attempting to upload files where text is expected.</p></li><li><p>Replaying valid tokens twice.</p></li></ul><p>Your goal isn&#8217;t to break the system maliciously, but to <strong>prove that defences hold even under stress</strong>.</p><h3>Story: The QA Hero</h3><p>At a Sydney start-up, a tester noticed that refund emails included full card numbers, a feature added &#8220;for convenience.&#8221;<br>She raised a ticket, and it turned out the template engine was using raw API responses.<br>Had those emails been sent to customers, thousands of PANs would have left the CDE.<br>Her curiosity saved the company from a breach and a fine.<br>That&#8217;s the value of critical testing.</p><h3>Automating PCI Validation</h3><p>Use scripts or static analysis tools that search for PAN-like patterns (<code>\b[0-9]{13,19}\b</code>) in logs and databases.<br>Run them nightly. If they ever match, alert immediately.</p><p>Many organisations integrate these scans into CI/CD or SIEM systems. Prevention through automation keeps humans from missing patterns.</p><h3>Tester&#8217;s Checklist</h3><ul><li><p>No card data in responses or logs</p></li><li><p>TLS validated end-to-end</p></li><li><p>Reports show masked data only</p></li><li><p>Abuse and replay scenarios tested</p></li><li><p>Automated pattern scans in place</p></li></ul><h3>Reflection Pause</h3><p>When was the last time your QA suite explicitly checked for data masking or encryption?<br>Testing functional correctness is good; testing <em>data hygiene</em> is better.</p><h2>4.4 The Project Manager, Coordinator of Compliance</h2><p>Project Managers may not configure firewalls or write code, but they decide <strong>whether PCI tasks are prioritised or postponed</strong>.<br>Their influence determines if compliance stays visible or quietly drifts into &#8220;later.&#8221;</p><h3>Making Compliance Part of Delivery</h3><p>In agile terms, PCI is not a &#8220;nice-to-have.&#8221; It&#8217;s a <strong>definition-of-done</strong>.<br>Every user story that touches payments should include acceptance criteria such as:</p><ul><li><p>&#8220;All card data tokenised before storage.&#8221;</p></li><li><p>&#8220;Logs verified for masking.&#8221;</p></li><li><p>&#8220;Security review approved.&#8221;</p></li></ul><p>By embedding compliance into the backlog, PMs prevent last-minute scrambles before audits.</p><h3>Tracking Evidence and Attestations</h3><p>PCI audits thrive on documentation.<br>PMs ensure:</p><ul><li><p>Vendor <strong>AoCs</strong> are collected and renewed annually.</p></li><li><p>Architecture diagrams and DFDs are version-controlled.</p></li><li><p>Training records are stored.</p></li><li><p>Jira or Confluence pages capture proof of each requirement.</p></li></ul><p>A well-maintained evidence trail turns audit season from panic to paperwork.</p><h3>Scheduling Security and Training</h3><p>Requirement 12 mandates regular awareness training.<br>PMs coordinate these sessions, ensuring new joiners complete induction within 30 days and all staff refresh annually.</p><p>They also schedule <strong>quarterly vulnerability scans</strong> and <strong>annual penetration tests</strong> in the roadmap so they&#8217;re never forgotten when delivery pressure mounts.</p><h3>Story: The Project That Forgot Security</h3><p>A mobile wallet project once treated PCI items as &#8220;phase 2.&#8221; The launch went ahead with tokenisation incomplete. Within weeks, a partner bank refused integration until the system passed PCI validation. The resulting delay cost more than the original sprint budget.</p><p>The PM later said, &#8220;We learned the hard way that compliance work <em>is</em> delivery work.&#8221;</p><h3>PM&#8217;s Checklist</h3><ul><li><p>PCI requirements built into backlog</p></li><li><p>AoCs collected and tracked</p></li><li><p>Security scans and pen-tests scheduled</p></li><li><p>Training compliance reported monthly</p></li><li><p>Risk register includes PCI items</p></li></ul><h3>Reflection Pause</h3><p>Open your project board.<br>Are PCI-related stories visible, with owners and due dates?<br>If not, they&#8217;ll quietly slip behind feature requests and reappear only when auditors call.</p><h2>4.5 The Shared Responsibility Mindset</h2><p>PCI DSS works only when everyone pulls together.<br>Architects limit exposure; developers code securely; testers verify integrity; PMs keep the machine disciplined.<br>It&#8217;s like an orchestra, different instruments, one melody: <strong>protect cardholder data</strong>.</p><h3>Cross-Role Collaboration</h3><ul><li><p><strong>Design reviews:</strong> Architects and developers discuss data flows with testers present, so everyone agrees on boundaries before a single deployment.</p></li><li><p><strong>Security stand-ups:</strong> Once a fortnight, each squad surfaces new risks or near-misses.</p></li><li><p><strong>Incident simulations:</strong> PMs run tabletop exercises, &#8220;What if logs leaked CHD?&#8221;, so roles are clear when reality strikes.</p></li></ul><p>These rituals turn PCI from a static document into a living culture.</p><h2>4.6 Mini-Review Quiz</h2><ol><li><p>What is the architect&#8217;s primary goal during PCI design?</p></li><li><p>Why should developers avoid handling real card data whenever possible?</p></li><li><p>Name two ways testers can confirm that card data isn&#8217;t leaking.</p></li><li><p>What evidence must project managers collect to support audits?</p></li><li><p>How does embedding compliance tasks in sprints improve outcomes?</p></li></ol><h2>4.7 Summary, The Everyday Champions</h2><p>PCI compliance is not a project milestone; it&#8217;s a <em>habit</em>.<br>Architects draw boundaries, developers guard data, testers catch leaks, and PMs keep the rhythm.</p><p>When each role treats security as part of craftsmanship, PCI DSS stops feeling like bureaucracy and starts feeling like pride in doing things properly.</p><blockquote><p>&#8220;A compliant system is simply a secure system that was built by people who cared.&#8221;</p></blockquote><h1>Chapter 5: Real-World Mistakes and Lessons</h1><p>When you read a PCI DSS control, &#8220;encrypt transmission&#8221; or &#8220;restrict access&#8221;, it can sound abstract, even bureaucratic. But behind every clause sits a painful story: a company that learned the hard way what happens when controls fail.</p><p>These are not cautionary tales from unknown startups; they&#8217;re from <strong>global enterprises with entire departments dedicated to security</strong>. The mistakes were small, the consequences enormous.</p><h2>5.1 The Home Depot Breach; The Chain-of-Trust Failure</h2><p>In 2014, <strong>Home Depot</strong>, one of the world&#8217;s largest home-improvement retailers, suffered a data breach that exposed <strong>56 million customer payment cards</strong>.</p><h3>What Happened</h3><p>Attackers didn&#8217;t storm the main network head-on.<br>They entered through the <strong>credentials of a third-party vendor</strong>, a small heating and air-conditioning contractor who had remote VPN access for billing. Once inside, the attackers moved laterally into Home Depot&#8217;s <strong>point-of-sale (POS)</strong> environment and installed malware that captured card data in memory as transactions were processed.</p><h3>PCI DSS Violations</h3><ul><li><p><strong>Requirement 7 &amp; 8:</strong> Access not restricted by business need-to-know; shared credentials between vendor systems.</p></li><li><p><strong>Requirement 11:</strong> Lack of intrusion detection and log correlation.</p></li><li><p><strong>Requirement 1:</strong> Weak network segmentation, once the attackers entered, they could move freely.</p></li></ul><h3>The Root Cause</h3><p>The weakest link wasn&#8217;t technology, it was <em>trust without verification</em>. The vendor connection bypassed strong access controls, and network segmentation between corporate and POS systems was incomplete.</p><h3>The Cost</h3><p>Home Depot paid over <strong>US $179 million in settlements and fines</strong>, not including brand damage and years of litigation.</p><h3>The Lesson</h3><p>For architects: <em>segmentation is sacred</em>. Vendors should connect through tightly scoped APIs or bastion gateways, never directly into sensitive networks.<br>For project managers: always collect and verify <strong>vendor AoCs</strong> and monitor their access continuously.<br>For everyone: your PCI scope includes your partners, whether you like it or not.</p><h2>5.2 Target; When Monitoring Exists but Nobody Looks</h2><p>In 2013, <strong>Target Corporation</strong> experienced one of the most publicised PCI-related breaches in history. Around <strong>40 million cards</strong> were compromised, plus 70 million customer records.</p><h3>What Happened</h3><p>Just like Home Depot, the attackers came in through a <strong>third-party vendor</strong>, in this case, an HVAC maintenance company. They used stolen credentials to access Target&#8217;s internal network and deploy malware on POS terminals.</p><p>The tragedy?<br>Target&#8217;s <strong>intrusion detection system (FireEye)</strong> actually raised alerts in real time. But those alerts were <strong>ignored</strong>. The SOC team was overloaded and under-trained.</p><h3>PCI DSS Violations</h3><ul><li><p><strong>Requirement 10:</strong> Logs and alerts must be actively reviewed.</p></li><li><p><strong>Requirement 12:</strong> Lack of trained personnel and effective incident-response process.</p></li><li><p><strong>Requirement 5:</strong> Failure to keep endpoint protection signatures updated.</p></li></ul><h3>The Cost</h3><p>More than <strong>US $290 million</strong> in settlements, legal fees, and remediation plus a CEO resignation and multi-year reputation hit.</p><h3>The Lesson</h3><p>Monitoring is meaningless without <strong>human vigilance</strong>.<br>PCI doesn&#8217;t just ask for logs; it asks for <strong>log review</strong>.</p><p>Architects and PMs must ensure that monitoring alerts flow to trained teams who have authority to act. Testers can help by simulating incidents and confirming alerts trigger correctly.</p><blockquote><p>&#8220;Detection without response is decoration.&#8221;</p></blockquote><h2>5.3 British Airways; The JavaScript Injection Disaster</h2><p>In 2018, <strong>British Airways</strong> was fined <strong>&#163;20 million (AUD &#8776; 40 million)</strong> after a cyber-attack redirected customers to a fraudulent payment page.</p><h3>What Happened</h3><p>Hackers injected malicious JavaScript into British Airways&#8217; website. When customers entered payment details, the script silently sent card data to an attacker-controlled domain.</p><p>The compromise lasted <strong>two months</strong> and affected about <strong>400,000 cardholders</strong>.</p><h3>PCI DSS Violations</h3><ul><li><p><strong>Requirement 6:</strong> Failure to maintain secure web applications and patch vulnerabilities.</p></li><li><p><strong>Requirement 11:</strong> Insufficient change-detection mechanisms on scripts.</p></li><li><p><strong>Requirement 10:</strong> Lack of logging around client-side integrity changes.</p></li></ul><h3>Root Cause</h3><p>The attackers exploited outdated third-party libraries and unmonitored front-end changes, a blind spot in most PCI programs that focus on back-end servers.</p><h3>The Lesson</h3><p>For developers: PCI applies to <strong>client-side code</strong> too.<br>If your JavaScript collects payment data, treat it like part of the CDE. Use <strong>sub-resource integrity (SRI)</strong> checks, <strong>content-security policies (CSPs)</strong>, and <strong>code signing</strong> to prevent tampering.</p><p>For architects: maintain an inventory of external scripts and libraries. Implement automated integrity checks in CI/CD.</p><blockquote><p>Even the front-end is a door; lock it.</p></blockquote><h2>5.4 Marriott International; When Data Lives Too Long</h2><p>In 2018, <strong>Marriott International</strong> revealed that attackers had accessed the <strong>guest reservation system of Starwood</strong>, a hotel chain it had acquired. The intrusion had persisted undetected for <strong>four years</strong>, exposing data from over <strong>383 million guests</strong>, including card numbers, passport details, and addresses.</p><h3>What Happened</h3><p>Attackers breached Starwood&#8217;s network in 2014, well before the merger. The compromised systems including databases containing encrypted card data, were migrated into Marriott&#8217;s infrastructure without thorough re-assessment. The attackers retained access post-migration.</p><h3>PCI DSS Violations</h3><ul><li><p><strong>Requirement 6 &amp; 11:</strong> Inadequate vulnerability testing and failure to re-validate security after major changes.</p></li><li><p><strong>Requirement 3:</strong> Long-term storage of cardholder data without re-encryption or key rotation.</p></li><li><p><strong>Requirement 10:</strong> Insufficient monitoring and anomaly detection.</p></li></ul><h3>The Cost</h3><p>Marriott was fined <strong>&#163;18.4 million</strong> by the UK Information Commissioner&#8217;s Office and spent hundreds of millions on remediation and customer support.</p><h3>The Lesson</h3><p>Architects: every acquisition or major system migration resets your PCI clock.<br>Always perform a <strong>fresh CDE scoping and validation exercise</strong>.<br>Never assume the inherited environment is compliant, compliance is not transferable.</p><p>Project Managers: treat mergers, cloud migrations, and platform rebuilds as PCI-impacting events requiring new risk assessments.</p><h2>5.5 Equifax; Patch Management and the Cost of Delay</h2><p>In 2017, <strong>Equifax</strong>, one of the largest credit-reporting agencies, suffered a breach that exposed personal and financial data of <strong>147 million people</strong> worldwide. Although not strictly a PCI merchant, the event demonstrates a perfect storm of PCI DSS violations.</p><h3>What Happened</h3><p>A known vulnerability in Apache Struts (CVE-2017-5638) had been publicly disclosed in March 2017. Equifax failed to patch it for months. Attackers exploited the flaw, accessed databases containing card and identity data, and exfiltrated it undetected.</p><h3>PCI DSS Relevance</h3><ul><li><p><strong>Requirement 6.2:</strong> Install critical patches within one month of release.</p></li><li><p><strong>Requirement 11:</strong> Regularly scan and test for new vulnerabilities.</p></li><li><p><strong>Requirement 10:</strong> Ensure logging is centralised and alerts are reviewed.</p></li></ul><h3>The Cost</h3><p>Equifax paid over <strong>US $1.4 billion</strong> in fines, compensation, and upgrades and permanently damaged its brand credibility.</p><h3>The Lesson</h3><p>For developers and PMs: treat vulnerability notifications like fire alarms, not calendar reminders.<br>For architects: build automatic patch pipelines; don&#8217;t rely on human tracking.<br>For testers: verify patch levels in environments as part of regression testing.</p><blockquote><p>A single missed update can undo every encryption key and firewall you&#8217;ve deployed.</p></blockquote><h2>5.6 NAB (National Australia Bank); The Cloud Misconfiguration Wake-Up Call</h2><p>In 2019, <strong>National Australia Bank (NAB)</strong> publicly disclosed that the personal details of about <strong>13,000 customers</strong> had been accidentally shared with a third-party data-validation service.</p><h3>What Happened</h3><p>During a routine system migration, customer information including names, addresses, and account numbers, was uploaded to a cloud server operated by an external provider without proper redaction or encryption.</p><p>Although the exposure was accidental and quickly contained, it prompted intense regulatory scrutiny because NAB is a <strong>card issuer and PCI DSS Level 1 entity</strong>.</p><h3>PCI DSS Implications</h3><ul><li><p><strong>Requirement 3:</strong> Data not adequately protected before transmission.</p></li><li><p><strong>Requirement 7:</strong> Data shared beyond business need.</p></li><li><p><strong>Requirement 12:</strong> Lack of defined data-handling process for external validation.</p></li></ul><h3>The Lesson</h3><p>Even in highly mature institutions, <strong>configuration drift</strong> and <strong>human error</strong> are constant risks.<br>For architects: implement <em>data-loss prevention (DLP)</em> tooling and enforce encryption at upload.<br>For PMs: every data exchange with a third-party vendor must pass a <strong>PCI data-handling checklist</strong> before execution.</p><blockquote><p>&#8220;It wasn&#8217;t a hack, it was a handshake done carelessly.&#8221;</p></blockquote><h2>5.7 Lessons Across the Board</h2><p>After studying these incidents, several recurring themes emerge.<br>Each one maps directly to PCI principles but, more importantly, to human behaviour.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6bue!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6bue!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 424w, https://substackcdn.com/image/fetch/$s_!6bue!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 848w, https://substackcdn.com/image/fetch/$s_!6bue!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!6bue!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!6bue!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png" width="1456" height="1072" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1072,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:234507,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.aminollahi.com/i/180986774?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6bue!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 424w, https://substackcdn.com/image/fetch/$s_!6bue!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 848w, https://substackcdn.com/image/fetch/$s_!6bue!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!6bue!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ef5f4fa-6dbd-4871-af23-1c3cfb9734fb_1526x1124.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The moral is clear: <strong>non-compliance rarely comes from malice</strong>.<br>It comes from small oversights, an unpatched system, a forgotten script, a blind trust in a partner.</p><h2>5.8 Reflection Pause</h2><p>Take a quiet moment and consider your own environment.</p><ul><li><p>Do you know every third-party system that can reach your CDE?</p></li><li><p>Who reviews alerts when your monitoring tool screams in the middle of the night?</p></li><li><p>How long is payment data retained in your databases or backups?</p></li><li><p>Are there front-end scripts on your payment pages that no one &#8220;owns&#8221;?</p></li></ul><p>Write down three small actions you can take this week to reduce your organisation&#8217;s PCI risk.<br>They might feel trivial but so did those missed patches, unreviewed alerts, and forgotten test logs that triggered global headlines.</p><h2>5.9 Mini-Review Quiz</h2><ol><li><p>Which PCI requirements did the Home Depot breach violate, and how?</p></li><li><p>What was the fundamental failure in Target&#8217;s monitoring process?</p></li><li><p>Why does client-side JavaScript fall under PCI scope, as shown by the British Airways incident?</p></li><li><p>What compliance lesson can we learn from Marriott&#8217;s acquisition of Starwood?</p></li><li><p>How does the Equifax breach illustrate the importance of Requirement 6.2?</p></li><li><p>What practical steps can teams take to prevent accidental data exposure like NAB&#8217;s?</p></li></ol><h2>5.10 Summary; The Price of Complacency</h2><p>Every breach you&#8217;ve just read about could have been prevented by fulfilling one or two existing PCI controls.<br>That&#8217;s what makes these stories haunting.</p><p>They prove that <strong>compliance is not paperwork, it&#8217;s discipline</strong>.<br>It&#8217;s patching on time, reviewing logs, verifying vendors, and deleting what you no longer need.</p><p>PCI DSS isn&#8217;t a shield you buy once; it&#8217;s a reflex you practise daily.</p><blockquote><p>&#8220;Security fails when familiarity breeds comfort.<br>Compliance survives when curiosity never sleeps.&#8221;</p></blockquote>]]></content:encoded></item></channel></rss>