Presentation: Engineering at AI Speed: Lessons from the First Agentically Accelerated Software Project
Adam Wolff · rss · 2026-04-20 source ↗ Reader 🖥️
Adaptive Advantage / Adaptive CapacityAgentic EngineeringFeedback LoopsLearning Culture & SlackNear-Zero-Cost CodeProduct Discovery & Experimentation
When AI drives implementation cost to near zero, the competitive advantage shifts from planning and coding speed to the speed of your feedback loop — how fast you can ship, learn from users, and reverse course — making experimentation, not upfront design, the right engineering strategy.
practical · mixed — A conference talk mixing narrative case studies (three war stories from building Claude Code) with practical prescriptions for how engineering teams should adapt to AI-accelerated development. The three stories serve as evidence for the concluding practical argument.
Structure
| Part | Role |
|---|---|
| Introduction and framing: AI has shifted the SDLC bottleneck from implementation to architectural decision-making | Context and thesis statement |
| Story 1: The Cursor class — rebuilding terminal input from scratch | Evidence (positive case): an architecture bet that defied conventional wisdom and paid off because of testability and modularity |
| Story 2: Claude's shell — from persistent shell to transient shell with snapshots | Evidence (ambiguous case): an architecture that required painful iteration but yielded a composable design through trial and error |
| Story 3: SQLite persistence — shipped and unshipped in two weeks | Evidence (failure case): demonstrates that rapid unshipping is a valid and necessary outcome of experimentation |
| Synthesis: what to do about AI — optimize delivery cadence, make reversal easy, invest in build/release/distribution | Conclusion and prescriptive recommendations |
Key terms
- engineering at AI speed Agentic Engineering
A mode of software development where implementation cost is near zero and the bottleneck is the feedback loop — shipping, learning, and iterating — rather than writing code - unshipping Product Discovery & Experimentation
Deliberately removing a shipped feature when experimentation reveals it was the wrong path, treated as a normal and expected engineering outcome rather than a failure - speed of learning Learning Culture & Slack
The rate at which a team can discover what to build, what architecture works, and what to abandon — distinct from speed of implementation - persistent shell / transient shell
Two competing architectures: persistent shell keeps one shell session alive across commands (preserving state but blocking parallelism); transient shell spawns fresh shells per command (enabling parallelism but losing state, recovered via snapshots) - snapshot
A technique of capturing the user's shell environment (aliases, variables, functions) once and replaying it at each transient shell spawn, enabling parallelism while preserving user customization - dogfooding
Using your own product as the primary development tool, creating a compounding feedback loop where improvements to the product directly accelerate further development
Propositions
- explicitcorroboratedWhen implementation cost approaches zero, the speed of learning becomes the only competitive advantageconf: highextends9) Nils Brede Moe om AI-paradokset, autonomi, læringskultur og fremtidens team · p2 — Wolff takes 'software development is fundamentally a learning process' further: once implementation cost approaches zero, speed of learning becomes the only competitive advantage.supports ←The New Rules for Becoming an Enterprise Leader · p9 — Independently arrives at the same conclusion — that in a fast-moving environment, the capacity to learn/adapt becomes the only durable edge — from a software-delivery-cost argument rather than a leadership-strategy one.
- explicitIt is usually better to ship and learn from users than to spend time on upfront requirements and designconf: high
- explicitArchitectural choices, not implementation effort, determine project outcomes in AI-accelerated developmentconf: high
- explicitTesting is enormously valuable when the abstraction is right, but tests on the wrong abstraction must be thrown awayconf: high
- explicitIf experiments never fail, you are not experimenting enoughconf: high
- explicitAvailability trumps consistency for developer tools, unlike financial systemsconf: high
- explicitNative dependencies are unworkable in npm distribution for end-user CLI toolsconf: high
- implicitAI coding tools are most effective on self-contained, well-tested, modular code and less effective when dealing with complex dependencies and ecosystem constraintsconf: high
- implicitcontestedThe design document and extensive upfront planning phase of traditional software engineering is becoming obsoleteconf: mediumcontradictsPresentation: AI-First Software Delivery: Balancing Innovation with Proven Practices · p6 — Wolff declares extensive upfront design and planning obsolete, against the 10:1 specification-to-code effort prescription.
- implicitcontested90% of production code being AI-written is sustainable and desirable for a shipping productconf: mediumcontradicts ←Trust Factory · p6 — Beck argues the current high-code-velocity/low-trust-accumulation mode is unstable and unsustainable, directly opposing Wolff's claim that 90% AI-written code is sustainable and desirable for a shipping product.
- explicitThe relationship between the developer and the AI tool is a craft that requires continuous meta-reflection to improveconf: high
- implicitPersistent, monotonically increasing pain is a reliable signal that you are on the wrong architectural pathconf: high
Arguments
Teams should replace upfront design with rapid experimentation and fast shipping cycles strength: high
Explicit premises:
- AI has made implementation cost near zero
- The old bottleneck (implementation) justified upfront design investment
- The new bottleneck is the feedback loop, not the implementation
Implicit premises:
- The cost of shipping a wrong feature and reverting is lower than the cost of delayed learning from upfront design
- Users and production environments reveal requirements that no amount of design discussion can anticipate
- The team has the infrastructure (CI/CD, feature flags, modular architecture) to support rapid reversal
Inferences:
- Organizations that retain heavy upfront planning processes are losing their competitive advantage to those that don't
- The value of senior engineering judgment shifts from 'design the right thing' to 'recognize quickly whether we're on the right track'
Modular, composable architecture matters more than ever in AI-accelerated development strength: high
Explicit premises:
- Self-contained modules with good tests are where AI excels (Cursor story)
- Composable abstractions enable independent evolution (shell snapshot + sandbox)
- Tests on the wrong abstraction are wasted (persistent shell tests deleted)
Implicit premises:
- AI tools work best within clear boundaries and well-defined interfaces
- The cost of wrong abstractions is primarily the lost opportunity of faster iteration, not the wasted implementation effort
Inferences:
- Architecture skills become more valuable than implementation skills in AI-accelerated teams
SQLite was the wrong choice for Claude Code conversation persistence strength: high
Explicit premises:
- Native npm dependencies break cross-platform distribution
- SQLite's locking model doesn't support safe multiprocess writes
- Migrations at startup on user machines are risky and unobservable
- Availability is more important than consistency for a developer tool
Implicit premises:
- The benefits of a database (consistency, integrity, safe concurrency) are only valuable when the deployment environment is controlled
- Developer tools have fundamentally different reliability requirements than server-side applications
Inferences:
- The 'always use a database for structured data' heuristic is context-dependent and can lead experienced engineers astray when moving between domains
Narratives
- The Cursor class: rebuilding terminal input from scratch, facing Unicode bugs, adding Vim mode, optimizing for performance — each challenge met by the testable, immutable architecture
→ Supports the proposition that defying conventional wisdom ('don't rebuild input') can pay off when the architecture is right, and that AI accelerates development most when code is self-contained and well-tested - The shell evolution: persistent shell to transient shell with environment snapshots, seven months of edge cases from real users' shell configurations
→ Supports the proposition that the right architecture emerges through experimentation, not upfront design, and that pain is normal even on the right path — the key is whether it's increasing or manageable - The SQLite persistence attempt: 15 days of mounting problems from native dependencies, locking, migrations, and multiprocess conflicts, ending in complete removal
→ Supports the proposition that rapid unshipping is a valid engineering practice, and that domain-transferred intuitions (from Robinhood's database-centric approach) can mislead - The slide rule etymology of 'cursor'
→ A framing device connecting the physical origins of the concept to the software abstraction, adding texture to the technical narrative - Wolff's self-analysis conversation with Claude about his own prompting patterns
→ Supports the proposition that the developer-AI relationship requires meta-reflection, and that Claude can help with that reflection
Questions addressed
- ✅ How does AI change the software development life cycle?
AI shifts the bottleneck from implementation to feedback loops; the SDLC should be reorganized around speed of learning rather than speed of coding - ✅ What engineering practices should teams adopt for AI-accelerated development?
Optimize delivery cadence (toward continuous deployment), build in reversibility (feature flags, modular architecture), invest in build/release/distribution infrastructure, and be willing to unship - ⭕ When should you persist through pain vs. reverse course?
Wolff offers heuristics (monotonically increasing pain = wrong path; manageable pain with architectural benefits = right path) but acknowledges this is hard to judge in the moment - ⭕ How does AI-accelerated development work in regulated industries?
Wolff deflects to internal tooling as a starting point but does not substantively address how experimentation-over-planning works under compliance constraints - ⭕ What are the long-term quality implications of 90% AI-generated code?
Gaps
- incompleteAll three case studies come from a single team (Claude Code at Anthropic) building a CLI tool with unusually tight dogfooding loops. The argument that experimentation should replace upfront design is not tested against contexts with higher costs of failure (healthcare, infrastructure, finance), longer feedback cycles, or larger teams where coordination costs dominate.
Read next: Literature on high-reliability organizations (e.g., Normal Accidents by Perrow); experiences of AI adoption in safety-critical domains - incompleteWolff claims implementation cost is approaching zero but doesn't address the growing cost of understanding, reviewing, and maintaining AI-generated code. The anecdote about finding 'crap code' in main that turned out to be his own PR suggests a review quality problem that is not examined.
Read next: Research on technical debt in AI-generated codebases; studies on code review effectiveness with AI-generated PRsclosed by[FULL WORKSHOP] AI Coding For Real Engineers - Matt Pocock, AI Hero — Directly addresses the unexamined review cost: developers now review more code than ever with no clean reconciliation with small-PR discipline, lose their mental model faster, and deep modules plus fresh-context review are the proposed defences. - incompleteThe talk assumes a small, highly skilled team that can make and evaluate architectural decisions rapidly. No discussion of how these practices scale to larger organizations where most engineers are not senior architects.
Read next: Team Topologies (Skelton & Pais); research on scaling agile and continuous deployment in large organizations - uninformedThe SQLite analysis conflates SQLite's limitations with the specific way it was deployed (npm native dependency distribution, Better-SQLite3 binding). SQLite-via-WASM (e.g., sql.js) would have avoided the native dependency problem entirely. The multiprocess locking concern is real but standard WAL mode mitigates it significantly.
Read next: SQLite documentation on WAL mode; sql.js and other WASM-based SQLite distributions
Related documents
- 9) Nils Brede Moe om AI-paradokset, autonomi, læringskultur og fremtidens team
- AI Demands More Engineering Discipline, Not Less
- How to Build a Superteam That Keeps Getting Better
- 11) AI-spesial med Vilde Opsal og Anders Sveen
- Have your agent record video demos of its work with shot-scraper video
- [FULL WORKSHOP] AI Coding For Real Engineers - Matt Pocock, AI Hero
- Presentation: AI-First Software Delivery: Balancing Innovation with Proven Practices
- AI Is Changing the Rules of Entrepreneurship
- Harness engineering for coding agent users
- Podcast: How Will We Train Developers If AI Does the Routine Work: A Conversation with Scott Hanselman