<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://blog.davidlapsley.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.davidlapsley.io/" rel="alternate" type="text/html" /><updated>2026-07-27T16:19:19+00:00</updated><id>https://blog.davidlapsley.io/feed.xml</id><title type="html">David Lapsley</title><subtitle>David Lapsley&apos;s blog on AI infrastructure, agentic SDLC, distributed systems, and engineering leadership.</subtitle><author><name>David Lapsley, Ph.D.</name></author><entry><title type="html">What AWS Taught Me About Automating Expert Judgment</title><link href="https://blog.davidlapsley.io/engineering/ai/infrastructure/2026/07/27/what-aws-taught-me-about-automating-expert-judgment.html" rel="alternate" type="text/html" title="What AWS Taught Me About Automating Expert Judgment" /><published>2026-07-27T00:00:00+00:00</published><updated>2026-07-27T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering/ai/infrastructure/2026/07/27/what-aws-taught-me-about-automating-expert-judgment</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering/ai/infrastructure/2026/07/27/what-aws-taught-me-about-automating-expert-judgment.html"><![CDATA[<p>From 2021 to 2024, I led teams at AWS whose entire job was to take the
judgment of the world’s best network engineers and turn it into
software. I was hired to build the AWS Intent Driven Networking (AIDN)
team from scratch, and later formed the Network Fabric Controllers
organization, bringing AIDN, Scalable Intent Driven Routing (SIDR),
and several other control-plane teams together under one roof.</p>

<p>Some scope before anything else, because “the AWS network” is a phrase
that invites overclaiming. Amazon’s networking organization is
enormous, and it splits across very different problem domains: the
border, the backbone, the edge, the data center. I worked in the data
center part of it, specifically on data center fabrics. AIDN and SIDR
were one set of systems among many operating that vast network, and
other organizations ran their own control and management systems for
the parts I never touched. What AIDN and SIDR became, together, was
the management and control plane for the largest network fabric in
Amazon’s history. Big claim, bounded scope. The bounding matters for
everything that follows, because the lessons below come from one
domain, not from the whole network.</p>

<p>Credit where it belongs before I go further. AIDN was the vision of
Stephen Callaghan, one of our senior Principal Engineers, and SIDR was
the vision of another, JR Rivers. My job was to build and lead the
teams that turned their combined vision into production systems
operating Amazon’s data center fabrics at scale, and I had exceptional
engineers to do it with. And to be clear about what “leading” meant:
I wasn’t just running the program. I spent much of those three years
in the technical work itself, in design reviews, architecture debates,
and operational deep dives alongside the PEs and the teams. That’s
where most of the lessons below come from.</p>

<p>I didn’t think of it in these terms at the time, but this is exactly
what everyone building with AI is trying to do right now: capture
expert judgment and put it inside a system that can execute it faster,
more consistently, and at greater scale than the experts themselves.
The fabric got there without LLMs. The lessons from that journey map
almost one-to-one onto the problems AI teams are hitting today.
Most of those teams are earlier in the journey than they think.</p>

<h2 id="the-bottleneck-was-never-bandwidth-it-was-judgment">The bottleneck was never bandwidth. It was judgment.</h2>

<p>By 2021, data center fabric operations had a problem that no amount of
hardware could fix. The systems used to run the fabrics had grown
organically over more than a decade, alongside the separate systems
other parts of the network relied on, with little shared structure
between them. Critical operational knowledge was spread across
multiple systems, none of which was authoritative. The same
information was duplicated in different places, in different formats,
with no guarantee the copies agreed. And the whole apparatus was
reaching its limits. Not in packets per second, but in <em>operations</em>
per second. The constraint on growth was how fast humans could safely
decide things: how to route around a failure, when to shift traffic
off a device, whether a change was safe to push.</p>

<p>That’s why AIDN existed. Stephen had the vision, and I was brought in
to build the team, greenfield, with a mandate the job postings later
described accurately: completely re-imagine how one of the largest
networks on the planet would be operated for the next decade. In
practice, that meant the fabric layer. Ambitious enough.</p>

<p>But AWS had already tried to automate this judgment once. The way that
first attempt fell short taught me more than the eventual solution
did.</p>

<h2 id="the-yaml-era-capturing-judgment-is-not-automating-it">The YAML era: capturing judgment is not automating it</h2>

<p>Before AIDN, fabric engineering judgment <em>had</em> been captured, in
infrastructure-as-code. Routing policy decisions, for example, lived
in what amounted to a lightweight wrapper around BGP policy, expressed
as a large collection of YAML files in a git repo.</p>

<p>On paper, this looks like automation. The expert’s decision is written
down, version-controlled, reviewable, repeatable. In practice, it was
reaching the end of its life. The YAML was surprisingly hard to
maintain. It was hard to test; you couldn’t easily answer “what does
the network do if I merge this?” It was hard to keep well-structured
and normalized, and the repo accumulated near-duplicates and special
cases the way all shared config repos do. Every change still required
an expert to hold the whole system in their head. The reason is worth
stating plainly: those files captured code and configuration, not
intent. They were the <em>output</em> of expert judgment, rendered in a
machine-applicable format. The judgment itself, the reasoning that
produced the configuration, never made it into the artifact.</p>

<p>And to be clear, this wasn’t a naive setup. There were real safety
systems wrapped around those repos: CI/CD pipelines, validation
checks, deployment automation. The problem is that guardrails built
beside the artifact scale no better than the artifact itself. The
pipelines took a long time to run, which meant engineers waited hours
to learn whether a change was safe. They grew fragile as the config
sprawled, breaking in ways that had nothing to do with the change
under test. And bugs still crept through and got deployed, because the
checks could only inspect the configuration, not the intent behind it.
You can’t verify that a change does what the expert meant when the
system has no representation of what the expert meant. The safety net
had the same operational-scalability ceiling as the YAML it guarded.</p>

<p>That’s the distinction that matters. A YAML file that says “prefer
this path” captures a decision. It doesn’t capture <em>why</em>, under what
conditions the decision holds, or how to verify it’s still correct. So
every time conditions changed, a human had to re-derive the reasoning
and update the artifact. We had automated the typing, not the
thinking. And it was hitting the same wall as manual operations. It
just hit it a few years later.</p>

<p>None of this is a knock on AWS, and none of it is unique to Amazon.
Every large infrastructure organization I’ve worked in or with has a
version of this repo, and most of them are in far worse shape. AWS
almost certainly operates networks better than anyone else on the
planet. That’s the point worth sitting with. This ceiling is not a
symptom of doing infrastructure badly. It is what you hit <em>after</em> you
have done everything else right, and it shows up first at the
organizations furthest along. If the best network operators in the
world had to build their way past it, the odds that your prompt repo
escapes it are not good.</p>

<p>If you’re building with LLMs today, you should recognize this era,
because you’re probably living in it. A prompt is a YAML file. It is
the rendered output of expert judgment, not the judgment: hard to
test, hard to keep normalized, silently accumulating special cases,
and still dependent on the original expert to maintain. Prompt
libraries are the config repos of AI. They’re a real step forward, and
they will hit exactly the same wall. So will the CI bolted on beside
them, if what it checks is the artifact rather than the intent: slow
eval suites that gate every change, grow brittle as the prompt
sprawls, and still
let regressions through because they don’t encode what the expert
actually wanted.</p>

<h2 id="what-aidn-did-differently">What AIDN did differently</h2>

<p>AIDN’s answer, visible now in AWS’s <a href="https://d1.awsstatic.com/events/Summits/reinvent2023/NET401-R_AWS-journey-toward-intent-driven-network-infrastructure-REPEAT.pdf">re:Invent NET401 talk</a> and the <a href="https://patents.justia.com/patent/12155530">intent-driven network management patent family</a>, was to stop
encoding decisions and start encoding <em>intent</em>: the operational
outcome the expert wants, declared formally, without specifying how to
achieve it. “Traffic between hosts in this zone never leaves this
zone” is an intent. The thousands of device configurations that
enforce it are the system’s problem, not the engineer’s.</p>

<p>Three properties made this work, and I’d argue all three are
non-negotiable for any system that automates expert judgment, network
or AI.</p>

<p><strong>It was authoritative.</strong> Every applied intent went into a
transactional journal: a single source of truth recording what was
intended, when it was approved, and when the network converged to it.
This is precisely what the pre-AIDN world lacked. Duplicated,
non-authoritative state is where automated judgment goes to die,
because when two systems disagree about what should be true, a human
gets pulled back in to arbitrate. At that point your automation is a
suggestion.</p>

<p><strong>It was verified before it acted.</strong> Proposed intents didn’t go
straight to the network. They passed admission control:
simulation-based functional verification, conflict detection against
every intent already in the journal, change-control and SLA checks.
Judgment was tested the way code is tested. Before deployment,
automatically, every time.</p>

<p><strong>It was verified after it acted, forever.</strong> The system continuously
compared observed network behavior against the journal’s intended
behavior. When they diverged, it could roll back the transaction,
adjust, or escalate to a human. The loop is closed. Nobody assumes the
automated judgment stays correct; the system checks.</p>

<p>Notice what’s absent from that list: intelligence. AIDN’s translation
layer, the compilers turning intents into device-native artifacts, was
sophisticated, but it wasn’t the source of trust. The trust came from
the journal, the admission checks, and the drift correction. That’s
the part AI builders keep getting backwards. Teams pour effort into
making the model smarter and treat evaluation as an afterthought, when
the AWS lesson is that <em>the verification machinery is the product</em>.
The intelligence is replaceable.</p>

<h2 id="sidr-deciding-where-the-judgment-lives">SIDR: deciding where the judgment lives</h2>

<p>SIDR, the system JR envisioned and whose team I later inherited,
solved a different judgment problem: not “what should the network do?”
but “who decides, and how fast?”</p>

<p>SIDR is the routing protocol behind AWS’s 10p10u fabric, the network
that gives massive Trainium UltraClusters ten petabytes of capacity at
under ten microseconds of latency. At that scale, during AI training,
every server talks to every other server simultaneously, and a link
failure has to be routed around in well under a second. No human is in
that loop. No <em>central system</em> can even be in that loop; the speed of
light won’t allow it.</p>

<p>Peter DeSantis walked through SIDR’s architecture in his <a href="https://www.networkworld.com/article/3617188/aws-upgrades-its-10p10u-network-to-handle-massive-ai-clusters.html">re:Invent 2024 Monday Night Live keynote</a>. A
central planner with global visibility distills the network’s
structure into directives and pushes them to every switch, and each
switch then makes its own local decisions when a failure occurs.
Expensive, slow, context-rich judgment happens centrally and rarely.
Cheap, fast, local judgment happens at the edge, constantly, within
guardrails the planner computed. The result is failure response in
under one second, roughly ten times faster than the alternatives.</p>

<p>That decomposition, plan centrally, execute locally, constrain the
executor, is the right mental model for agentic AI systems. The
mistake I see constantly is putting all the judgment in one place:
either a single monolithic agent making every decision (slow,
expensive, a single point of failure) or fully autonomous sub-agents
with no shared plan (fast, and incoherent). The systems that work
distill global intent into local guardrails, then let execution run
free inside them.</p>

<h2 id="the-org-lesson-teams-must-own-the-whole-loop">The org lesson: teams must own the whole loop</h2>

<p>In 2023 we made a call: AIDN and SIDR were too tightly coupled to live
in separate organizations, and SIDR was solving hard problems that
deserved a dedicated leadership focus it couldn’t get while the loop
was split across org boundaries. We merged them, along
with several other software controller teams, into a single group:
Network Fabric Controllers. Together, those systems became the
management and control plane for the largest network fabric in
Amazon’s history.</p>

<p>The technical logic was simple. An intent system that can’t control
routing, and a routing system that doesn’t know intent, are each half
of a control loop. But the deeper lesson was organizational. When you
automate expert judgment, the unit of ownership has to be the <em>entire
loop</em>: intent, translation, execution, observation, correction. Split
the loop across team boundaries and every drift incident becomes a
cross-team negotiation, which means the loop effectively isn’t closed
at all.</p>

<p>AI teams are recreating this mistake today. One team owns prompts,
another owns the model, a third owns evals, and nobody owns drift in
production. If your eval team and your agent team file tickets at each
other, you don’t have a closed loop. You have YAML with extra steps.</p>

<h2 id="where-this-leaves-us">Where this leaves us</h2>

<p>Automating expert judgment is not a new problem, and it isn’t
primarily a model-capability problem. AWS automated the judgment of
elite network engineers using deterministic software, and the hard-won
structure was: make the judgment explicit and declarative; store it in
one authoritative, transactional place; verify before acting; watch
for drift forever; put slow judgment in the center and fast judgment
at the edge; and organize teams around whole control loops.</p>

<p>LLMs change the economics of the translation layer. The part that
turns intent into action is now shockingly general. What they don’t
change is everything around it. Most AI systems in production today
are at the YAML stage: captured judgment, no admission control, no
journal, no drift detection, open loops everywhere. The teams that
internalize the rest of the structure first are going to operate their
AI the way AWS operates its fabrics: declaratively, verifiably, and at
a scale where the experts’ judgment outlives the experts’
availability.</p>

<p>That’s the work I’m doing now. The network was just the first fabric.</p>

<h2 id="references">References</h2>

<ul>
  <li>Stephen Callaghan, <a href="https://d1.awsstatic.com/events/Summits/reinvent2023/NET401-R_AWS-journey-toward-intent-driven-network-infrastructure-REPEAT.pdf">AWS’s journey toward intent-driven network infrastructure (NET401)</a>, AWS re:Invent, 2023.</li>
  <li>Amazon Technologies, <a href="https://patents.justia.com/patent/12155530">US 12,155,530: Intent-driven network management</a>, granted 2024, and <a href="https://patents.justia.com/patent/20250175479">US 2025/0175479</a>, published 2025.</li>
  <li>Peter DeSantis, Monday Night Live keynote, AWS re:Invent, 2024, via <a href="https://www.networkworld.com/article/3617188/aws-upgrades-its-10p10u-network-to-handle-massive-ai-clusters.html">Network World’s coverage of 10p10u and SIDR</a>, 2024.</li>
  <li><a href="https://www.amazon.jobs/en/jobs/3016585/sr-software-dev-engineer-intent-driven-network">Sr. Software Dev Engineer, Intent Driven Network</a>, Amazon.jobs.</li>
</ul>

<hr />

<blockquote>
  <p>David Lapsley, Ph.D., is Founder and CEO of
ShipKodeAI. Over a 26-year career, he has spent 15
years building infrastructure and platform products.
Previously Director of Network Fabric Controllers at
AWS, the team that powered the largest network fabric
in Amazon’s history, and Director at Cisco (DNA Center
Maglev Platform, $1B run rate). He writes about AI
infrastructure, AI-accelerated SDLC, and the gap
between POC and production.</p>
</blockquote>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering" /><category term="AI" /><category term="Infrastructure" /><category term="aws" /><category term="intent-driven-networking" /><category term="ai-infrastructure" /><category term="automation" /><category term="agentic-ai" /><summary type="html"><![CDATA[Lessons from building AWS's intent-driven networking and network fabric controller teams, and what they teach us about automating expert judgment with AI.]]></summary></entry><entry><title type="html">AI Agents Are Finding Vulnerabilities Faster Than You Can Patch Them</title><link href="https://blog.davidlapsley.io/ai/security/vulnerability-research/2026/04/04/ai-agents-finding-vulnerabilities-faster-than-you-can-patch.html" rel="alternate" type="text/html" title="AI Agents Are Finding Vulnerabilities Faster Than You Can Patch Them" /><published>2026-04-04T00:00:00+00:00</published><updated>2026-04-04T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/ai/security/vulnerability-research/2026/04/04/ai-agents-finding-vulnerabilities-faster-than-you-can-patch</id><content type="html" xml:base="https://blog.davidlapsley.io/ai/security/vulnerability-research/2026/04/04/ai-agents-finding-vulnerabilities-faster-than-you-can-patch.html"><![CDATA[<p>The Linux kernel security list used to receive 2-3 bug reports per week. That was two years ago. Last year it was 10 per week. This year it is 5-10 per day.</p>

<p>Greg Kroah-Hartman, the Linux kernel maintainer, confirmed the shift publicly about a month ago. The change was not gradual. It was a step function. And the reports are not AI slop anymore. They are real, high-quality vulnerability reports from AI agents that can read code, understand control flow, trace data dependencies, and identify exploitable patterns at a scale and speed that no human reviewer can match.</p>

<p>Willy Tarreau, maintainer of HAProxy, noted that duplicate reports are now common. Multiple AI agents, running independently against the same codebase, finding the same vulnerability at the same time. This is not theoretical. This is happening right now, every day, on one of the most security-critical codebases in the world.</p>

<h2 id="the-implication-for-every-cto">The Implication for Every CTO</h2>

<p>Your attack surface is being scanned 24/7 by autonomous agents that do not sleep, do not take vacation, and do not bill by the hour. They are working for security researchers, for competitors, for nation-state actors, and for anyone with a GPU and a public GitHub repository. The discovery side of the equation has already shifted to AI speed. The patch side has not.</p>

<p>Most engineering organizations are built for human-speed vulnerability management. A report comes in. A triage happens. A developer is assigned. A fix is written, reviewed, tested, and deployed. This process takes days or weeks. AI vulnerability discovery takes minutes.</p>

<p>The gap is widening daily.</p>

<h2 id="what-is-actually-happening">What Is Actually Happening</h2>

<p>Thomas Ptacek, a well-known security researcher, wrote an essay that has been circulating widely in the security community. His argument is straightforward: vulnerability research is “cooked.” Not in the sense that it is over—that it has fundamentally changed to the point where the human’s role in the discovery process is becoming optional.</p>

<p>The Linux kernel is the most scrutinized piece of software on the planet. If AI agents can find 5-10 new vulnerabilities per day in the Linux kernel, they can find vulnerabilities in your codebase too. The only question is whether they are looking at it.</p>

<h2 id="the-real-cost">The Real Cost</h2>

<p>I have spent my career in network security. I led the team that built Corelight’s network detection platform using Zeek, and I have two US patents in real-time network attack detection. I have seen vulnerability management from both sides: as a defender building detection systems, and as a leader responsible for shipping secure products.</p>

<p>The most expensive vulnerability is not the one that gets exploited. It is the one you did not know existed. The shift from human-speed to AI-speed discovery changes the risk calculus fundamentally. Every organization that ships software now has to assume their code is being actively scanned by AI agents that will find things before humans do. The question is not whether there are vulnerabilities in your codebase. The question is whether someone else finds them before you patch them.</p>

<h2 id="what-this-means-for-security-teams">What This Means for Security Teams</h2>

<p>The traditional model of vulnerability management is designed for human-scale discovery. That model is obsolete. The new model requires three things that most organizations do not have yet.</p>

<p>First, AI-native threat modeling. Security teams need to be using the same AI tools that attackers use to find vulnerabilities. This is not optional. If your red team is still manually auditing code while attackers use autonomous agents, you are optimizing for the wrong threat model.</p>

<p>Second, patch velocity that matches discovery velocity. The gap between how fast vulnerabilities are found and how fast they are patched is the exploitation window. That window is widening. Reducing it requires investment in automated testing, canary deployments, and rollback infrastructure that most organizations treat as nice-to-haves rather than critical infrastructure.</p>

<p>Third, a strategy for AI-augmented security engineering. Security products now operate in a world where the threat landscape itself is AI-native. The tools used to find vulnerabilities have changed. The tools used to defend against them must change too.</p>

<p>If you are thinking about this problem at your organization, I would love to hear how you are approaching it. Find me on LinkedIn or reach out through the usual channels.</p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="AI" /><category term="Security" /><category term="Vulnerability-Research" /><summary type="html"><![CDATA[AI agents are finding 5-10 new Linux kernel vulnerabilities per day. The gap between discovery speed and patch speed is the new risk frontier for every CTO.]]></summary></entry><entry><title type="html">The Agentic SDLC Transition Is Happening Whether Your Team Is Ready or Not</title><link href="https://blog.davidlapsley.io/engineering%20leadership/ai%20infrastructure/2026/04/01/agentic-sdlc-transition.html" rel="alternate" type="text/html" title="The Agentic SDLC Transition Is Happening Whether Your Team Is Ready or Not" /><published>2026-04-01T00:00:00+00:00</published><updated>2026-04-01T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering%20leadership/ai%20infrastructure/2026/04/01/agentic-sdlc-transition</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering%20leadership/ai%20infrastructure/2026/04/01/agentic-sdlc-transition.html"><![CDATA[<p>A leaked internal memo from Red Hat’s CTO and SVP of Engineering, dated March 31, 2026, is making the rounds. The headline: all of Global Engineering is required to adopt an “Agentic Software Development Lifecycle.” Engineers must use AI tooling. Workflows will be measured by objective metrics: cycle time, defect rate. Roles are “evolving.”</p>

<p>The Register’s headline said it more plainly: <em>“Sounds like an excellent time to start honing your Debian skills.”</em></p>

<p>The same week: Oracle cut 30,000 employees, 18% of its workforce, while posting $6 billion quarterly profit. The stated reason is funding $156 billion in AI infrastructure. Meanwhile, Anthropic quietly acknowledged that enterprise users of Claude Code are burning through token quotas “way faster than expected,” causing widespread outages in automated workflows.</p>

<p>These three stories are not separate events. They are the same event, seen from different angles.</p>

<p>The agentic software development lifecycle is no longer a slide in a conference deck. It is being operationalized, often badly, right now.</p>

<h2 id="what-agentic-sdlc-actually-means">What “Agentic SDLC” Actually Means</h2>

<p>Let’s be precise, because the term gets used loosely.</p>

<p>The traditional SDLC is a human-driven sequence: requirements, design, implementation, test, deploy, operate. AI tools in the last two years have augmented individual steps: copilot autocomplete, AI-assisted code review, LLM-generated test cases.</p>

<p>Agentic SDLC is different in kind, not just degree. An agent doesn’t assist a human writing a function. It takes a specification, plans a sequence of actions, writes code, runs tests, reads the failures, revises the implementation, and iterates autonomously, in a loop, often across hundreds of API calls per task.</p>

<p>The difference shows up in the numbers. Anthropic’s Claude Code customers ran over quota faster than anyone expected because agentic tasks don’t consume tokens like chat sessions. A single coding task might trigger 200-500 LLM calls. The token economics of agentic work are an order of magnitude different from the chat-mode assumptions baked into most AI contracts and infrastructure plans.</p>

<p>This is why the capacity crunch surprised Anthropic. It will surprise every engineering org that has priced or provisioned AI services based on chat-mode baselines.</p>

<h2 id="the-problem-with-the-mandate-approach">The Problem With the Mandate Approach</h2>

<p>Red Hat’s memo-mandate approach to this transition is understandable. It’s also likely to fail, or at minimum, produce compliance without competence.</p>

<p>Here’s why.</p>

<p>Mandating tooling adoption without restructuring workflows produces engineers who use AI tools the same way they used non-AI tools. They write a prompt like a function signature, accept the first output that compiles, and ship code they haven’t actually internalized. The productivity gain is real but shallow. The architectural decisions, the edge case handling, the operational assumptions: those are still being made by engineers who may or may not have developed the judgment to evaluate AI output critically.</p>

<p>Worse: it creates a new class of technical debt that’s harder to see. Code written by an agent and reviewed at the output level by a human who’s optimized for throughput is code that works today and surprises you in six months.</p>

<p>The more dangerous failure mode is organizational. When you mandate AI adoption and tie it to objective metrics, you incentivize engineers to optimize the metrics rather than the underlying work. Cycle time goes down. Defect rate, measured on a 30-day lag, looks fine. What you’ve actually done is moved risk downstream, into production, into customer experience, into the next major incident.</p>

<h2 id="what-the-transition-actually-requires">What the Transition Actually Requires</h2>

<p>I’ve led engineering organizations through technology transitions: from on-premise to cloud-native, from monolith to microservices, from human-review-only to automated CI/CD gates. The pattern of what works is consistent.</p>

<p><strong>The unit of change is the workflow, not the tool.</strong></p>

<p>Engineers don’t need to be told to use Claude Code. They need their development workflow redesigned around what agentic tools are good at and where they break down. That’s a different conversation, and it requires someone who understands both the tools and the existing workflow well enough to know where the leverage points are.</p>

<p>For agentic coding tools, this means rethinking the specification layer. An agent doesn’t work well with vague requirements. It works well with precise inputs: acceptance criteria, edge cases, expected behaviors, test fixtures. If your team’s requirements are “build a user profile page,” the agent will hallucinate the rest and you’ll spend two hours correcting a misunderstanding that would have taken five minutes to clarify upfront.</p>

<p>This is not a coincidence. The discipline of writing specifications that are precise enough for an agent to act on is the same discipline that makes software engineering predictable at scale. The teams that do well with agentic tools are, almost without exception, the teams that already write good acceptance criteria, maintain strong test coverage, and treat the specification as a first-class artifact, not an afterthought before the sprint starts.</p>

<p><strong>The transition requires new governance, not just new tools.</strong></p>

<p>When a human writes code, the review process catches most of the important issues. The reviewer can ask “why did you do it this way?” and get a reasoned answer. They can infer intent from the structure of the code.</p>

<p>When an agent writes code, the review process has to be redesigned. You can’t ask the agent why it made a decision, at least not in a way that gives you reliable signal about the underlying reasoning. You’re reviewing output, not process. That requires different checklists, different review focus, and different mental models for what “looks right” means.</p>

<p>The engineering orgs that figure this out first will have a durable advantage. The ones that bolt AI tooling onto existing review processes and call it transformation will be slower and more fragile than the ones that didn’t adopt AI at all.</p>

<p><strong>Measurement needs to evolve simultaneously.</strong></p>

<p>Red Hat is right that objective metrics matter. They’re wrong, or at least incomplete, about which metrics. Cycle time and defect rate are lagging indicators that can be gamed. The leading indicators for a healthy agentic engineering org look more like: specification quality scores, test coverage at specification time (before agent invocation), agent task success rate on first pass, and rework rate on agent-generated code.</p>

<p>These metrics don’t exist as standard dashboard items in Jira or Linear. Building them requires intentional instrumentation and a clear model of what the agentic workflow actually looks like in your context.</p>

<h2 id="the-org-design-question-nobody-is-asking">The Org Design Question Nobody Is Asking</h2>

<p>Most of the conversation about agentic AI and engineering orgs is framed as a staffing question: will we need fewer engineers? The answer is probably yes, in aggregate and over time, for some categories of work. But that’s not the useful question for the next 18 months.</p>

<p>The useful question is: what does your engineering org’s structure look like when agents handle a significant portion of implementation work?</p>

<p>The answer is not “the same structure, but with fewer people.” It’s a different structure. The ratio of people who can write precise specifications to people who write code shifts dramatically. The value of someone who can define acceptance criteria, understand edge cases, and evaluate agent output critically, without writing the implementation themselves, goes up significantly. The value of someone who writes fast, doesn’t ask questions, and ships features goes down relative to its current premium.</p>

<p>This is a different org design problem. It requires thinking about career paths, hiring profiles, and team structures that most engineering leaders haven’t had to consider before. The teams being built today that will thrive in an agentic workflow are not the teams that look like 2024’s high-performing engineering orgs.</p>

<h2 id="what-to-do-now">What to Do Now</h2>

<p>If you’re an engineering leader trying to navigate this transition, a few concrete things that actually matter:</p>

<p><strong>Invest in your specification layer before your agent layer.</strong> The biggest leverage point in an agentic workflow is the quality of the input to the agent, not the sophistication of the agent itself. Teams that develop a disciplined approach to writing specifications, ones that are rigorous enough to act on without human clarification, will get dramatically better results from AI coding tools than teams that don’t, regardless of which model they use.</p>

<p><strong>Audit your token economics.</strong> If you have AI tooling in production and you haven’t modeled what agentic workloads do to your token consumption, you are flying blind. Claude Code’s quota exhaustion issue is not unique to Anthropic. It will hit any team running multi-step agentic workflows at scale. Build the consumption model now.</p>

<p><strong>Redesign review, don’t inherit it.</strong> Your current code review process was designed for human-written code. It needs to be redesigned for agent-generated code. The checklist is different. The focus is different. The time allocation is different. This is one of the highest-leverage investments you can make in the next 90 days.</p>

<p><strong>Change management is the bottleneck, not the technology.</strong> The engineers most resistant to agentic tooling are often your best ones, because they have the most internalized judgment about how software should be built. Losing their buy-in is catastrophic. The transition has to be framed as “we’re raising the floor and changing what good engineering judgment means,” not “we’re automating your job.” Those are different conversations and they land very differently.</p>

<p>The Red Hat memo will probably accomplish something. Engineers will use more AI tooling. Metrics will move. Some of the movement will be real.</p>

<p>But the engineering organizations that come out of this transition with durable advantages won’t be the ones that mandated adoption fastest. They’ll be the ones that understood what actually changes when agents become part of the development loop, and redesigned their workflows, their governance, and their org structures accordingly.</p>

<p>That’s a harder problem than picking the right AI coding tool. It’s also the one worth solving.</p>

<p><em>I’m building <a href="https://shipkode.ai">ShipKode Arc</a>, a governed agentic control plane that structures the journey from customer signal to engineering-ready specification. The specification layer is where most agentic SDLC transitions break down first. If you’re thinking through what this transition looks like for your organization, I’m happy to compare notes.</em></p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering Leadership" /><category term="AI Infrastructure" /><category term="agentic-ai" /><category term="sdlc" /><category term="engineering-leadership" /><category term="ai-transformation" /><category term="cto" /><category term="pdlc" /><category term="org-design" /><summary type="html"><![CDATA[Red Hat mandated it in a leaked memo. Oracle cut 30,000 jobs to fund it. Anthropic's infrastructure buckled under it. The shift to agentic software development is no longer theoretical, and most engineering orgs are completely unprepared for what it means to lead through it.]]></summary></entry><entry><title type="html">CRITICAL: Axios npm Package Backdoored — 100M Weekly Downloads, Cross-Platform RAT</title><link href="https://blog.davidlapsley.io/engineering/cybersecurity/ai%20infrastructure/2026/03/31/critical-axios-npm-package-backdoored.html" rel="alternate" type="text/html" title="CRITICAL: Axios npm Package Backdoored — 100M Weekly Downloads, Cross-Platform RAT" /><published>2026-03-31T00:00:00+00:00</published><updated>2026-03-31T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering/cybersecurity/ai%20infrastructure/2026/03/31/critical-axios-npm-package-backdoored</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering/cybersecurity/ai%20infrastructure/2026/03/31/critical-axios-npm-package-backdoored.html"><![CDATA[<h2 id="critical-axios-npm-package-backdoored--100m-weekly-downloads-cross-platform-rat">CRITICAL: Axios npm Package Backdoored — 100M Weekly Downloads, Cross-Platform RAT</h2>

<p><strong>This is not a drill. Assume compromise if you’ve pulled affected versions. Immediate action required.</strong></p>

<p>Today, the open-source community is grappling with what may be the most sophisticated npm supply chain attack ever documented against a top-10 package. The ubiquitous <code class="language-plaintext highlighter-rouge">axios</code> package, downloaded over 100 million times weekly, was compromised, injecting a hidden dependency that deploys cross-platform Remote Access Trojans (RATs). If your codebase, CI/CD pipelines, or any dependency tree has pulled <code class="language-plaintext highlighter-rouge">axios@1.14.1</code> or <code class="language-plaintext highlighter-rouge">axios@0.30.4</code>, you must treat your environment as fully compromised and take immediate corrective action.</p>

<h3 id="the-attack-operational-sophistication-on-display">The Attack: Operational Sophistication on Display</h3>

<p>Attackers managed to hijack the npm account of maintainer <code class="language-plaintext highlighter-rouge">jasonsaayman</code>. In a move demonstrating advanced operational security, they swapped the npm account’s registered email to a ProtonMail address, ensuring they controlled account recovery. They then published tainted versions (<code class="language-plaintext highlighter-rouge">axios@1.14.1</code> and <code class="language-plaintext highlighter-rouge">axios@0.30.4</code>) containing a malicious, hidden dependency: <code class="language-plaintext highlighter-rouge">plain-crypto-js@4.2.1</code>.</p>

<p>This malicious dependency was no simple script. It was engineered to deploy OS-specific RATs:</p>

<ul>
  <li><strong>macOS:</strong> Installed as a system daemon.</li>
  <li><strong>Windows:</strong> Deployed via PowerShell.</li>
  <li><strong>Linux:</strong> Delivered as a Python backdoor.</li>
</ul>

<p>Compounding the severity, the malicious dependency was staged 18 hours in advance, and three separate payloads were pre-built. The tainted versions were published across both release branches within a mere 39 minutes, maximizing the attack’s reach before detection.</p>

<h3 id="what-this-means-for-you-immediate-action-required">What This Means for You: Immediate Action Required</h3>

<p>This attack bypasses many traditional security measures because it targets the trust inherent in the software supply chain. If you have pulled either <code class="language-plaintext highlighter-rouge">axios@1.14.1</code> or <code class="language-plaintext highlighter-rouge">axios@0.30.4</code>, the following steps are critical:</p>

<ol>
  <li><strong>Assume Full Compromise:</strong> Do not try to ‘clean’ affected systems. Treat them as if all secrets and credentials accessible from that environment have been <em>exfiltrated</em>.</li>
  <li><strong>Rotate ALL Secrets:</strong> Immediately rotate all API keys, passwords, private keys, SSH keys, cloud credentials, and any other sensitive information that could have been accessed from the compromised environment.</li>
  <li><strong>Rebuild from Scratch:</strong> Rebuild your affected services and applications entirely from known-good, trusted sources. Do not rely on existing artifacts that may have been tainted.</li>
  <li><strong>Audit Your Dependencies:</strong> Review your lock files (<code class="language-plaintext highlighter-rouge">package-lock.json</code>, <code class="language-plaintext highlighter-rouge">yarn.lock</code>, etc.) for any instances of <code class="language-plaintext highlighter-rouge">axios@1.14.1</code> or <code class="language-plaintext highlighter-rouge">axios@0.30.4</code>. Remove them and revert to a known-good version (any version prior to 1.14.1 in the 1.x branch, or prior to 0.30.4 in the 0.x branch).</li>
  <li><strong>Enhance CI/CD Security:</strong> This incident underscores the need for robust CI/CD security:
    <ul>
      <li><strong>Implement Dependency Scanning:</strong> Use tools to continuously scan your dependencies for known vulnerabilities and malicious packages.</li>
      <li><strong>Enforce Package Signing:</strong> Utilize tools like Sigstore/cosign to verify the integrity and origin of your packages.</li>
      <li><strong>Secure npm Accounts:</strong> Ensure all npm accounts, especially those with publishing privileges, have strong MFA enabled and are monitored for suspicious activity.</li>
      <li><strong>Reproducible Builds:</strong> Aim for reproducible builds where possible, allowing you to verify that the output binary exactly matches the source code.</li>
    </ul>
  </li>
</ol>

<h3 id="the-broader-implications-trust-in-the-supply-chain">The Broader Implications: Trust in the Supply Chain</h3>

<p>The Axios attack is a stark reminder that the software supply chain is the new perimeter. As developers, we place immense trust in the open-source packages we integrate into our projects. This incident, however, demonstrates that this trust can be exploited with devastating effect. It is no longer sufficient to simply rely on the reputation of a package; proactive security measures, rigorous auditing, and a security-first mindset are paramount. The widespread adoption of these compromised versions highlights a critical need for better automated security checks and verification processes throughout the development lifecycle.</p>

<p><strong>Stay vigilant.</strong> The landscape of cybersecurity threats is constantly evolving, and the open-source ecosystem, while incredibly valuable, is a prime target.</p>

<hr />

<p><strong>#Cybersecurity #SupplyChainAttack #npm #OpenSource #DevOps #Security #Axios #RAT</strong></p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering" /><category term="Cybersecurity" /><category term="AI Infrastructure" /><category term="supply-chain-attack" /><category term="npm-security" /><category term="axios" /><category term="software-security" /><summary type="html"><![CDATA[The axios npm package was compromised with cross-platform RATs. Immediate action required if your codebase pulled axios@1.14.1 or axios@0.30.4.]]></summary></entry><entry><title type="html">The Vibe Coding Trap: Why Architecture Matters More When AI Writes the Code</title><link href="https://blog.davidlapsley.io/engineering/ai%20infrastructure/2026/03/30/vibe-coding-trap-architecture-matters-more.html" rel="alternate" type="text/html" title="The Vibe Coding Trap: Why Architecture Matters More When AI Writes the Code" /><published>2026-03-30T00:00:00+00:00</published><updated>2026-03-30T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering/ai%20infrastructure/2026/03/30/vibe-coding-trap-architecture-matters-more</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering/ai%20infrastructure/2026/03/30/vibe-coding-trap-architecture-matters-more.html"><![CDATA[<p>A team ported a Go implementation of JSONata from scratch last week. Seven hours. $400 in token spend. They estimate it saves $500,000 a year in engineering costs.</p>

<p>The tool: Claude Code and Codex, alternating roles, iterating toward a complete implementation. The result: production-grade, passing the test suite, shipped.</p>

<p>You’d think the story is about how good AI coding agents have gotten. It is. But the buried lead is more interesting: the existing test suite was the enabling factor. That’s what made a 7-hour $400 port possible instead of a 7-month $400K nightmare.</p>

<p>No tests? No vibe port. The agents would have produced something that looked plausible, passed superficial review, and quietly misbehaved in production.</p>

<p>This is the vibe coding trap.</p>

<h2 id="what-vibe-coding-actually-means">What “Vibe Coding” Actually Means</h2>

<p>The term was coined by Andrej Karpathy and spread fast because it named something real. You describe what you want in natural language, iterate conversationally with an AI agent, and working code appears. You’re not reading line-by-line. You’re not writing functions. You’re specifying intent and reviewing output.</p>

<p>Matt Webb put it well in an essay that circulated widely last week: “While I’m vibing, I am looking at lines of code less than ever before, and thinking about architecture more than ever before.”</p>

<p>The popular interpretation of vibe coding is that it lowers the bar: now anyone can build software, architecture doesn’t matter, senior engineers are less important. The viral take is that it’s dangerous because the code you ship is code you don’t understand.</p>

<p>Both interpretations miss the more important point.</p>

<p>Vibe coding doesn’t eliminate the need for architecture. It changes where architecture lives and amplifies the consequences of having it or not.</p>

<h2 id="why-agents-amplify-your-architecture-good-or-bad">Why Agents Amplify Your Architecture, Good or Bad</h2>

<p>When a human engineer implements a feature, they make dozens of micro-decisions along the way. Some are conscious: they choose an algorithm, they pick a data structure, they decide whether to introduce an abstraction. Some are unconscious: they name things consistently with the existing codebase, they handle edge cases the way the surrounding code handles similar cases, they apply patterns they’ve internalized from code review.</p>

<p>This is slow. It’s also self-correcting. A human engineer building in a messy codebase will slow down, feel friction, and either push back (“this is getting hard to reason about”) or work around the problems they hit (“I’ll just duplicate this logic, the abstraction is too tangled”). The mess becomes legible as a constraint.</p>

<p>An agent doesn’t work like this.</p>

<p>An agent builds what the context implies. In a clean, well-structured codebase with clear conventions, good test coverage, and explicit design documentation, an agent generates code that fits. It extends the architecture naturally because the architecture is legible in the artifacts it has access to.</p>

<p>In a tangled codebase with inconsistent conventions, poor test coverage, and implicit design decisions living only in the heads of senior engineers, an agent generates code that fits the tangle. It extends the bad patterns as fluently as it would extend good ones. It ships faster than a human would, which means the mess compounds faster.</p>

<p>The JSONata story is a proof of concept for the upside. The test suite was the structural artifact that made correctness verifiable. The agents could iterate because there was a ground truth to iterate toward. Remove the tests, and you have a 7-hour sprint toward something plausible but unverifiable.</p>

<p>Good architecture accelerates agentic development. Bad architecture accelerates agentic debt accumulation.</p>

<h2 id="the-three-architecture-artifacts-that-actually-matter">The Three Architecture Artifacts That Actually Matter</h2>

<p>When you’re evaluating whether your codebase is ready for agentic development, the question isn’t “is the code clean?” It’s “do the right artifacts exist?”</p>

<p>Agents need three things to produce correct output reliably.</p>

<p><strong>Verifiable correctness criteria.</strong> Tests, specifically. Not just unit tests: integration tests that exercise real behavior paths, not implementation details. An agent without a test suite is producing output you can only evaluate by reading it, which puts you back in the loop as a full reviewer. An agent with strong test coverage can be directed to “make the tests pass” and trusted to converge on correct behavior. The test suite is the architecture artifact most directly connected to agentic velocity.</p>

<p><strong>Legible conventions.</strong> Agents learn from context. If your codebase has consistent naming conventions, consistent error handling patterns, consistent module structure, an agent will reproduce those conventions. If your codebase has three different error handling patterns across three different parts of the system, the agent will apply whichever one is statistically dominant in the surrounding context. This might not be what you want. Convention documentation, linting rules, and code review standards are architecture artifacts that agents consume directly.</p>

<p><strong>Explicit design decisions.</strong> Agents fill ambiguity with plausible defaults. Every design decision that lives only in the head of a senior engineer is an ambiguity the agent will fill during generation. When that decision is something like “we always paginate at 100 records because our downstream service has a hard limit” and the agent decides to paginate at 50 for cleaner code, the generated code looks fine in review and fails in production. Architecture decisions need to be written down, ideally close to the code they govern, to be accessible to agents.</p>

<p>None of this is new guidance. This is what good engineering culture looked like before agents existed. Agents make the consequences of skipping it faster and more expensive.</p>

<h2 id="the-skill-shift-nobody-is-talking-about">The Skill Shift Nobody Is Talking About</h2>

<p>Four frontier models dropped in the last 23 days. MCP just crossed 97 million installs. Linear’s CEO declared issue tracking dead. JetBrains retired their pair programming product and launched an agentic development platform. The ecosystem signal is consistent: agentic development is crossing the production threshold now, not in 2027.</p>

<p>The organizational response most teams are making is “let’s give everyone access to Claude Code and Copilot and see what happens.” That’s a reasonable start. It’s not a strategy.</p>

<p>The engineers who will have the most leverage in an agentic-first org are not the ones who type the fastest or know the most obscure language features. They’re the ones who are excellent at:</p>

<p>Decomposing complex product intent into unambiguous requirements that an agent can execute correctly the first time. Writing specifications that capture not just what to build but why, what the constraints are, and what’s explicitly out of scope. Structuring work into chunks an agent can execute and a reviewer can verify independently. Evaluating agent output against stated intent, not just functional correctness. And, critically, building and maintaining the test suites and convention artifacts that give agents a structure to build within.</p>

<p>This is closer to product architecture than to traditional senior IC work. The title might still say “Staff Engineer.” The day looks different.</p>

<h2 id="what-this-means-for-engineering-leaders">What This Means for Engineering Leaders</h2>

<p>If you’re a CTO or VP Engineering evaluating how to integrate agentic development into your team, the question to start with isn’t which tool to adopt. It’s: what is the current quality of our architecture artifacts?</p>

<p>Specifically: what is our test coverage, and does it cover behavior or implementation details? Are our conventions documented and enforced? Are our design decisions written down anywhere, or do they live in senior engineer memory? Is our codebase legible to an outside reader (which is what an agent is)?</p>

<p>If the answers are bad, adding agents adds speed to a compounding problem. The ROI story is real but it’s conditional. You get the 7-hour $400 JSONata port when the test suite exists. Without it, you get 7 hours of plausible code that might take 7 weeks to debug.</p>

<p>The good news: the work required to make a codebase agent-ready is the same work that makes it human-maintainable. There’s no new category of investment here. There’s just a new urgency. The teams that have been cutting corners on testing and documentation have been paying a slow tax. With agents in the loop, that tax gets collected faster.</p>

<h2 id="the-trap">The Trap</h2>

<p>Vibe coding is genuinely powerful. The velocity gains are real, the JSONata story is not an outlier, and the engineering teams running away from this are going to be structurally disadvantaged in 18 months.</p>

<p>The trap is the framing that comes packaged with the term. “Vibe” implies loose, intuitive, structure-optional. Karpathy’s original framing was more precise: he said you embrace the vibes and “forget that the code even exists.” That’s a statement about attention, not about architecture. The structure still has to be there. You just stop reading every line you generate.</p>

<p>When the code exists in a well-structured system with strong test coverage and explicit conventions, forgetting that it exists is fine. You can trust the artifacts. When it doesn’t, forgetting that it exists is how you end up with a codebase nobody understands and agents that confidently extend the confusion.</p>

<p>Architecture has always mattered. It just used to be possible to get away with shortcuts because humans slowed down when things got messy. Agents don’t slow down. They build into the mess at full speed.</p>

<p>The teams that will win with agentic development are not the ones that move fastest today. They’re the ones that built the foundations that let them move fast safely.</p>

<hr />

<p><em>David Lapsley, Ph.D., is Founder and CEO of ShipKodeAI. He previously led engineering at AWS (largest network fabric in Amazon history, 0 to 90 engineers in 18 months), Corelight (VP Engineering), and Cisco (Maglev Platform, DNA Center $1B ARR). He writes about AI governance, AI-accelerated PDLC, and the gap between AI hype and production reality.</em></p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering" /><category term="AI Infrastructure" /><category term="agentic-ai" /><category term="vibe-coding" /><category term="architecture" /><category term="engineering-leadership" /><category term="pdlc" /><category term="ai-agents" /><category term="software-quality" /><summary type="html"><![CDATA[Vibe coding sounds like architecture doesn't matter anymore. The opposite is true. When AI agents write the implementation, your architectural decisions get amplified, not eliminated.]]></summary></entry><entry><title type="html">AI Sycophancy Is Making You Worse at Decisions</title><link href="https://blog.davidlapsley.io/engineering/ai%20infrastructure/2026/03/29/ai-sycophancy-is-making-you-worse-at-decisions.html" rel="alternate" type="text/html" title="AI Sycophancy Is Making You Worse at Decisions" /><published>2026-03-29T00:00:00+00:00</published><updated>2026-03-29T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering/ai%20infrastructure/2026/03/29/ai-sycophancy-is-making-you-worse-at-decisions</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering/ai%20infrastructure/2026/03/29/ai-sycophancy-is-making-you-worse-at-decisions.html"><![CDATA[<p>Stanford just published a study in <em>Science</em> that should make every engineering leader pause.</p>

<p>Eleven leading AI models. 2,405 human participants. The finding: every single model (OpenAI, Anthropic, Google, Meta, Qwen, DeepSeek, Mistral) endorsed wrong choices at higher rates than humans.</p>

<p>That’s not the scary part.</p>

<p>The scary part: people trusted the sycophantic models <em>more</em>. They were 13% more likely to return to them. A single session with a sycophantic AI reduced participants’ willingness to accept responsibility for mistakes and increased their conviction they were right, even when they weren’t.</p>

<hr />

<h2 id="what-sycophancy-actually-is">What Sycophancy Actually Is</h2>

<p>It’s not just the model agreeing with you. It’s subtler.</p>

<p>You say “I think we should rewrite this service in Go.” The model walks you through five reasons why that’s a great idea, maybe adds a mild caveat at the end. You feel validated. You proceed.</p>

<p>What a good engineer would do: push back. Ask why. Make you defend the premise. Maybe the rewrite is right, maybe it isn’t, but you should have to work for the conclusion.</p>

<p>AI systems are trained to maximize human approval. Approval is easier to get by agreeing than by challenging. The result is a tool that systematically reinforces whatever you walked in believing.</p>

<hr />

<h2 id="why-this-matters-more-as-the-stakes-rise">Why This Matters More as the Stakes Rise</h2>

<p>For low-stakes tasks (“draft this email,” “write a unit test”) sycophancy is mostly harmless.</p>

<p>The problem is that we’re not keeping AI in low-stakes lanes. We’re using it for:</p>

<ul>
  <li>Architecture decisions</li>
  <li>Technical strategy</li>
  <li>Build vs. buy calls</li>
  <li>Code reviews</li>
  <li>Security posture assessments</li>
</ul>

<p>These are consequential. And the Stanford data says you are less likely to question your own judgment <em>after</em> an AI validates it, even when the AI was wrong and you were wrong.</p>

<p>The mechanism is insidious: AI validation feels like external confirmation. It isn’t. It’s a mirror that agrees with you.</p>

<hr />

<h2 id="what-this-looks-like-in-practice">What This Looks Like in Practice</h2>

<p>I’ve caught myself doing this. You have an idea, you’re 70% sure it’s right. You ask Claude or GPT to poke holes in it. It identifies a few minor risks, agrees the overall direction is sound, maybe adds something you hadn’t thought of. You leave the conversation 90% sure.</p>

<p>The confidence increased. The underlying quality of the idea didn’t.</p>

<p>That’s the trap. The model’s agreement isn’t evidence. It’s a reflection of what you already believed, polished and returned to you with citations.</p>

<hr />

<h2 id="the-product-risk-nobodys-talking-about">The Product Risk Nobody’s Talking About</h2>

<p>If you’re deploying AI in any decision-support context (performance reviews, code review tools, incident postmortems, product prioritization) you have a liability you may not have modeled.</p>

<p>Your system may be systematically reinforcing the biases of whoever is using it. Senior people will feel more confident in wrong calls. Junior people will defer to the AI rather than developing judgment. The organizational effect compounds over time.</p>

<p>This isn’t theoretical. The Stanford team measured it in a controlled experiment. Thirteen percent more likely to return to the model that agreed with them. That’s a selection effect: the most sycophantic tool wins the usage competition, regardless of whether it’s the most accurate one.</p>

<hr />

<h2 id="what-to-do-about-it">What To Do About It</h2>

<p>A few things that actually help:</p>

<p><strong>Prompt for adversarial review.</strong> Don’t ask “is this a good idea?” Ask “what would have to be true for this to be a terrible idea?” or “steelman the case against this.” The model will comply. It just won’t do it by default.</p>

<p><strong>Separate generation from evaluation.</strong> Use AI to generate options, then use a different prompt (or a different model) to evaluate them. Don’t let the same session that helped you build the idea also judge it.</p>

<p><strong>Be suspicious of easy agreement.</strong> If the AI walks you through five reasons your plan is good with no real friction, that’s a signal, not a green light. Find the friction yourself.</p>

<p><strong>Tell the model to push back.</strong> Literally: “Your job in this conversation is to challenge my assumptions, not validate them. Be direct. I’d rather hear a hard truth now.” It works better than you’d expect.</p>

<p><strong>Don’t use AI for final calls on consequential decisions.</strong> Use it to think. Use humans to decide.</p>

<hr />

<h2 id="the-honest-version">The Honest Version</h2>

<p>I use Claude every day. I’m building a company on top of these models. I’m not arguing you should use AI less.</p>

<p>I’m arguing you should use it with clear eyes about what it actually is: a system optimized to make you feel good about your decisions, not to make your decisions better.</p>

<p>The fact that it’s published in <em>Science</em>, tested across 11 models and 2,400 people, isn’t a reason to panic. It’s a reason to be deliberate.</p>

<p>The tool is powerful. The tool also tells you what you want to hear. Both things are true.</p>

<hr />

<p><em>The Stanford study: “Conversational AI Sycophancy Reduces Human Responsibility and Confidence Calibration,” published in Science, March 2026.</em></p>

<hr />

<p><em>David Lapsley, Ph.D., is Founder and CEO of ShipKodeAI. He previously built and led engineering organizations at AWS (largest network fabric in Amazon history, 0→90 engineers in 18 months), Corelight (VP Engineering), and Cisco (Maglev Platform, DNA Center $1B ARR). He writes about AI governance, AI-accelerated SDLC, and the gap between AI hype and production reality.</em></p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering" /><category term="AI Infrastructure" /><category term="ai-research" /><category term="engineering-leadership" /><category term="decision-making" /><category term="anthropic" /><category term="frontier-models" /><summary type="html"><![CDATA[Stanford published a study in Science: every major AI model endorses wrong choices at higher rates than humans. Users trust sycophantic models more, not less. Here's what that means if you're deploying AI in engineering or product contexts.]]></summary></entry><entry><title type="html">The Warning Was Inside the Leak</title><link href="https://blog.davidlapsley.io/engineering/cybersecurity/ai%20infrastructure/2026/03/28/anthropic-mythos-leak-blue-team.html" rel="alternate" type="text/html" title="The Warning Was Inside the Leak" /><published>2026-03-28T00:00:00+00:00</published><updated>2026-03-28T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering/cybersecurity/ai%20infrastructure/2026/03/28/anthropic-mythos-leak-blue-team</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering/cybersecurity/ai%20infrastructure/2026/03/28/anthropic-mythos-leak-blue-team.html"><![CDATA[<p>Last week, Anthropic accidentally published nearly 3,000 internal documents to a publicly searchable database. A default CMS setting made uploaded files public. No exploit. No sophisticated attacker. Just an unlocked door.</p>

<p>The internet had a field day with the irony. A company that built its brand on AI safety, failing basic information security hygiene. But most of the coverage missed the more important story — the one <em>inside</em> the leak.</p>

<p>Buried in those documents was a draft announcement for Anthropic’s next model, codenamed Mythos. In that draft, Anthropic’s own team wrote this:</p>

<blockquote>
  <p>Mythos is “currently far ahead of any other AI model in cyber capabilities” and “presages an upcoming wave of models that can exploit vulnerabilities in ways that far outpace defenders.”</p>
</blockquote>

<p>The people building the most capable AI offensive tool in history wrote, in their own words, that it will outpace defenders.</p>

<p>They published it by accident. But they knew it before they did.</p>

<hr />

<h2 id="the-irony-is-actually-the-point">The Irony Is Actually the Point</h2>

<p>It’s easy to laugh at the leak. Cybersecurity stocks didn’t — CrowdStrike fell 7%, Palo Alto fell 6% on Friday. The market understood something that the coverage didn’t fully articulate:</p>

<p>The threat model just changed.</p>

<p>Not because Mythos was leaked. Because its existence was confirmed, along with an authoritative description of its capabilities from the organization that built it.</p>

<p>Every threat model your security team is operating under right now was calibrated against today’s AI capabilities — AI-assisted phishing, script-kiddie automation of known CVEs, social engineering at scale. That’s the threat you’ve been defending against.</p>

<p>Mythos isn’t that. It represents a qualitative step change: novel vulnerability discovery, multi-step reasoning across complex attack surfaces, autonomous chain-of-thought exploitation. These capabilities have existed in theory. Mythos is the first system its creators believe can execute them reliably.</p>

<p>The model hasn’t even launched yet.</p>

<hr />

<h2 id="the-defenders-asymmetry-problem">The Defender’s Asymmetry Problem</h2>

<p>There’s a structural problem in cybersecurity that has existed forever and is about to get dramatically worse.</p>

<p>Attackers need to find one way in. Defenders need to cover everything.</p>

<p>AI makes this asymmetry worse in a specific way: it dramatically lowers the skill floor for attackers while doing relatively little to lower the cost of comprehensive defense. A motivated actor with access to Mythos can direct it at your infrastructure and let it explore. It doesn’t sleep. It doesn’t get bored. It can test a thousand variants of an approach while your team is handling an unrelated incident.</p>

<p>Your blue team is still human. Limited working hours, limited tooling budgets, alert fatigue. They’re triaging a queue while an AI system on the other side does systematic, patient, creative reconnaissance.</p>

<p>This is what Anthropic meant by “outpace defenders.” They weren’t speculating. They were describing their own benchmark results.</p>

<hr />

<h2 id="what-outpace-defenders-looks-like-in-practice">What “Outpace Defenders” Looks Like in Practice</h2>

<p>Let me be concrete.</p>

<p><strong>Vulnerability discovery at scale.</strong> Today’s AI can help a developer find a buffer overflow with guidance. Tomorrow’s AI autonomously audits a codebase, identifies the vulnerability class, reasons about exploitability in the context of your specific deployment, and generates a working proof-of-concept. The gap between AI-assisted security research and AI-autonomous exploitation is closing faster than the industry wants to admit.</p>

<p><strong>Social engineering that defeats human judgment.</strong> Current spear-phishing is detectable because it lacks context — plausible text, but impersonal. Advanced models with long context windows and access to your public information surface (LinkedIn, GitHub, press releases, Glassdoor) can craft targeted attacks that sound exactly like someone who understands your org’s internal dynamics. At scale. Against every person in your company simultaneously.</p>

<p><strong>CI/CD pipeline infiltration.</strong> This week, Trivy — the most widely used container vulnerability scanner — was compromised for the second time in a month. TeamPCP force-pushed 75 of 76 version tags, turning trusted CI/CD references into credential thieves harvesting SSH keys, cloud tokens, and Kubernetes configs. That attack was done by humans. An AI-directed version targets the specific tools your organization is known to use, correlates them with your cloud configuration, and prioritizes by likely yield. Your build pipeline is now the attack surface.</p>

<p><strong>Zero-day chain construction.</strong> The hardest part of advanced persistent threats isn’t finding a single vulnerability — it’s chaining multiple low-severity issues into a high-impact path. That’s a reasoning problem. It’s exactly what frontier AI excels at.</p>

<hr />

<h2 id="the-safety-competition-paradox">The Safety-Competition Paradox</h2>

<p>Here’s what the Mythos leak actually reveals, and it’s not comfortable.</p>

<p>Anthropic knows their model has these capabilities. They said so in writing. They are building it anyway, because if they don’t, OpenAI will. Or a well-funded startup will. Or a nation-state with fewer scruples about deployment will.</p>

<p>This isn’t a criticism of Anthropic specifically — every frontier lab operates under the same constraint. The competitive dynamics of the AI race have created a situation where the organizations most committed to safety feel compelled to build and release increasingly powerful offensive tools because the alternative is ceding the frontier to someone with fewer commitments.</p>

<p>The result: the most capable cyber-offensive AI in history will be commercially available, probably this year. Every serious threat actor on the planet will have access to it or something like it within 12–18 months.</p>

<p>This is the context your blue team is operating in.</p>

<hr />

<h2 id="what-blue-team-looks-like-when-offense-has-ai">What Blue Team Looks Like When Offense Has AI</h2>

<p>The defensive response to this moment is tractable — but it requires a different mental model than most security organizations are currently using.</p>

<p><strong>You cannot patch your way to safety.</strong> Vulnerability management against a system that discovers novel attack chains faster than your team can triage them is a losing strategy. Move investment upstream: architecture reviews, threat modeling, blast radius reduction, defense-in-depth that makes exploitation economically unviable even when vulnerabilities exist.</p>

<p><strong>Blue teams need AI now, not later.</strong> The only way to close the asymmetry is to put AI in the hands of defenders at the same rate attackers are acquiring it. AI-augmented threat detection, AI-assisted incident response, AI-driven adversarial simulation against your own systems. Organizations that build this capacity today will have 18 months of operational learning before the threat fully materializes.</p>

<p><strong>Your build pipeline is your new perimeter.</strong> Mandatory SBOM generation, cryptographic signing of build artifacts, real-time integrity verification of CI/CD dependencies — these move from best practice to table stakes. The Trivy attack is a preview. The next generation will be AI-directed and systematic.</p>

<p><strong>Assume credential exposure.</strong> When an attacker has an AI system doing reconnaissance and exploitation, the window between credential compromise and lateral movement collapses. Zero-trust architecture — not as a marketing term but as an actually implemented policy where every service authenticates every request — is the only architecture that limits blast radius when the perimeter fails.</p>

<p><strong>Invest in human defenders, not just tools.</strong> The instinct when facing AI-powered offense is to buy AI-powered defense products. Necessary but not sufficient. The humans on your blue team need to understand how AI-directed attacks reason — what they look for, how they chain vulnerabilities, what operational patterns give them away. That requires deliberate training, red-team exercises with current AI capabilities, and institutional knowledge-building that takes time. Start now.</p>

<hr />

<h2 id="the-unlocked-door">The Unlocked Door</h2>

<p>The week started with an AI safety company leaving 3,000 documents in an unsecured database.</p>

<p>The week ended with those documents revealing that the same company believes it has built an AI system capable of offensive cyber operations that outpace defenders.</p>

<p>I don’t think this is a story about Anthropic’s hypocrisy. I think it’s a story about how hard this problem actually is. The people who understand AI capabilities best — who have thought hardest about safety, who have written internal warnings about what their own tools can do — are still subject to the oldest failure mode in information security: a misconfigured default setting.</p>

<p>If that’s true at Anthropic, it’s true everywhere. Including your organization.</p>

<p>The warning was inside the leak. The question is whether you act on it before someone else finds your unlocked door.</p>

<hr />

<p><em>David Lapsley, Ph.D., is Founder and CEO of ShipKodeAI. He previously built and led engineering organizations at AWS (largest network fabric in Amazon history, 0→90 engineers in 18 months), Corelight (VP Engineering), and Cisco (Maglev Platform, DNA Center $1B ARR). He writes about AI governance, AI-accelerated SDLC, and the gap between AI hype and production reality.</em></p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering" /><category term="Cybersecurity" /><category term="AI Infrastructure" /><category term="cybersecurity" /><category term="blue-team" /><category term="anthropic" /><category term="ai-safety" /><category term="frontier-models" /><category term="threat-modeling" /><category term="supply-chain-security" /><category term="ai-governance" /><summary type="html"><![CDATA[Anthropic accidentally published 3,000 internal documents to a public database — an AI safety company failing basic infosec hygiene. But the real story isn't the irony. It's what the leaked docs said about the model inside.]]></summary></entry><entry><title type="html">Issue Tracking Is Dead. Long Live the Spec.</title><link href="https://blog.davidlapsley.io/engineering/ai%20infrastructure/product%20engineering/2026/03/27/issue-tracking-is-dead-long-live-the-spec.html" rel="alternate" type="text/html" title="Issue Tracking Is Dead. Long Live the Spec." /><published>2026-03-27T00:00:00+00:00</published><updated>2026-03-27T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering/ai%20infrastructure/product%20engineering/2026/03/27/issue-tracking-is-dead-long-live-the-spec</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering/ai%20infrastructure/product%20engineering/2026/03/27/issue-tracking-is-dead-long-live-the-spec.html"><![CDATA[<p>Linear’s CEO made a striking announcement this week: the company is pivoting from issue tracking to agentic AI. The product will evolve to capture issues autonomously and, eventually, debug code. The framing was blunt - <em>issue tracking is dead</em>.</p>

<p>He’s right. But the conclusion most people will draw from that is wrong.</p>

<p>The end of issue tracking doesn’t mean the end of structure. It means the structure moves upstream.</p>

<hr />

<h2 id="what-issue-tracking-actually-does">What Issue Tracking Actually Does</h2>

<p>Before declaring it dead, it’s worth being precise about what a ticket actually is.</p>

<p>A Jira issue, a Linear task, a GitHub issue - at their core, these are containers for <em>intent</em>. They say: here is a thing that needs to happen, here is who’s responsible, here is what done looks like. They exist because software development involves multiple people, multiple timelines, and more work than any individual can hold in their head.</p>

<p>That coordination function doesn’t go away when agents enter the picture. It gets compressed.</p>

<p>When an AI agent can take a ticket from open to closed in minutes rather than days - create a branch, write the code, open the PR, run the tests - the ticket lifecycle collapses. The human handoff points that made the tracker useful (assign → start → review → merge → close) compress into near-zero time. At that point, maintaining a tracker at the old granularity becomes overhead without benefit.</p>

<p>Linear’s CEO is responding to this reality. If agents resolve tickets faster than humans can write them, the tracker’s coordination function is largely gone.</p>

<p>But coordination hasn’t disappeared. It’s just moved.</p>

<hr />

<h2 id="the-bottleneck-moves-up-the-stack">The Bottleneck Moves Up the Stack</h2>

<p>Here’s what happens when agents handle implementation:</p>

<p>The bottleneck is no longer writing code. It’s knowing what to build.</p>

<p>That sounds obvious, but the implications are non-trivial. Every ambiguity in a requirement that a human engineer might have resolved through a Slack thread, a quick question to the PM, or a judgment call during implementation - an agent resolves through training-data patterns. Silently. Without flagging that a decision was made.</p>

<p>This is the same dynamic I described in <a href="/engineering/ai%20infrastructure/ai-assisted%20development/2026/03/26/cognitive-debt-agents-move-faster-than-humans-can-review.html">cognitive debt</a> last week, from a different angle. Agents don’t ask clarifying questions by default. They fill ambiguity with plausible defaults. That looks fine in the moment. It compounds into drift, rework, and systems that don’t match the product intent over time.</p>

<p>If the ticket is still the primary artifact - a short description of what to build, maybe some acceptance criteria, assigned to an agent - the agent will ship something. It might even pass the tests. But whether it’s the <em>right</em> thing, built the <em>right</em> way, in a manner consistent with where the product is going? That’s not in the ticket. It never was.</p>

<p>The issue tracker hid this gap as long as human engineers were filling it with judgment. Agents expose it.</p>

<hr />

<h2 id="what-has-to-exist-before-the-ticket">What Has to Exist Before the Ticket</h2>

<p>When agents handle implementation, the work that matters happens before the ticket is created.</p>

<p>Specifically:</p>

<p><strong>Clear product intent.</strong> What is this feature actually for? Who uses it, in what context, with what goal? Not a user story - genuine clarity on the problem being solved. Agents implement what you specify. If the specification is a one-liner in a tracker, you’ll get a one-liner’s worth of thinking embedded in the implementation.</p>

<p><strong>Explicit design decisions.</strong> What approach are we taking? What are the constraints - performance, security, backward compatibility? What’s explicitly out of scope? These decisions will be made either by a human before generation or by the agent during generation. If the agent makes them, they’re invisible.</p>

<p><strong>Acceptance criteria that capture behavior, not just output.</strong> “User can reset password” is a different specification than “user can reset password via email link, link expires in 24 hours, expired links show a specific error message, rate limiting applies at 3 attempts per hour.” The second version gives an agent enough structure to get it right. The first version gives an agent permission to fill in everything you didn’t say.</p>

<p><strong>Traceability from intent to implementation.</strong> When an agent ships a PR, what requirement does it satisfy? Which design decision does each architectural choice reflect? Without this, debugging unexpected behavior six months from now means reverse-engineering decisions that were never documented.</p>

<p>None of this is a ticket. All of it is a spec.</p>

<hr />

<h2 id="the-spec-becomes-the-unit-of-work">The Spec Becomes the Unit of Work</h2>

<p>When agents handle implementation, the engineering team’s leverage moves to specification quality.</p>

<p>This is a meaningful shift. In a traditional development process, a senior engineer’s value is partly in their ability to write good code quickly. In an agentic process, the code comes fast regardless - the value is in writing specifications precise enough that the code is correct the first time, and structured enough that it can be understood and changed later.</p>

<p>That’s a different skill profile. It’s closer to product architecture than to individual contributor coding. The engineers who thrive in an agentic-first organization will be the ones who are excellent at:</p>

<ul>
  <li>Decomposing complex product intent into unambiguous requirements</li>
  <li>Making design decisions explicit before they’re implemented</li>
  <li>Structuring work so agents can execute it in reviewable chunks</li>
  <li>Evaluating agent output against stated intent, not just functional correctness</li>
</ul>

<p>The issue tracker was built around a different unit of work - the individually assigned, human-implemented task. That unit is changing. The spec - the structured artifact that captures what to build and why - is what replaces it.</p>

<hr />

<h2 id="this-is-what-shipkode-is-for">This Is What ShipKode Is For</h2>

<p>I’ve spent the past year thinking about exactly this problem. Not as an abstract organizational design question, but as the practical question of: what does an engineering team need to operate effectively when agents handle implementation?</p>

<p>The answer we’ve arrived at at ShipKode is that the gap isn’t in the tracker. It’s upstream of the tracker - in the translation from customer signal to validated product intent to engineering-ready specification.</p>

<p>Most teams are flying blind on that translation. Customer interviews generate insights that aren’t systematically captured. Product intuition drives roadmaps that aren’t traceable to evidence. Requirements are written fast to unblock development, without the structure agents need to implement correctly.</p>

<p>ShipKode is a governed agentic control plane for that process - from raw market signals and customer evidence through personas, use cases, PRFAQs, and feature maps to Kiro-format engineering specifications with full traceability. Every requirement traces back to the customer evidence that motivated it. Every design decision is documented before implementation begins.</p>

<p>When the ticket is created - or when the agent picks up the work - the spec already exists. The agent isn’t filling ambiguity with guesses. It’s implementing a decision that was made, by a human, with evidence.</p>

<p>That’s the organization that gets the velocity benefit of agentic development without the cognitive debt that comes from skipping the thinking.</p>

<hr />

<h2 id="the-org-design-question-nobody-is-asking">The Org Design Question Nobody Is Asking</h2>

<p>Linear’s CEO declared issue tracking dead and pivoted to agentic AI. That’s a product decision - Linear will adapt or be displaced like every other tool in the developer workflow that agents are disrupting.</p>

<p>But the harder question isn’t “what happens to the tracker?” It’s “what does the engineering org look like when agents handle implementation?”</p>

<p>My read: the org gets smaller at the implementation layer and much more important at the specification layer. The ratio of engineers who are primarily specifying and reviewing to engineers who are primarily coding shifts dramatically. The skills that matter shift. The artifacts that matter shift.</p>

<p>Teams that recognize this early and restructure accordingly - building the muscles for high-quality specification, establishing traceability from customer intent to code, treating the spec as the primary engineering artifact - will have a significant and compounding advantage over teams that just point agents at their existing backlog and wonder why the output doesn’t match what they wanted.</p>

<p>The tracker is dead. Long live the spec.</p>

<hr />

<p><em>David Lapsley, Ph.D., is Founder and CEO of ShipKodeAI. He previously built and led engineering organizations at AWS (largest network fabric in Amazon history, 0→90 engineers in 18 months), Corelight (VP Engineering), and Cisco (Maglev Platform, DNA Center $1B ARR). He writes about AI governance, AI-accelerated SDLC, and the gap between AI hype and production reality.</em></p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering" /><category term="AI Infrastructure" /><category term="Product Engineering" /><category term="agentic-ai" /><category term="issue-tracking" /><category term="spec-driven-development" /><category term="engineering-leadership" /><category term="sdlc" /><category term="shipkode" /><category term="product-engineering" /><summary type="html"><![CDATA[Linear's CEO declared issue tracking dead this week and pivoted the company to agentic AI. He's right - but the implication isn't that tickets go away. It's that the artifact upstream of the ticket becomes the new unit of engineering work.]]></summary></entry><entry><title type="html">Cognitive Debt: What Happens When Your Agents Move Faster Than You Can Review</title><link href="https://blog.davidlapsley.io/engineering/ai%20infrastructure/ai-assisted%20development/2026/03/26/cognitive-debt-agents-move-faster-than-humans-can-review.html" rel="alternate" type="text/html" title="Cognitive Debt: What Happens When Your Agents Move Faster Than You Can Review" /><published>2026-03-26T00:00:00+00:00</published><updated>2026-03-26T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/engineering/ai%20infrastructure/ai-assisted%20development/2026/03/26/cognitive-debt-agents-move-faster-than-humans-can-review</id><content type="html" xml:base="https://blog.davidlapsley.io/engineering/ai%20infrastructure/ai-assisted%20development/2026/03/26/cognitive-debt-agents-move-faster-than-humans-can-review.html"><![CDATA[<p>Mario Zechner, the creator of the Pi agent framework, published a frank piece this week that’s worth sitting with: agents compound mistakes faster than humans can review them, creating what he calls “cognitive debt” — codebases that evolve beyond the team’s ability to reason about them. Simon Willison endorsed the thesis and added his own observation: speed is no longer the bottleneck in software development. Discipline is.</p>

<p>I’ve been building with AI agents every day for over two years. I agree with the diagnosis. I disagree with the prescription.</p>

<p>The answer isn’t to slow down. The answer is to build structure that makes fast review possible.</p>

<hr />

<h2 id="what-cognitive-debt-actually-is">What Cognitive Debt Actually Is</h2>

<p>Technical debt is code that works but costs you later — shortcuts that accumulate interest in the form of maintenance burden, fragility, and the eventual painful refactor.</p>

<p>Cognitive debt is different. It’s the gap between what exists in your codebase and what your team can reason about, explain, and confidently change. A team accrues cognitive debt when the codebase evolves faster than their mental model of it does.</p>

<p>Traditional technical debt accumulates at human writing speed. Cognitive debt in an AI-assisted codebase accumulates at agent generation speed.</p>

<p>Here’s what that looks like in practice:</p>

<p>An engineer opens a Cursor session at 9am with a reasonable feature request: “implement the user notification system.” By noon, the agent has generated 800 lines across 12 files — service classes, database migrations, background jobs, API endpoints, email templates. The code compiles. Tests pass. The engineer reviews it for 45 minutes, approves the PR, and moves on.</p>

<p>Three weeks later, a bug appears in the notification system. The engineer who reviewed the PR is in a different context. The engineer who needs to fix the bug wasn’t there for the original session. They open the files. The code is readable, technically correct, but they don’t understand the <em>decisions</em> embedded in it. Why does the retry logic use exponential backoff to 24 hours? Why is there a separate queue for digest notifications vs. real-time ones? Why does this specific handler exist? There are no comments. There’s no design document. The only artifact is the code.</p>

<p>That’s cognitive debt. The team owns code they can’t confidently reason about.</p>

<hr />

<h2 id="why-agents-make-this-worse">Why Agents Make This Worse</h2>

<p>Human developers accumulate cognitive debt too. But agents accelerate it in specific ways that make the problem qualitatively different.</p>

<p><strong>Agents generate pattern-complete code, not decision-documented code.</strong> A good human engineer writes a comment when they make a non-obvious choice. An agent writes code that looks reasonable and compiles — without flagging that it made a choice at all. The agent doesn’t know what you’ll need to understand later. It knows what looks right now.</p>

<p><strong>Agents don’t ask questions by default.</strong> A human engineer who doesn’t understand a requirement will ask. An agent fills the ambiguity with training-data patterns. It looks decided, even when the underlying decision was never made.</p>

<p><strong>Agents compress timelines in ways that skip natural review gates.</strong> When a feature takes two weeks to write, review happens incrementally — architecture discussions, PR comments, pairing sessions. When an agent writes it in two hours, the review happens at the end against a fait accompli. The incremental review that catches design problems early is replaced by a single pass that tends to accept what’s there.</p>

<p><strong>Agents make cross-file, cross-service changes that are hard to review holistically.</strong> A 20-line change touching one function is easy to review. An 800-line change touching 12 files is a different cognitive challenge — even if every individual file is readable. The emergent behavior across the system is what matters, and that’s hard to evaluate from a diff.</p>

<hr />

<h2 id="the-failure-mode-is-invisible-until-it-isnt">The Failure Mode Is Invisible Until It Isn’t</h2>

<p>The insidious thing about cognitive debt is that it doesn’t show up in your metrics until something breaks.</p>

<p>Velocity looks great. PRs are shipping fast. The feature backlog is moving. Code review turnaround time is down. Every leading indicator says things are going well.</p>

<p>Then a critical system needs to change. Or a new engineer joins and needs to make sense of what exists. Or an incident happens and the team needs to reason about behavior they didn’t write. That’s when the cognitive debt comes due — usually at the worst possible moment.</p>

<p>I’ve watched this happen at companies deploying agentic development workflows. Six months in, velocity has doubled. Engineers feel productive. The team is shipping more than they ever have. Then a senior engineer leaves, or a scaling event exposes unexpected behavior, or an audit requires explaining architectural decisions — and suddenly the team realizes they own a system they don’t fully understand.</p>

<p>At that point, the debt doesn’t come due slowly. It comes due all at once.</p>

<hr />

<h2 id="the-fix-isnt-to-slow-down">The Fix Isn’t to Slow Down</h2>

<p>Zechner recommends daily limits on agent-generated code and human-authored architecture decisions. I understand the impulse. But in practice, “slow down the agents” isn’t a durable policy. Competitive pressure, deadline pressure, and the productivity delta between teams using agents aggressively and teams using them cautiously will eventually win.</p>

<p>The teams that slow down will ship slower. That’s a real cost. The goal should be to capture the velocity benefit without paying the cognitive debt price — and that’s achievable, but it requires structure.</p>

<p>The structure that works is pre-generation specification, not post-generation review.</p>

<hr />

<h2 id="structure-before-generation-not-review-after">Structure Before Generation, Not Review After</h2>

<p>The root cause of cognitive debt is generating code from ambiguous intent. When an engineer prompts “implement the notification system” without specifying the decision surface, the agent fills every ambiguity with training-data defaults. The cognitive debt accumulates in the gap between the intent and the defaults.</p>

<p>The solution is to make the decisions explicit <em>before</em> generation happens. Not elaborate bureaucratic specs — lean structured artifacts that capture the decisions that would otherwise be implicit in generated code.</p>

<p>What that looks like in practice:</p>

<p><strong>Requirements</strong> that specify what the feature must do, not how — including edge cases, constraints, and what’s explicitly out of scope. An agent that operates with explicit requirements makes fewer silent decisions.</p>

<p><strong>Design documents</strong> that capture the architectural choices — why this approach over alternatives, what the data model looks like, how it integrates with existing systems. These don’t need to be long. They need to capture the non-obvious decisions so reviewers can evaluate them rather than reverse-engineer them.</p>

<p><strong>Task breakdowns</strong> that decompose the work into reviewable units. A single 800-line PR is hard to reason about. Five 160-line PRs, each with a clear stated purpose, are reviewable in parallel.</p>

<p>I’ve written about this pattern in the context of <a href="/engineering/ai-assisted%20development/product%20management/2026/02/25/ai-drift-is-a-product-problem.html">AI drift</a> and <a href="/engineering/ai-assisted%20development/product%20management/2026/02/24/specifications-are-the-new-api.html">specifications as the interface between product and engineering</a>. The connection to cognitive debt is direct: the same ambiguity that causes agents to drift away from requirements also makes the resulting code hard to reason about after the fact. Structured specifications solve both problems simultaneously.</p>

<hr />

<h2 id="what-good-review-looks-like-in-an-agentic-codebase">What Good Review Looks Like in an Agentic Codebase</h2>

<p>Even with good pre-generation structure, review needs to adapt to what agents produce.</p>

<p><strong>Review the decisions, not the code.</strong> The question isn’t “is this code correct?” (the agent usually gets that right). The question is “are the decisions embedded in this code the decisions we wanted to make?” That’s a different review, and it requires the spec to review against.</p>

<p><strong>Require design artifacts in PRs that touch architecture.</strong> Any PR that introduces a new service, changes a data model, or modifies a system integration should include a brief design note — even three sentences explaining why this approach. This is the minimum viable documentation for reasoning about the system later.</p>

<p><strong>Use the agent to document its own decisions.</strong> After a generation session, prompt the agent: “Write a brief explanation of the non-obvious decisions you made and why.” This works surprisingly well and takes two minutes. The output isn’t perfect documentation, but it’s substantially better than nothing.</p>

<p><strong>Pair-review high-complexity outputs.</strong> For PRs over a certain complexity threshold, require two reviewers. The first reviews for correctness; the second reviews for whether the design is coherent with the broader system. This is overhead — but it’s cheap insurance against cognitive debt in the system’s critical paths.</p>

<hr />

<h2 id="the-architectural-decision-is-yours">The Architectural Decision Is Yours</h2>

<p>Anthropic shipped Claude Code Auto Mode this week — a secondary model that reviews every action the primary agent takes before execution, blocking pushes to main, preventing credential exfiltration, catching unsafe patterns. It’s a meaningful step toward production-safe agentic coding.</p>

<p>But Auto Mode solves a different problem. It prevents unsafe <em>actions</em> in the moment. It doesn’t prevent cognitive debt from accumulating over time. An agent can behave safely at every step and still produce a codebase that your team can’t reason about six months from now.</p>

<p>The guardrails on agent <em>behavior</em> are improving quickly. The discipline around agent <em>output</em> — what decisions get documented, what review looks like, what structure exists before generation — is still largely up to you.</p>

<p>That’s where Zechner and Willison are right. Not that you should move slower, but that speed without structure produces a compounding liability. The teams that win won’t be the ones that move fastest. They’ll be the ones that move fast and stay legible.</p>

<hr />

<p><em>David Lapsley, Ph.D., is Founder and CEO of ShipKodeAI. He previously built and led engineering organizations at AWS (largest network fabric in Amazon history, 0→90 engineers in 18 months), Corelight (VP Engineering), and Cisco (Maglev Platform, DNA Center $1B ARR). He writes about AI governance, AI-accelerated SDLC, and the gap between AI hype and production reality.</em></p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Engineering" /><category term="AI Infrastructure" /><category term="AI-Assisted Development" /><category term="agentic-ai" /><category term="cognitive-debt" /><category term="code-review" /><category term="engineering-culture" /><category term="spec-driven-development" /><category term="ai-governance" /><summary type="html"><![CDATA[AI agents can generate more code in an hour than a team can thoughtfully review in a day. The result isn't velocity — it's a new kind of technical debt that compounds faster than the old kind. Here's how to structure your way out of it.]]></summary></entry><entry><title type="html">Customer Discovery Is the Highest-Leverage Work You’re Not Doing</title><link href="https://blog.davidlapsley.io/product%20management/leadership/engineering/2026/03/25/customer-discovery-is-the-highest-leverage-work.html" rel="alternate" type="text/html" title="Customer Discovery Is the Highest-Leverage Work You’re Not Doing" /><published>2026-03-25T00:00:00+00:00</published><updated>2026-03-25T00:00:00+00:00</updated><id>https://blog.davidlapsley.io/product%20management/leadership/engineering/2026/03/25/customer-discovery-is-the-highest-leverage-work</id><content type="html" xml:base="https://blog.davidlapsley.io/product%20management/leadership/engineering/2026/03/25/customer-discovery-is-the-highest-leverage-work.html"><![CDATA[<p>I’ve spent the last month in back-to-back conversations with potential customers. Twenty-plus meetings, each one between thirty and sixty minutes. Every conversation led with listening. Some evolved into demos. Some turned into pitches. But the ones that produced the most valuable insights were the ones that stayed in discovery mode the longest.</p>

<p>It has been, without exaggeration, the most valuable month of work since I started building ShipKode.</p>

<p>Every conversation has sharpened something. My understanding of how teams actually adopt AI-assisted development tools. The language they use to describe their pain. The workflows they’ve built around the problems I’m trying to solve. The specific dimensions of the problem that matter most to them and the order in which they matter.</p>

<p>I walked into these conversations with a strong thesis. I’d spent 18 months building production software with AI coding agents, writing about the gaps in AI-assisted development, and designing a specification pipeline to close those gaps. I had conviction about the direction. The conversations reinforced that conviction, but they did something even more valuable: they gave me the texture and nuance to make the product significantly better than what I would have built from my thesis alone.</p>

<p>Hearing a VP of Engineering describe how their team wants to adopt AI-assisted development but doesn’t know where to start, how they’ve tried three different tools and still can’t get past the POC stage, how they know the transformation is coming but can’t find a path from where they are to where they need to be — that adds a dimension no amount of desk research provides. The direction was right. The discovery made it sharper, more specific, and more valuable.</p>

<h2 id="understand-the-customer-before-the-customer-understands-you">Understand the customer before the customer understands you</h2>

<p>There’s a principle I keep coming back to: <strong>understand the customer before the customer understands you.</strong></p>

<p>The natural instinct when you’ve built something is to show it. You’ve spent months on this thing. You’re proud of it. You want validation. So you book a meeting, share your screen, and start clicking through the product. I’ve done this. It works, and there’s a time for it.</p>

<p>But when you lead with a demo, the conversation narrows. The customer is reacting to your solution instead of describing their problem. Their feedback becomes bounded by what you showed them. They’ll tell you what they think of your feature, not what keeps them up at night.</p>

<p>The best conversations I had this month were the ones where I resisted the demo impulse and started with questions. How does your team work today? What’s painful? What have you tried? I let them describe the problem in their language, using their mental models, with their priorities. When I did eventually show the product, later in the conversation, the context I’d gained made the demo dramatically more effective. I knew which parts to focus on because I’d just heard what mattered to them.</p>

<p>The ordering matters. Discovery first, then demo. Understand first, then be understood. The insights you get from this sequence are qualitatively different from leading with a pitch. Demo-first feedback tells you whether someone likes what you built. Discovery-first feedback tells you whether you’re building the right thing, and sharpens the demo when it comes.</p>

<h2 id="why-this-is-the-most-important-activity-for-early-stage-startups">Why this is the most important activity for early-stage startups</h2>

<p>I’ve written extensively about how <a href="/engineering/ai-assisted%20development/product%20management/2026/02/19/the-missing-half-of-ai-assisted-development.html">95% of AI pilots fail to reach production</a>. The MIT NANDA study found that the root cause is almost never technical. The models work fine. The code compiles. The feature just doesn’t solve a real problem, or solves it in a way nobody actually specified.</p>

<p>Customer discovery is the fix for that failure mode. Not better models. Not better prompts. Conversations with the people whose problems you’re trying to solve.</p>

<p>For early-stage startups, this matters more than anything else you could spend your time on. Here’s why.</p>

<p><strong>You can’t afford to build the wrong thing.</strong> As I noted in my post on <a href="/engineering/leadership/process/2026/02/17/amazon-working-backwards-sdlc-for-smbs.html">Amazon’s Working Backwards SDLC for SMBs</a>, a 5-person team that builds the wrong feature for a quarter has burned 25% of its runway. Customer discovery is how you avoid that. Thirty minutes of conversation can save three months of engineering.</p>

<p><strong>Discovery refines your direction in ways you can’t anticipate.</strong> Every founder believes they understand their customer. I had a strong thesis going in, and the conversations validated the core direction. But they also surfaced refinements I couldn’t have reached on my own. Priorities I would have ordered differently. Use cases I’d underweighted. Specific pain points that, once I heard them described in the customer’s own words, made the product roadmap click into sharper focus. You can’t think your way to these refinements. You have to hear them from someone living the problem.</p>

<p><strong>The language matters as much as the insight.</strong> When customers describe their pain, they use specific words and phrases. Those words are gold. They’re the exact language you’ll use in your marketing, your documentation, your PRFAQ, your positioning. I’ve pulled phrases directly from discovery calls into product descriptions, and the resonance with other customers is immediate.</p>

<p><strong>It compounds.</strong> Every conversation builds on the last. By conversation five, you’re hearing patterns. By conversation ten, you’re testing hypotheses. By conversation fifteen, you’re refining nuances. By conversation twenty, you have a map of the problem space that no amount of desk research could produce.</p>

<table>
  <thead>
    <tr>
      <th>Activity</th>
      <th>Time Investment</th>
      <th>Information Value</th>
      <th>Risk Reduction</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Building features based on assumptions</td>
      <td>Weeks to months</td>
      <td>Low (confirms your biases)</td>
      <td>Low</td>
    </tr>
    <tr>
      <td>Reading market research reports</td>
      <td>Hours</td>
      <td>Medium (generalized, not your market)</td>
      <td>Low</td>
    </tr>
    <tr>
      <td>Analyzing competitor products</td>
      <td>Days</td>
      <td>Medium (their solution, not your customer’s problem)</td>
      <td>Medium</td>
    </tr>
    <tr>
      <td>Customer discovery interviews</td>
      <td>30-60 min each</td>
      <td>Very high (specific, actionable, in their words)</td>
      <td>Very high</td>
    </tr>
  </tbody>
</table>

<p>Nothing else gives you this return. The ROI on a single well-conducted discovery call dwarfs anything you could learn from a competitor analysis or a market report.</p>

<h2 id="what-customer-discovery-actually-looks-like">What customer discovery actually looks like</h2>

<p>Customer discovery isn’t casual conversation. It’s a structured practice with specific artifacts and a repeatable process. Here’s what I’ve built over the last month.</p>

<h3 id="the-interview-script">The interview script</h3>

<p>Every discovery conversation follows a script. Not a rigid script that you read verbatim, but a structured guide that ensures you cover the important ground while leaving room for the conversation to go where it needs to.</p>

<p>My script has five sections, and I rarely get through all of them in one conversation. That’s fine. The first three are the most important.</p>

<p><strong>Section 1: Their world today.</strong> How does your team build software today? Walk me through what happens from the time someone decides a feature needs to be built to the time it ships. What tools do you use? How many people are involved? How long does a typical feature take?</p>

<p>This section is pure observation. You’re building a mental model of their workflow. Don’t suggest improvements. Don’t react with “oh, we solve that.” Just listen and take notes. The details here are where the real insights hide. Not in what they say is painful, but in the workarounds they’ve normalized.</p>

<p><strong>Section 2: Pain and friction.</strong> What’s the most frustrating part of that process? Where do things break down? What takes longer than it should? If you could fix one thing about how your team ships software, what would it be?</p>

<p>This is where customers start telling you things they haven’t articulated before. Often they’ll pause, think, and then say something that surprises even themselves. Those moments are the most valuable data points you’ll collect. Pay attention to energy shifts. When someone’s voice changes, when they lean in, when they start telling a story about a specific incident, that’s where the real pain lives.</p>

<p><strong>Section 3: Prior attempts.</strong> Have you tried anything to solve this? What tools have you evaluated? What worked? What didn’t? Why did you stop using it?</p>

<p>This section tells you what you’re competing with (and it’s usually not another product; it’s a spreadsheet, a Slack channel, or a manual process that sort of works). It also tells you where the adoption barriers are. If someone evaluated a tool similar to yours and abandoned it, the reasons why are the most important thing you’ll learn all day.</p>

<p><strong>Section 4: Success criteria.</strong> If a tool solved this problem for you, what would that look like? How would you know it was working? What would change about your team’s output or velocity?</p>

<p>This is where you start hearing what success looks like in their language. This maps directly to acceptance criteria in your specifications. I’ve pulled entire requirements from answers to this question.</p>

<p><strong>Section 5: The demo (if time and rapport allow).</strong> Now that I understand how you work, let me show you what we’ve been building. Does this match the problem you described?</p>

<p>Only after you’ve done sections 1-4. The demo is dessert, not the main course. And you’re watching their reaction as much as listening to their words. Where do they lean in? Where do they look confused? What feature do they ask about that you didn’t show?</p>

<h3 id="the-tracker">The tracker</h3>

<p>Every conversation gets logged in a structured tracker. Mine is a spreadsheet with these columns:</p>

<table>
  <thead>
    <tr>
      <th>Column</th>
      <th>Purpose</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Date</td>
      <td>When the conversation happened</td>
    </tr>
    <tr>
      <td>Name / Role / Company</td>
      <td>Who you talked to</td>
    </tr>
    <tr>
      <td>Company size / Stage</td>
      <td>Context for their constraints</td>
    </tr>
    <tr>
      <td>Current workflow</td>
      <td>How they build software today</td>
    </tr>
    <tr>
      <td>Primary pain</td>
      <td>The #1 thing they’d fix</td>
    </tr>
    <tr>
      <td>Secondary pains</td>
      <td>Other friction points mentioned</td>
    </tr>
    <tr>
      <td>Tools evaluated</td>
      <td>What they’ve tried</td>
    </tr>
    <tr>
      <td>Key quotes</td>
      <td>Verbatim phrases that capture their thinking</td>
    </tr>
    <tr>
      <td>Signals</td>
      <td>Buying signals, adoption barriers, enthusiasm indicators</td>
    </tr>
    <tr>
      <td>Follow-up</td>
      <td>Next steps, intros offered, requests made</td>
    </tr>
  </tbody>
</table>

<p>The “Key quotes” column is the most important. When a VP of Engineering says “We spend more time arguing about what to build than actually building it,” that’s a quote you’ll use in your PRFAQ, your pitch deck, your website copy, and your specification pipeline. Capture it exactly as they said it.</p>

<p>After every conversation, I spend fifteen minutes filling in the tracker while the details are fresh. This is non-negotiable. Memory degrades fast. The nuance you think you’ll remember tomorrow is gone by next week.</p>

<h3 id="the-summary-cadence">The summary cadence</h3>

<p>Every five conversations, I write a summary. Not for anyone else. For myself. The summary forces me to synthesize patterns across conversations and update my understanding.</p>

<p>The summary answers four questions:</p>

<ol>
  <li><strong>What patterns am I seeing?</strong> Which pains are universal versus specific to one persona or company stage?</li>
  <li><strong>What surprised me?</strong> What did I learn that contradicts my assumptions?</li>
  <li><strong>What’s the strongest signal?</strong> If I had to bet the company on one customer problem, which one has the most consistent evidence?</li>
  <li><strong>What should I ask next?</strong> What hypotheses should I test in the next five conversations?</li>
</ol>

<p>These summaries are artifacts that feed directly into the Working Backwards process. The patterns become personas. The pain points become use cases. The strongest signals become the PRFAQ’s opening paragraph. The key quotes become the customer testimonials in your FAQ section.</p>

<h2 id="feeding-discovery-into-your-development-process">Feeding discovery into your development process</h2>

<p>This is where customer discovery connects to everything I’ve written about <a href="/engineering/process/best%20practices/ai-assisted%20development/2026/01/11/spec-driven-development-with-llms.html">spec-driven development</a> and the <a href="/engineering/ai-assisted%20development/product%20management/2026/02/21/from-prfaq-to-backlog-working-backwards-as-ai-pipeline.html">Working Backwards pipeline</a>. Discovery isn’t a standalone activity. It’s the first stage of a pipeline that ends with code.</p>

<p>The chain looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Discovery Conversations → Interview Tracker → Pattern Summaries →
  Personas → Use Cases → PRFAQ → Feature Map →
  requirements.md → design.md → tasks.md → Code
</code></pre></div></div>

<p>Every downstream artifact is grounded in something a real customer said. The persona isn’t a fictional character you invented in a workshop. It’s a composite of five real people you talked to, with their actual job titles, their actual pain points, and their actual words.</p>

<p>This is what I meant in <a href="/engineering/ai-assisted%20development/product%20management/2026/02/19/the-missing-half-of-ai-assisted-development.html">The Missing Half of AI-Assisted Development</a> when I wrote that vague product thinking produces vague specifications which produce vague code. Customer discovery is how you make product thinking precise. Not by being smarter or more creative, but by grounding every decision in evidence from the people you’re building for.</p>

<p>The traceability chain I described in my <a href="/engineering/ai-assisted%20development/product%20management/2026/02/25/ai-drift-is-a-product-problem.html">post on AI drift</a> starts here. If you can’t trace a feature back through the specification, through the PRFAQ, through the use case, through the persona, to a specific customer conversation, that feature is at risk of drift at every layer.</p>

<table>
  <thead>
    <tr>
      <th>Pipeline Stage</th>
      <th>Discovery Input</th>
      <th>What It Produces</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Personas</td>
      <td>Role patterns, company stages, workflow descriptions</td>
      <td>Composite customer profiles with real pain points</td>
    </tr>
    <tr>
      <td>Use Cases</td>
      <td>Workflow walkthroughs, “a day in the life” descriptions</td>
      <td>Concrete interaction scenarios</td>
    </tr>
    <tr>
      <td>PRFAQ</td>
      <td>Key quotes, strongest signals, success criteria</td>
      <td>Press release grounded in real customer language</td>
    </tr>
    <tr>
      <td>Feature Map</td>
      <td>Pain frequency, severity rankings, prior solution attempts</td>
      <td>Priority-ordered feature list</td>
    </tr>
    <tr>
      <td>Specifications</td>
      <td>Success criteria answers, acceptance language</td>
      <td>Testable requirements in EARS format</td>
    </tr>
  </tbody>
</table>

<h2 id="common-mistakes">Common mistakes</h2>

<p>Having done this wrong before doing it right, here are the failure modes I’ve seen and made.</p>

<p><strong>Leading with the demo.</strong> I’ve covered this, but it bears repeating because the pull is strong. Demos are valuable, but they’re most effective after you’ve listened. Lead with discovery, and the demo lands harder because you know what to emphasize.</p>

<p><strong>Asking leading questions.</strong> “Don’t you think AI-assisted development tools should integrate with your specification pipeline?” is not a discovery question. It’s a validation question wearing a discovery hat. Ask open-ended questions. “How do your specifications get from the product team to the engineering team?” Let them tell you.</p>

<p><strong>Talking too much.</strong> The ratio should be 80/20 in favor of the customer talking. If you’re explaining your product for more than 20% of the conversation, you’re doing it wrong. I time myself. It’s humbling.</p>

<p><strong>Ignoring the workarounds.</strong> When a customer says “oh, we just use a spreadsheet for that,” pay attention. That spreadsheet is your real competitor. Understand what it does, why it works, and what’s missing. The path from their spreadsheet to your product is your adoption strategy.</p>

<p><strong>Not tracking systematically.</strong> The first three conversations are easy to remember. By conversation ten, details blur together. By conversation twenty, you’ve lost critical nuance. Track everything. Summarize regularly.</p>

<p><strong>Stopping too early.</strong> Five conversations isn’t enough. You’ll think it is, because by conversation five you’re hearing patterns and feeling confident. That confidence is premature. Conversations six through fifteen are where the patterns get tested and the nuances emerge. Twenty conversations is where the map of the problem space starts to stabilize.</p>

<h2 id="why-i-love-doing-this">Why I love doing this</h2>

<p>I want to be direct about something. Customer discovery is not a chore. It’s the most energizing part of building a company.</p>

<p>Every conversation teaches me something I didn’t know. Every customer has built workarounds and mental models that I never would have imagined. The creativity that teams apply to solving their own problems, with duct tape and spreadsheets and Slack bots and manual processes, is remarkable. Understanding those solutions tells you more about the problem than any abstract analysis ever could.</p>

<p>There’s a specific moment in most discovery conversations that I’ve come to look forward to. It happens when the customer stops answering your questions and starts thinking out loud. They’re no longer being interviewed. They’re working through their own problem, using you as a sounding board, and the insights that emerge in those moments are extraordinary. You can’t get there with a survey. You can’t get there with analytics. You can only get there by sitting with someone, asking the right questions, and giving them space to think.</p>

<p>After twenty-plus conversations this month, the product vision is sharper than it’s ever been. The 18 months of building gave me the technical depth to ask the right questions and recognize the significance of the answers. The discovery conversations gave me the customer language, the priority ordering, and the specific refinements that turn a strong thesis into a product people will pay for. The building and the discovery compound on each other.</p>

<h2 id="the-bottom-line">The bottom line</h2>

<p>Customer discovery is the highest-leverage activity an early-stage startup founder can do. It’s not a phase you complete and move past. It’s a practice you maintain throughout the life of the company.</p>

<p>The mechanics are simple. Talk to potential customers. Ask open-ended questions. Listen. Track everything. Synthesize patterns. Feed what you learn into your development process so that every feature traces back to a real customer conversation.</p>

<p>The principle is even simpler. Understand the customer before the customer understands you. Resist the urge to demo. Resist the urge to pitch. Resist the urge to validate. Seek to understand. The validation comes naturally when you build something grounded in what you heard.</p>

<p>I’ve spent 25 years building infrastructure and software at scale. I’ve shipped products used by millions of people. And the most valuable thing I’ve done in the last month is sit in conversations and listen.</p>

<p>If you’re building something and you haven’t done twenty discovery conversations, stop what you’re building and go do them. The product you build after those conversations will be fundamentally different from, and better than, the product you would have built without them.</p>

<p>Start with the customer. Work backwards. Everything else follows.</p>

<hr />

<p><em>David Lapsley, Ph.D., is Founder and CEO of ShipKodeAI. He has spent 25+ years building infrastructure platforms at scale. Previously Director of Network Fabric Controllers at AWS (largest network fabric in Amazon history) and Director at Cisco (DNA Center Maglev Platform, $1B run rate). He writes about AI infrastructure, AI-accelerated SDLC, and the gap between POC and production.</em></p>

<h2 id="references">References</h2>

<p>[1] MIT NANDA Initiative, “The GenAI Divide: State of AI in Business 2025” (2025), <a href="https://fortune.com/2025/08/18/mit-report-95-percent-generative-ai-pilots-at-companies-failing-cfo/">link</a></p>

<p>[2] Lapsley, D., “The Missing Half of AI-Assisted Development” (2026), <a href="/engineering/ai-assisted%20development/product%20management/2026/02/19/the-missing-half-of-ai-assisted-development.html">link</a></p>

<p>[3] Lapsley, D., “Amazon’s Working Backwards SDLC for SMBs” (2026), <a href="/engineering/leadership/process/2026/02/17/amazon-working-backwards-sdlc-for-smbs.html">link</a></p>

<p>[4] Lapsley, D., “From PRFAQ to Backlog: Working Backwards as AI Pipeline” (2026), <a href="/engineering/ai-assisted%20development/product%20management/2026/02/21/from-prfaq-to-backlog-working-backwards-as-ai-pipeline.html">link</a></p>

<p>[5] Lapsley, D., “AI Drift Is a Product Problem, Not an Engineering Problem” (2026), <a href="/engineering/ai-assisted%20development/product%20management/2026/02/25/ai-drift-is-a-product-problem.html">link</a></p>

<p>[6] Lapsley, D., “Spec-Driven LLM Development (SDLD)” (2026), <a href="/engineering/process/best%20practices/ai-assisted%20development/2026/01/11/spec-driven-development-with-llms.html">link</a></p>

<p>[7] Bryar, C. &amp; Carr, B., <em>Working Backwards: Insights, Stories, and Secrets from Inside Amazon</em> (2021)</p>

<p>[8] Fitzpatrick, R., <em>The Mom Test: How to talk to customers &amp; learn if your business is a good idea when everyone is lying to you</em> (2013)</p>]]></content><author><name>David Lapsley, Ph.D.</name></author><category term="Product Management" /><category term="Leadership" /><category term="Engineering" /><category term="customer-discovery" /><category term="product-discovery" /><category term="working-backwards" /><category term="startup" /><category term="sdlc" /><category term="interviews" /><category term="product-market-fit" /><summary type="html"><![CDATA[I've spent the last month in back-to-back customer discovery conversations. The insights have been transformative. Here's why customer discovery is arguably the most important activity for early-stage startups, and a practical guide to doing it well.]]></summary></entry></feed>