<?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[Brownfield AI]]></title><description><![CDATA[How enterprises get AI delivering real business results on the platforms they already run. Field notes from inside an enterprise AI transformation.]]></description><link>https://insights.brownfieldai.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!UyKR!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749143a8-a231-4dab-906a-d59d182eb678_800x800.png</url><title>Brownfield AI</title><link>https://insights.brownfieldai.dev</link></image><generator>Substack</generator><lastBuildDate>Tue, 29 Sep 2026 10:51:59 GMT</lastBuildDate><atom:link href="https://insights.brownfieldai.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Brownfield AI]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[brownfieldaidotdev@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[brownfieldaidotdev@substack.com]]></itunes:email><itunes:name><![CDATA[Brownfield AI]]></itunes:name></itunes:owner><itunes:author><![CDATA[Brownfield AI]]></itunes:author><googleplay:owner><![CDATA[brownfieldaidotdev@substack.com]]></googleplay:owner><googleplay:email><![CDATA[brownfieldaidotdev@substack.com]]></googleplay:email><googleplay:author><![CDATA[Brownfield AI]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Brownfield Problem]]></title><description><![CDATA[Part 2: Layer 1 &#8212; The One Rule That Cannot Break]]></description><link>https://insights.brownfieldai.dev/p/the-brownfield-problem-000</link><guid isPermaLink="false">https://insights.brownfieldai.dev/p/the-brownfield-problem-000</guid><dc:creator><![CDATA[Brownfield AI]]></dc:creator><pubDate>Thu, 23 Apr 2026 00:15:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/01221909-b80c-433e-984f-2a908e3f919b_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Part 2 of</em> The Brownfield Problem <em>&#8212; a series for enterprises whose AI investment isn&#8217;t yet showing up in delivery speed or cost, on the heavily customised platforms that run the business. If you&#8217;re just joining, start with</em> <a href="https://open.substack.com/pub/kinnareekaushal/p/the-brownfield-problem?r=6wp4d1&amp;utm_campaign=post&amp;utm_medium=web">Part 1: The Problem No One Is Naming.</a></p><div><hr></div><p>It&#8217;s 6:47 am and Marcus is already at his desk.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insights.brownfieldai.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Not because anyone asked him to be. Because the question that followed him home last night is still sitting there when he wakes up, and the only way to get it out of his head is to start answering it.</p><p><em>What does the AI actually need from us that we haven&#8217;t given it yet?</em></p><p>His coffee is still too hot to drink. The office is quiet in the way it only is before 8 am &#8212; no Slack, no standups, no one arriving with a problem that needs solving before they&#8217;ve even taken their coat off. Just the hum of the air conditioning and a blank file open on his screen.</p><p>He&#8217;s going to build this properly.</p><p>Not another prompt. Not another training session for the team. The actual infrastructure &#8212; the files, the layers, the foundation that the AI reads before it writes a single line of code.</p><p>He&#8217;s starting with Layer 1.</p><div><hr></div><p>Every complex system has one rule that sits above all the others.</p><p>Not because it&#8217;s the most sophisticated rule. Not because it&#8217;s the hardest to follow. But because if it breaks &#8212; if someone violates it once, even with good intentions, even with a clean PR that passes review &#8212; the consequences don&#8217;t show up immediately. They accumulate quietly. They surface later, at the worst possible moment, as <strong>work that someone else has to find and undo.</strong></p><p>In a brownfield enterprise platform, that rule is this:</p><p><em><strong>The base is read-only. Always.</strong></em></p><p>Here&#8217;s what that means in practice.</p><p>Enterprise SaaS platforms &#8212; the kind that have been running for years, extended by multiple teams, customised at every layer &#8212; are built on a foundation that the vendor provides and maintains. That foundation is updated regularly. Security patches, performance improvements, new features, breaking changes that require migration. It&#8217;s a living thing.</p><p>Your customisations sit on top of that foundation through an override mechanism &#8212; a pattern the platform provides specifically so that your code and the vendor&#8217;s code never touch. Your changes live in your layer. The vendor&#8217;s code lives in theirs. When the vendor ships an update, they replace their layer. Your layer is untouched. Everyone goes home on time.</p><p>This is the architecture working as designed.</p><p>The moment AI writes directly to the base layer &#8212; even once, even a small change, even something that seems harmless &#8212; that contract breaks. Your modification is now inside the vendor&#8217;s territory. The next platform upgrade will silently overwrite it. No warning. No merge conflict. No error. <em>Just gone.</em> And depending on what that modification was doing, <em>gone</em> might mean a broken checkout flow that no one catches until a customer does.</p><div><hr></div><p>Marcus knows this. He&#8217;s known it for years.</p><p>What he&#8217;s realising, sitting at his desk at 6:47 am with a blank file in front of him, is that he&#8217;s never written it down.</p><p>Not in a way the AI can read.</p><p>It lives in the heads of his senior engineers. It gets communicated in PR reviews &#8212; <em>&#8220;this should be in the custom cartridge, not the base&#8221;</em> &#8212; and in onboarding conversations, and in the occasional post-mortem when someone junior makes the mistake that every junior engineer makes at least once. It&#8217;s tribal knowledge. It&#8217;s essential tribal knowledge. And <strong>tribal knowledge is exactly what AI cannot access.</strong></p><p>In Marcus&#8217;s case, the platform is a heavily customised enterprise commerce platform &#8212; one with its own specific override architecture, its own extension system, its own rules about what the vendor owns and what you own. But the principle holds across any enterprise platform with a similar extension model. SAP, Oracle, Guidewire, or any heavily customised open-source base. The specific names change. The problem is the same.</p><p>This is the first thing Layer 1 fixes.</p><div><hr></div><p><strong>What Layer 1 actually is</strong></p><p>It&#8217;s a short file. Shorter than you think it needs to be.</p><p>That brevity is deliberate. Layer 1 is loaded into every single AI conversation &#8212; it&#8217;s the first thing the tool reads before it does anything else. Which means every word in it competes with every other word for the finite attention the AI brings to a session. <strong>A long Layer 1 is a diluted Layer 1.</strong> You want high signal, zero noise.</p><p>The file lives at the root of your repository. For Claude Code it&#8217;s called <code>CLAUDE.md</code>. For GitHub Copilot it&#8217;s <code>.github/copilot-instructions.md</code>. For Cursor it&#8217;s <code>.cursorrules</code>. Different tools, same principle &#8212; every major AI coding assistant looks for a file in a known location and treats it as the authoritative set of rules for this project.</p><p>What goes in it:</p><p><strong>The read-only rule, stated absolutely.</strong> Not <em>&#8220;try to avoid editing the base cartridges.&#8221;</em> Not <em>&#8220;in most cases, prefer the custom cartridge.&#8221;</em> Absolute. No exceptions clause. The rule must be unambiguous enough that no amount of <em>&#8220;but it would be simpler to just edit the base&#8221;</em> reasoning can override it. AI models will optimise for simplicity unless you give them a hard constraint. So give them a hard constraint.</p><p><strong>The list of what&#8217;s read-only.</strong> Every base and vendor cartridge by name. The AI needs a definitive list, not a general principle it has to interpret. If it&#8217;s on the list, it&#8217;s off-limits. If it&#8217;s not on the list, it&#8217;s fair game. No ambiguity.</p><p><strong>The override mechanism.</strong> The rule tells the AI what not to do. It also needs to know what to do instead. A single paragraph explaining the override pattern &#8212; how to extend a controller, how to overlay a module &#8212; gives it the path forward. Without this, the AI knows what&#8217;s forbidden but not what&#8217;s permitted, and it will improvise.</p><p><strong>A pointer to the full coding standards.</strong> Layer 1 is not the place for detail. It&#8217;s the place for the one rule. Everything else lives in Layer 2, and Layer 1 simply points there.</p><p>The whole file fits in twenty lines. That&#8217;s not a rough estimate. That&#8217;s a target.</p><div><hr></div><p>Here&#8217;s what that looks like in practice &#8212; the actual <code>CLAUDE.md</code> file from an enterprise commerce project. If you&#8217;re on a different platform, the names will differ. The structure is the same.</p><pre><code><code># Project Guidelines

For full coding standards, cartridge lists, and override patterns,
see docs/CODING_STANDARDS.md.

## Base Cartridge Rule

Never edit read-only cartridges. This includes:
- app_storefront_base and all SFRA modules
- Third-party integration cartridges (see full list in docs/CODING_STANDARDS.md)

Always use the cartridge overlay pattern in app_custom or the
corresponding _custom cartridge. Use server.replace, server.append,
or server.prepend to override base controller routes. For models,
scripts, and templates, create a file at the same path in the custom
cartridge to overlay the base version.</code></code></pre><p>Twenty lines. One rule. One pointer.</p><p>That&#8217;s the whole file. Deliberately.</p><p>Notice what&#8217;s not in there. No explanation of <em>why</em> the base is read-only. No history of the decisions that led here. No nuance about edge cases. The AI doesn&#8217;t need the reasoning &#8212; it needs the constraint. The reasoning lives in your head, in your team&#8217;s shared understanding, in the post-mortem documents that explain what happened last time someone got this wrong. Those are human documents. <strong>Layer 1 is a machine document.</strong></p><div><hr></div><p><strong>The done signal</strong></p><p>This is the test that tells you whether Layer 1 is working. Run it before you build anything else. Run it again after any change to the file.</p><p>Ask the AI to add a new route to one of your core controllers.</p><p>That&#8217;s it. A simple, realistic task. The kind of thing a developer asks for three times a week.</p><p>Watch where it puts the file.</p><p>If it creates the file inside <code>app_storefront_base</code> &#8212; or any cartridge on your read-only list &#8212; Layer 1 is not working. The rule isn&#8217;t landing. Go back to the file, tighten the language, make the constraint harder.</p><p>If it creates the file inside <code>app_custom</code>, using <code>server.extend(base)</code> and the correct override method for what you asked for &#8212; Layer 1 is working.</p><p>On any other platform the cartridge names will be different, but the test is identical in principle: ask for a realistic code change and watch whether the AI respects the boundary between what&#8217;s yours and what&#8217;s the vendor&#8217;s.</p><p>It sounds almost too simple. Good. The test is simple because the rule is simple. The sophistication comes later, in the layers built on top of this one. Layer 1 is the foundation. You need to know it&#8217;s solid before you build anything else on it.</p><div><hr></div><div><hr></div><p>Marcus runs the test at 7:23 am.</p><p>He&#8217;s been building the file for the better part of an hour &#8212; not because it took that long to write twenty lines, but because he spent forty minutes thinking about what to leave out. Every instinct he had said to add more. More context. More explanation. More edge cases the AI might encounter.</p><p><em>He left them out. They belong in Layer 2.</em></p><p>He runs the test. Types the instruction. Watches the AI respond.</p><p>It creates the file in the custom cartridge. Correct override pattern. Correct method.</p><p>He takes a sip of his coffee &#8212; cold now, doesn&#8217;t matter &#8212; and adds a note to the file with the date and a single line:</p><p><em><strong>Tested. Working.</strong></em></p><p>It&#8217;s a small thing. A twenty-line file and a test that took thirty seconds.</p><p>But the foundation is solid. And for the first time since that board meeting, Marcus feels something shift &#8212; not relief exactly, more like <em>the particular satisfaction of having started a thing the right way.</em></p><p><strong>Everything else gets built on top of this.</strong></p><div><hr></div><p><strong>What breaks if you skip this layer</strong></p><p>It&#8217;s worth naming explicitly, because the temptation to skip Layer 1 and jump straight to the more interesting layers is real. Layer 2 &#8212; the coding standards, the module map, the override patterns &#8212; feels more substantial. More like the real work.</p><p>Skip Layer 1 and build Layer 2 first, and here&#8217;s what happens.</p><p>The AI follows your coding conventions beautifully. Correct naming. Correct test structure. Correct everything &#8212; committed directly to the base. The PR looks great. The code review catches nothing because the reviewer is looking at code quality, not cartridge location. The next vendor upgrade silently overwrites it. Three months later, in a standup, someone says <em>&#8220;that feature we shipped in Q2 has stopped working&#8221;</em> and no one immediately knows why.</p><p><em>Layer 1 is not the most interesting layer to build. It is the most important one to build first.</em></p><div><hr></div><p><strong>In Part 3:</strong> Layer 2 &#8212; the highest-leverage file in the entire system. Not platform documentation. Not API references. The specific document that teaches the AI how <em>your</em> project works. Why this single file prevents more bugs than any other piece of infrastructure &#8212; and what goes in it.</p><div><hr></div><p><em>If you found this useful, subscribe to get each part as it lands. The series runs seven parts &#8212; each one builds on the last.</em></p><p><em>Working through this on a heavily customised platform right now? Email contact@brownfieldai.dev or message me on LinkedIn. I&#8217;m always up for a direct conversation.</em></p><div><hr></div><p><em>Kinnaree Patel is the founder of Brownfield AI, which helps enterprises get AI delivering real business results on the platforms they already run. She writes from live experience inside an enterprise AI transformation. Want to talk it through? Email contact@brownfieldai.dev or visit brownfieldai.dev.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insights.brownfieldai.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Brownfield Problem]]></title><description><![CDATA[Part 1: The Problem No One Is Naming]]></description><link>https://insights.brownfieldai.dev/p/the-brownfield-problem</link><guid isPermaLink="false">https://insights.brownfieldai.dev/p/the-brownfield-problem</guid><dc:creator><![CDATA[Brownfield AI]]></dc:creator><pubDate>Thu, 16 Apr 2026 00:30:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8a62423d-bc29-4075-9151-ae9562720249_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Part 1 of</em> The Brownfield Problem <em>&#8212; a series for enterprises whose AI investment isn&#8217;t yet showing up in delivery speed or cost, on the heavily customised platforms that run the business. Not prompts. Not tips. The real infrastructure &#8212; built from the inside out.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insights.brownfieldai.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Brownfield AI! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The slide goes up and Marcus feels it before he processes it.</p><p>Not the numbers &#8212; the room.</p><p>The particular quality of silence that settles when a slide lands badly. The CFO&#8217;s hand moving to her coffee cup, lifting it, setting it down again without drinking. The way the Head of Product suddenly finds something interesting in his notepad. Marcus has been in enough of these rooms to read the temperature without looking at the thermometer.</p><p>The slide shows a competitor. Smaller company. Half the engineering headcount. Shipping at a pace that makes the chart look almost accusatory &#8212; a line climbing steadily upward while Marcus&#8217;s line does something more complicated. Something that requires explanation.</p><p>He gives the explanation.</p><p>It&#8217;s a good explanation. Accurate. He&#8217;s rehearsed the shape of it, the language that makes the complexity legible without sounding like an excuse. He talks about the platform. The years of customisation. The architectural decisions that were the right calls at the time and are now the walls everything else is built against.</p><p>The CFO nods.</p><p>Not the nod that means <em>I understand</em>. The other one. The slow, considered nod that means <em>I&#8217;m filing this away.</em></p><p>&#8220;And the AI tools?&#8221; she asks. &#8220;We&#8217;ve made a significant investment there.&#8221;</p><p>&#8220;We have,&#8221; Marcus says. &#8220;The team is using them.&#8221;</p><p>He doesn&#8217;t say the rest. Not here, not in this room. The rest is for the drive home, for the particular darkness of the car at 11 pm when the day has finally run out of demands and there&#8217;s nothing left but the honest version.</p><p><em><strong>The tools are running. The output looks right. It just doesn&#8217;t work.</strong></em></p><div><hr></div><p>Picture the codebase Marcus is responsible for.</p><p>Not the clean version from the architecture diagram on the wiki &#8212; the real one. The one that exists in production, that has been live for years, that has absorbed the decisions of every team that touched it before his. Some of those decisions were elegant. Some were made at 2 am before a launch. Some were workarounds that became permanent because permanent was faster than right, and then the person who knew they were workarounds left, and now they&#8217;re just the way things work.</p><p>This is a <strong>brownfield system</strong>. Most enterprise systems are. The term sounds clinical but the reality is deeply human &#8212; it&#8217;s what happens when software lives long enough to accumulate history.</p><p>His platform is a major enterprise SaaS product. Solid foundation. Heavily extended. Customised at every layer by teams who understood their piece of it, working at the speed that business demanded. The kind of system where you learn not to touch something without first understanding why it exists.</p><p>Now add AI coding assistants.</p><p>The tools arrive with encyclopaedic knowledge of the base platform. They know the APIs, the extension patterns, the architectural principles. In a demo environment, on a clean instance, they&#8217;re remarkable. A developer describes what they need and the AI produces code that looks exactly right. Fast. Confident. Apparently competent.</p><p>The first few weeks feel like the turning point everyone said was coming.</p><p>Then the PRs start landing.</p><p>A senior engineer opens one and goes quiet for a moment. Then types a comment &#8212; the kind that&#8217;s carefully worded because the author is a junior developer, and what it&#8217;s really saying is:</p><p><em>This is in the wrong place. And I need you to understand why without feeling like you failed.</em></p><p>The AI has written to the base layer &#8212; the read-only foundation that vendor upgrades will silently overwrite. The code is syntactically perfect. Architecturally, it&#8217;s a time bomb with a very clean detonator.</p><p>Another PR. Different problem, same shape. The AI has overridden an entire module when it needed to change one function &#8212; copying the whole file rather than extending it, which means any changes the base makes to the other functions will never reach this version. The code works today. It will drift quietly out of sync with the platform it&#8217;s supposed to extend.</p><p>Marcus&#8217;s senior engineers &#8212; the ones who carry the most context about how this system actually works &#8212; are now spending their afternoons reviewing AI output for problems that aren&#8217;t visible until you already know what to look for.</p><p><strong>Think about what that costs.</strong></p><p>The people who understand the system deeply enough to catch subtle architectural errors are also the people who are supposed to be building the next thing. They&#8217;re now a quality gate for a tool that was supposed to make quality easier. The juniors who could benefit most from AI assistance can&#8217;t always tell when the output is subtly wrong. And <em>subtly wrong</em> in a system with this much layered history is a specific kind of expensive &#8212; the kind that surfaces three months later, during a platform upgrade, at the worst possible moment.</p><div><hr></div><p>Here&#8217;s what Marcus&#8217;s instinct says. It&#8217;s the same instinct most engineering leaders reach for first.</p><p><em>Better prompts. More documentation. Training sessions on how to use the tools correctly.</em></p><p>It&#8217;s a reasonable instinct. It&#8217;s also pointing at the wrong problem.</p><p>The AI doesn&#8217;t need better prompts from individual developers. It needs something more fundamental.</p><p>Sit with this distinction for a moment, because it&#8217;s the hinge the whole problem turns on.</p><p><strong>Platform knowledge</strong> is what the AI arrives with. It knows the base product &#8212; the APIs, the extension model, the patterns documented in the official guides and discussed in every forum thread and Stack Overflow answer ever written about the platform. This knowledge is generic. It applies to every team running this system, everywhere in the world. The AI has it. <em>It&#8217;s not the gap.</em></p><p><strong>Project knowledge</strong> is what the AI is missing. It doesn&#8217;t know <em>your</em> system. It doesn&#8217;t know which directories are read-only and which aren&#8217;t. It doesn&#8217;t know whether your team overrides by extending the base module or by replacing it entirely &#8212; and why, and when each approach is correct. It doesn&#8217;t know your test naming convention, your branch strategy, the module map that evolved over years to reflect the specific shape of your business. This knowledge lives in the people who&#8217;ve been here long enough to absorb it. It isn&#8217;t written down anywhere the AI can find.</p><p>When you ask an AI to write code in a system it knows in the abstract but not in the specific, it fills the gaps with its best guess. Its best guess is always the simplest, most generic approach &#8212; the one that works on a clean implementation, not on yours.</p><p>That&#8217;s not a tool problem. It&#8217;s a context problem.</p><p><strong>And context problems require context infrastructure to solve them.</strong></p><div><hr></div><p>Marcus&#8217;s senior engineers weren&#8217;t being resistant when they flagged these failures.</p><p>They were being precise.</p><p><em>&#8220;The AI doesn&#8217;t know our override pattern.&#8221;</em> Precise. <em>&#8220;It keeps writing to the wrong layer.&#8221;</em> Precise. <em>&#8220;I&#8217;d spend less time doing this myself.&#8221;</em> Precise, and worth listening to.</p><p>The developers flagging AI failures in your team are not the obstacle to transformation. They&#8217;re the most accurate diagnostic instrument you have. They can see exactly where the gap is because they live inside it every day.</p><p>The gap is not capability. The AI is capable.</p><p>The gap is context. And the organisation hasn&#8217;t built the infrastructure to deliver it.</p><div><hr></div><p>This is the problem I spent time living inside &#8212; not as an outside consultant looking in, but as someone embedded in the work, in the weeds, feeling the same pressure Marcus feels on the drive home.</p><p>What came out of that time was a framework. Six layers. Each one teaching the AI something it cannot infer on its own &#8212; built in a specific order, because the order matters as much as the layers themselves.</p><p>The first layer tells the AI what it must never touch, and exactly how to override things correctly. Without this, everything else is built on sand.</p><p>The second &#8212; <em>and this was the surprise</em> &#8212; turns out to be the highest-leverage file in the entire system. Not platform documentation. Not API references. <strong>Project conventions.</strong> The specific decisions your team has made about how work gets done here.</p><p>The third layer configures what the AI can do without interrupting you, and what always needs a human in the loop. The fourth handles the operations that happen once a quarter and have no margin for error. The fifth encodes what &#8220;done&#8221; means &#8212; the team&#8217;s definition of quality, made legible to the AI. The sixth gives the AI continuity across sessions, so it starts a new conversation already carrying the context it built up in the last one.</p><p>None of these are prompts. <strong>They&#8217;re files.</strong> Committed to the repository, version-controlled, living next to the code they govern.</p><p>The total upfront investment to build all six is roughly one day. One focused day to construct the skeleton. After that, the system accumulates context naturally as you work. And the AI &#8212; the same AI that was producing plausible-looking code in the wrong place &#8212; starts producing output that fits. That respects the architecture. That your senior engineers can review in minutes rather than hours.</p><p><em>Velocity compounds. Not because the tool improved. Because you gave it what it needed.</em></p><div><hr></div><p>Back in the car, in the dark, Marcus asks himself a different question.</p><p>Not the one he&#8217;s been asking &#8212;</p><p><em>Why isn&#8217;t this working the way it&#8217;s supposed to?</em></p><p>The one underneath it.</p><p><em><strong>What does the AI actually need from us that we haven&#8217;t given it yet?</strong></em></p><p>It&#8217;s a small shift in language. It&#8217;s a significant shift in posture. It moves the problem from the tool&#8217;s shortcomings to the environment the tool is operating in. And once you make that move, the path forward becomes clearer &#8212; not easy, not instant, but clear.</p><p>You stop waiting for the AI to figure out your codebase.</p><p>You start building the infrastructure that lets it.</p><p><em>That&#8217;s what this series is.</em></p><div><hr></div><p><strong>In Part 2:</strong> Layer 1 &#8212; the single most important constraint in the system. The one rule that, if the AI breaks, creates work another developer has to find and undo. What it is, what it contains, and the exact test that tells you whether it&#8217;s working.</p><div><hr></div><p><em>Subscribe to get each part as it lands. If you&#8217;ve been following the LinkedIn series on AI on customised enterprise platforms, this is where the framework gets the depth the LinkedIn format wouldn&#8217;t allow.</em></p><p><em>If you&#8217;re navigating this on a heavily customised platform right now and want to talk it through, email contact@brownfieldai.dev or message me on LinkedIn. I&#8217;m always up for a direct conversation.</em></p><div><hr></div><p><em>Kinnaree Patel is the founder of Brownfield AI, which helps enterprises get AI delivering real business results on the platforms they already run. She writes from live experience inside an enterprise AI transformation. Want to talk it through? Email contact@brownfieldai.dev or visit brownfieldai.dev.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insights.brownfieldai.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Brownfield AI! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Mirror Effect: Why AI Won’t Replace Engineers — It Will Reveal Them]]></title><description><![CDATA[The real AI divide isn't human versus machine. It's between organisations that treat AI as a headcount cut and those that treat it as a capability multiplier.]]></description><link>https://insights.brownfieldai.dev/p/the-mirror-effect-ai-engineers</link><guid isPermaLink="false">https://insights.brownfieldai.dev/p/the-mirror-effect-ai-engineers</guid><dc:creator><![CDATA[Brownfield AI]]></dc:creator><pubDate>Sun, 23 Nov 2025 22:00:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ffef4dca-ba2b-491b-bdf2-d9f282d533b8_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>The Boardroom Fantasy vs. The Engineer&#8217;s Denial</strong></h3><p>There is a tension I keep seeing lately. It&#8217;s quiet, but it&#8217;s everywhere&#8212;in work conversations with colleagues, in leadership boardrooms, and in those side discussions at technical meetups.</p><p>Someone always brings up AI. And immediately, the room splits into two different worlds.</p><p>In the boardroom, a leader leans over their coffee with a subtle, spreadsheet-driven excitement: <em>&#8220;If AI is doing the work, surely we don&#8217;t need as many developers next year? We can finally fix the budget.&#8221;</em></p><p>At the meetup, a Senior Engineer stands with arms crossed, defensive and cynical: <em>&#8220;These models write garbage tests. They hallucinate libraries. They will never write real logic. It&#8217;s all hype.&#8221;</em></p><p>Two completely different fears.</p><p>And yet, both beliefs are rooted in the same fundamental misunderstanding.</p><p>This is the <strong>Real AI Divide</strong>. It isn&#8217;t a battle between humans and machines. It&#8217;s a battle between the assumptions we hold about what AI actually is.</p><p>The leaders think it&#8217;s a replacement. The engineers think it&#8217;s a toy.</p><p>They are both wrong. And the truth sits somewhere far more interesting, far more human, and&#8212;for those willing to look&#8212;far more revealing.</p><h3><strong>My Own Turning Point</strong></h3><p>I didn&#8217;t develop these views from reading McKinsey reports. I learned this the hard way, through my own workflow.</p><p>I have always been a strong problem-solver. I thrive on the &#8220;why.&#8221; I am someone who likes to make immediate decisions, challenging assumptions based on data and customer experience.</p><p>But, like everyone else, I had my own weaknesses.</p><p>For years, documentation was a weight I dragged around. Drafting complex system documents, writing detailed tickets, or engaging in long-form async written communication drained me. I could do it, but it never interested me. It was slow. It was friction. It led to procrastination.</p><p>Then, I integrated AI into my workflow.</p><p>Suddenly, the friction vanished. I could feed my raw, complex technical thoughts into the model, and it would structure them into perfectly articulated documentation in seconds. The repetitive admin tasks that used to bore me were gone.</p><p>But more importantly, my strengths went into hyperdrive. Because I had data available faster, my decision-making cycle shortened. My brainstorming became faster and even more structured. Documentation was no longer a weight &#8212; it became a superpower.</p><p>AI didn&#8217;t only write the logic for me. It didn&#8217;t only help solve the problem for me. <strong>It removed the barrier between my brain and the output.</strong></p><p>This experience taught me the most important lesson of the AI era:<br><strong>The Mirror Effect.</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://insights.brownfieldai.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://insights.brownfieldai.dev/subscribe?"><span>Subscribe now</span></a></p><h3><strong>Your AI is a Software Extension of You</strong></h3><p>Here is the operational reality that most organizations haven&#8217;t grasped yet: <strong>Generative AI outputs are only as good as the context you provide.</strong></p><p>If you treat ChatGPT or Claude like a Google search bar and ask generic questions, you will get generic, StackOverflow-tier answers. This reinforces the engineer&#8217;s bias that &#8220;AI isn&#8217;t good at complex tasks.&#8221;</p><p>But if you treat the model as a <strong>contextual engine</strong>&#8212;if you feed it your schema, your architectural constraints, your preferred design patterns, and your specific business logic&#8212;something shifts. The model stops guessing and starts <em>extending</em>.</p><p><strong>This is The Mirror Effect.</strong></p><p>If you are a sloppy engineer who writes vague requirements, AI will amplify that sloppiness at speed. It will generate vague, buggy code faster than you ever could.</p><p>But if you are a strategic engineer who understands system design, AI becomes an <strong>accelerated version of yourself.</strong> It adopts your style. It adheres to your constraints. It handles the implementation details while you handle the structural integrity.</p><p>This is why the &#8220;replacement&#8221; narrative is flawed. You cannot replace an engineer with AI, because the AI <em>needs</em> the engineer&#8217;s context to function.</p><h3><strong>The Operational Reality: Context is King</strong></h3><p>Context is the currency of the future.</p><p>Think about how humans operate. We make decisions based on our &#8220;context&#8221;&#8212;our upbringing, our experiences, our worldview. That is how we interpret a statement or solve a problem.</p><p>AI is no different. It needs a worldview to function.</p><p>The mistake engineers make is assuming AI knows what they know. It doesn&#8217;t. The engineers who fail are the ones who expect magic. The engineers who succeed are the ones who treat AI as a junior partner that needs to be onboarded into the project&#8217;s specific constraints.</p><h3><strong>The Shift: From &#8220;Writer&#8221; to &#8220;Orchestrator&#8221;</strong></h3><p>So, if <strong>AI isn&#8217;t replacing us</strong>, what is it doing?</p><p><strong>It is aggressively moving the value line up the stack.</strong></p><p>For the last 20 years, a software engineer&#8217;s value was largely defined by their ability to translate logic into syntax. Software engineers were paid to know the &#8220;how&#8221;&#8212;how to write the loop, how to configure the webpack, how to center the div.</p><p>That era is over. The &#8220;how&#8221; is now a commodity. The &#8220;what&#8221; and the &#8220;why&#8221; are the new gold.</p><p>We are entering the era of the <strong>Engineer as Orchestrator.</strong></p><p>In this new model, the engineer&#8217;s role shifts from <em>typing code</em> to <em>designing systems.</em> You are no longer the bricklayer; you are the architect who directs a team of infinite, incredibly fast (but occasionally hallucinating) bricklayers.</p><p>This requires a massive mental model shift for leadership.</p><h3><strong>The Future Team: Lean, Fluid, and AI-Native</strong></h3><p>I believe the structure of our teams is about to change fundamentally.</p><p>Teams will become leaner, but their capabilities will expand. We will see a blurring of roles:</p><ul><li><p><strong>Product Managers</strong> will shape UX/UI prototypes using AI-Native tools.</p></li><li><p><strong>Designers</strong> will build functional front-end flows.</p></li><li><p><strong>Engineers</strong> will gain the superpower to handle multiple functions&#8212;a front-end dev will handle backend logic for standard tasks because the AI bridges the syntax gap.</p></li></ul><p>Does this mean the death of the specialist? No.</p><p>We will still need specialists for the heavy lifting&#8212;the <strong>Enterprise Architects</strong> designing enterprise security protocols, the <strong>Backend Engineers</strong> scaling distributed systems, or the <strong>Product Managers</strong> and <strong>UX Designers</strong> mapping complex human journeys.</p><p>But for 80% of the work, roles will become fluid.</p><p><strong>The project will define the team &#8212; not the org chart.</strong></p><p>But to lead this fluid team, you have to measure it differently. You cannot lead an AI-native team with pre-AI metrics.</p><h3><strong>The Leadership Imperative: Changing the Metrics</strong></h3><p>If you are a leader responsible for accelerating or maximizing the productivity of engineering teams, you need to stop measuring &#8220;lines of code&#8221; or &#8220;velocity points&#8221; immediately. Those metrics are now meaningless because AI can inflate them to infinity.</p><p>Instead, you need to focus on <strong>Value Velocity</strong> and <strong>Competitive Edge.</strong></p><p>The investment you make in AI shouldn&#8217;t be to cut costs; it should be to <strong>accelerate time-to-market.</strong></p><ul><li><p><strong>Old World:</strong> A feature takes 4 weeks because 3 weeks are spent writing boilerplate, writing tests, and debugging syntax errors.</p></li><li><p><strong>New World:</strong> The same feature takes 1 week because AI handles the boilerplate and tests in minutes.</p></li></ul><p><strong>The Question for Leaders:</strong> What are you doing with those saved 3 weeks?</p><p>If your answer is &#8220;firing the engineers,&#8221; you have already lost. Your competitors are using those 3 weeks to:</p><ol><li><p><strong>Innovate:</strong> Build the experimental features that were previously &#8220;too expensive&#8221; to try.</p></li><li><p><strong>Harden:</strong> Improve security and resilience (technical debt payoff).</p></li><li><p><strong>Refine:</strong> Polish the user experience to world-class levels.</p></li></ol><p>AI gives you a speed advantage. <strong>Culture determines whether you use that speed to win the race or just to run off a cliff.</strong></p><h3><strong>The New Skill Matrix: What to Hire For</strong></h3><p>As a hiring manager, I am no longer impressed by a candidate who can memorize LeetCode solutions. I can get an agent to solve LeetCode in 3 seconds.</p><p>I am looking for <strong>Contextual Architects.</strong></p><p>To survive and thrive in this accelerated reality, engineers need three new non-negotiable skills:</p><ol><li><p><strong>Prompt Engineering (Context Injection):</strong> The ability to clearly articulate <em>constraints</em> and <em>context</em> to a model. This is really just &#8220;requirements gathering&#8221; on steroids.</p></li><li><p><strong>Validation &amp; Auditing:</strong> You can no longer trust the code you read. You must be an expert at <em>reading</em> and <em>verifying logic</em> you didn&#8217;t write. The skill of &#8220;debugging&#8221; is becoming more valuable than the skill of &#8220;writing.&#8221;</p></li><li><p><strong>System Thinking:</strong> Understanding how the pieces fit together. Since AI handles the micro (the function), the human must handle the macro (the system).</p></li></ol><p>Notice what is missing from this list? Syntax.</p><p>The barrier to entry has shifted. We are moving from a world where you are paid for <em>code generation</em> to a world where you are paid for <em>value verification</em>. This shift is scary for those holding onto the past, but for the prepared, it creates a distinct opening.</p><h3><strong>Conclusion: The Unfair Advantage</strong></h3><p>The &#8220;Two-Sided Failure&#8221; I see in our industry&#8212;executives cutting heads and engineers rejecting tools&#8212;is actually a massive opportunity for <em>you</em>.</p><p>If you are a leader who understands that AI is an <strong>accelerator of talent</strong>, not a replacement for it, you will build a team that operates at a completely different level and leaves the competition behind. You will have engineers who are happier (because they aren&#8217;t writing boilerplate) and a product that ships faster.</p><p>And if you are an engineer who embraces the <strong>Mirror Effect</strong>, learning to feed your context into the machine, you will become the most productive, impactful version of yourself.</p><p>The future doesn&#8217;t belong to AI. It belongs to the Orchestrators who know how to lead it &#8212; and the organizations wise enough to empower them.</p><div><hr></div><p><em>Kinnaree Patel is the founder of Brownfield AI, which helps enterprises get AI delivering real business results on the platforms they already run. She writes from live experience inside an enterprise AI transformation. Want to talk it through? Email contact@brownfieldai.dev or visit brownfieldai.dev.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://insights.brownfieldai.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://insights.brownfieldai.dev/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>