How Software Gets Built
A Field Guide to the Lifecycles

Chapter 7 of 18 Practitioner · 18 min

I have shipped software through four of these and watched the rest arrive. A stand-up that quietly replaced a sign-off gate. An API contract that more than a dozen squads built against at the same time. An evening last week when I handed an agent a goal and reviewed what it had written. The same phases underneath every time. Only the choreography changed.

// the crux

Every team builds through some lifecycle – Waterfall, Agile, Lean, and now the agentic loop. Ten approaches, one SDLC spine, and a single ruler they all answer to: working software in front of a real user. AI changes the loop, not the spine.

// in one breath
  • Eleven names get thrown around. Sort them into three layers and most of the confusion goes away.
  • Only two are rival lifecycles. Three are priority lenses. Five are ways the building happens once an AI is in the loop. And the SDLC is none of those – it is the spine the rest rearrange.
  • One feature, ten ways, a fingerprint for each – plus the thirty corrective years between Waterfall and Agile, whose lessons the AI era is quietly re-running at machine speed.

Ask ten engineers how software gets built and you will hear the same names, usually as if they were eleven competing answers to one question. Waterfall. Agile. Mobile-first. API-first. AI-first. Spec-driven. Vibe coding. Agentic. Loop engineering. Harness engineering. And the plain old SDLC underneath all of them. Lined up like that, they look like a menu you choose one item from. They are not. They are not even the same kind of thing.

That is the single idea that makes the rest of this guide easy. These eleven names live on three different layers, and once you can see the layers, you can stop arguing about which one is right and start asking which one fits the work in front of you.

Layer A · Methodology
How the whole delivery is organised
A full lifecycle, end to end. These are the genuine rivals: pick one and it shapes every phase.
Waterfall · Agile (+ the corrective era between)
Layer B · Stance
What you optimise for first
A priority lens that layers on top of a methodology. It does not replace Agile; it tells you what wins when something has to give.
Mobile-first · API-first · AI-first
Layer C · Execution
How the building itself happens
New ways to move through the build now an AI is in the loop. They change how code appears, not how the project is run.
Spec-driven · Vibe coding · Agentic · Loop & harness engineering

Read it once more from the top: only Waterfall and Agile are full, rival lifecycles – the two still standing, that is; the thirty years of corrections between them get their own stop further down. The three first stances are lenses you hold over whichever lifecycle you already run. The five AI-era styles change how the build phase happens, not how the whole thing is steered. And the SDLC is not an eleventh contender at all. It is the spine the other ten rearrange, which is exactly why we will come back to it at the end.

the line of descent

Where Each One Came From

None of these arrived in a vacuum. Each was a reaction to the pain of the one before it, and you can read the whole history as a single line bending toward shorter feedback loops and faster correction. Here is the lineage, in the order it actually happened.

1970 WaterfallMethodology
Plan the whole thing, then build it once, top to bottom. Named in a 1970 paper that actually held it up as a cautionary example.
mid-1970s PrototypingMethodology
Build a rough version to force the real requirements out of hiding, then throw it away. Fred Brooks had already written the rule: plan to throw one away; you will, anyhow.
1970s–80s Iterative & incrementalMethodology
Deliver the system in slices and let each delivered slice correct the plan for the next. Quietly practiced for decades before anyone wrote a manifesto about it.
1986 SpiralMethodology
Barry Boehm puts risk in the driver's seat: every cycle attacks the biggest remaining unknown first. The 1990s WinWin variant adds stakeholders negotiating win conditions at each turn.
1991 RADMethodology
James Martin's rapid application development: timeboxed builds measured in weeks, users in the design workshop, and assembly from reusable parts over writing from scratch.
1999 Unified ProcessMethodology
The grand synthesis – use-case driven, architecture-centric, iterative within four phases. Serious, complete, and heavy enough to make the next entry inevitable.
2001 AgileMethodology
Stop pretending you can specify it all up front. Ship a thin slice, learn from it, repeat. Formalised in the 2001 manifesto.
~2010 Mobile-firstStance
As the smartphone took over, design for the smallest, most constrained screen first, then scale up to the desktop rather than down to the phone.
2010s API-firstStance
As the API economy matured, agree the contract before anyone writes the code, so many teams and many clients can build against it at once. The ancestor of spec-driven development.
2016 AI-firstStance
Around 2016 Google publicly reframed itself from a mobile-first to an AI-first company: assume a model is the core of the product and design around what it can do.
2024 Agentic codingExecution
As coding agents arrived, hand a goal to a system that plans, edits across the repo, and runs the tests, while you set the goal and hold the gates.
2024–25 Spec-driven devExecution
Push AI past autocomplete: write the specification precisely and let the model implement it and be checked against it. API-first generalised from one endpoint to a whole feature.
2025 Vibe codingExecution
Named by Andrej Karpathy in early 2025: describe what you want in plain language, run what the model writes, and keep tuning by feel without reading every line.
2025–26 Loop engineeringExecution
Once agents wrote faster than anyone could review, attention moved to the lap they run: give the model a fast, honest signal – tests, types, a build that fails loudly – and let it iterate until green.
2026 Harness engineeringExecution
The youngest name here: treat the agent's working environment – the instructions it reads first, the tools it may call, the gates it cannot skip – as something you engineer once and every task inherits.

Notice that the colours cluster. The blue era was about organising people. The amber era was about choosing a constraint to respect. The purple era is about who, or what, is holding the keyboard. Three different questions, which is why they never really competed.

The two youngest purple names sit a little apart, and the gap is the point. Agentic coding hands the model the keyboard; these two are the disciplines that grew up around it once it left the demo. Loop engineering gives each task a lap the agent can run – write, run, read the failure, fix – and a finish line it cannot fake. Harness engineering equips the repository those laps happen in: the context an agent loads before its first edit, the tools it is allowed to hold, the checks that stand whether or not anyone is watching. More of my evenings now go into the files an agent reads before it touches the code than into the code itself.

the corrective era

The Thirty Years Between the Staircase and the Sprint

Most tellings of this story jump from 1970 to 2001 in one stride, as if the industry slept between Waterfall and the manifesto. It did not. It spent three decades correcting Waterfall one painful lesson at a time, and the models that era produced – prototyping, iterative and incremental delivery, Boehm's spiral and its WinWin variant, Martin's RAD, the V-model, the Unified Process, Beck's test-first XP – were still the canon in every software engineering textbook when I entered the industry. The enterprises I have worked in carry their fossils to this day: a sign-off gate here, a risk review there, long after anyone stopped saying the model's name out loud.

Read the era as one argument unfolding. Every model in it found a different way to buy back the thing Waterfall deferred, feedback, and each paid for it with a new kind of overhead. Feedback against overhead is the axis the whole era slides along – and, as the last column below is about to show, the axis the AI era is sliding along again.

Model The correction it made Where it broke Its AI-era echo
Prototyping
mid-1970s
Build a rough version first to force the real requirements out of hiding, then discard it and build properly. The prototype was rarely discarded. Demos became products, and the quick hack became the foundation. Vibe coding – the same promise at minute scale, and the same throwaway quietly shipping to production.
Iterative & incremental
1970s–80s
Deliver in slices; let each delivered slice correct the plan for the next one. Without a real user in the loop, the slices never converged – each iteration just rehearsed the same guesses. The agent's inner lap. Every loop is an iteration; the increment shrank from a release to a diff.
Spiral
1986
Boehm made risk the driver: each cycle sizes the biggest remaining unknown, attacks it, and lets the result steer the next cycle. It assumed someone senior enough to name the risks honestly. Most projects spiralled by calendar instead. Loop engineering with human gates: choosing the agent's next lap by what might fail worst is Boehm's cycle at minute scale.
WinWin Spiral
1990s
Before each cycle, every stakeholder states a win condition, and the plan is negotiated until all of them can win. Negotiation theatre. Win conditions were written once, filed, and never consulted again when the schedule bit. Spec-driven development – the spec as the negotiated contract, except one signatory is now a model that holds you to what you wrote.
RAD
1991
Martin's timebox: sixty to ninety days, users in the workshop, assembly from reusable parts over writing from scratch. The timebox held only while the parts library fit the problem. Off the beaten path, speed collapsed into rework. The closest ancestor of AI-assisted building itself. Assembly from prior work, except the parts library became the training corpus.
V-model
1980s
Pair every building phase with a checking phase: requirements to acceptance tests, design to integration tests, code to unit tests. All the verification was planned early and executed late – the right arm of the V arrived after months of compounding mistakes. The loop's finish line. Fold the V until its two arms touch and you get write-and-verify in one lap, run every few seconds.
Unified Process (RUP)
1999
The grand synthesis: use-case driven, architecture-centric, iterative inside four named phases. It sank under its own artifacts. Teams produced documents about the process instead of software through it. A warning, not a technique: harness engineering is one committee away from becoming RUP for agents – files nobody reads, gates nobody trusts.
XP / TDD
1999
Kent Beck's Extreme Programming pulled verification in front of the code: write the failing test, make it pass, clean up. Feedback arrived in minutes instead of at phase ends. It ran on discipline alone. Under deadline pressure test-first slid into test-after, and test-after into test-never. Loop engineering. The agent's lap is red, green, refactor run by a machine, and the failing test is the scope you hand it.

Agile did not defeat these models in argument. It absorbed their corrections – prototyping's learning-by-building, the spiral's nose for risk, RAD's timebox and its users in the room, XP's test-first discipline – and cut away the ceremony they had accumulated. That is what 2001 actually was: less a new idea than a weight reduction. Which is why this era has started to matter again. The AI-era styles further down this page are the corrective era's second run, with the loop time collapsed from quarters to seconds now that a model can hold the keyboard. Every failure in the middle column above is available again at that speed. Knowing what killed each correction the first time tells you where to stand guard on your own team now.

same destination, ten routes

One Feature, Ten Ways

Abstractions are slippery, so make it concrete. Take one small, universal job: let a user who forgot their password get back into their account. Here is how each of the ten named approaches would actually go about it. Same destination every time. Very different journeys.

Waterfall
Write the full reset specification, get it signed off, then design, build, and test it as part of a release that ships months later.
Agile
A "reset password" story enters the next sprint and ships in a week or two, then gets refined from how real users actually fare with it.
Mobile-first
Design the phone flow first – a tap straight through from the email, an autofilled code – then widen it to the desktop, not the other way round.
API-first
Define the reset endpoints and payloads as a contract, and let web, mobile, and backend teams build against it in parallel from day one.
AI-first
Ask whether it needs a password at all – passkeys, a risk score, a model deciding when to demand a second factor and when to wave a known device through.
Spec-driven
Write a precise spec – token lifetime, rate limits, every state and error – and have the AI generate the implementation and its tests directly from it.
Vibe coding
Prompt "build me a password reset with an email token," run it, and nudge it until it works. Perfect for a prototype. Not, on its own, for production.
Agentic
Hand an agent the repository and the test suite, let it plan and edit across files and run the tests, and review the pull request it opens.
Loop engineering
Wire the lap before any agent starts: reset-flow tests that fail honestly, error output it can read, one command that runs everything. Then let it iterate to green and review the diff that survived.
Harness engineering
Zoom out from the one feature. Equip the repository itself – an instructions file agents load first, a seeded test login, checks that cannot be skipped – so the reset flow, and every task after it, starts halfway done.

Read top to bottom and you can feel the loop tightening. Months, then weeks, then an afternoon, then minutes. That tightening is the whole story of the last fifty years. And the last two rows mark where it turns: once the loop runs faster than you can watch it, your work moves out of the loop and into building it.

the shape of each one

What Each One Feels Like to Work In

A methodology has a texture. You can tell which one you are in by the rhythm of your week long before anyone says its name. Here is each approach by its characteristic shape – what it feels like, what it is genuinely good for, and the moment it tends to fall apart. The colour of each card tells you which layer it belongs to.

Waterfall Methodology

A staircase you walk down once. Each phase finishes and is signed off before the next one begins, and turning back up the stairs is expensive.

BestFixed, well-understood scope, often where a contract or a regulator demands the plan up front.
BreaksThe day the requirement changes – which, on a long enough project, is every day.
Agile Methodology

A short loop you run again and again. Plan a slice, build it, ship it, learn, and let what you learned reshape the next slice.

BestEvolving scope with a real feedback channel to users you can act on quickly.
BreaksWhen the ceremonies stay but the engineering is weak. No framework saves a team that cannot build.
Mobile-first Stance

Designing for the hardest seat in the house first – the small screen, the thumb, the flaky network – on the bet that if it works there, it works anywhere.

BestWhen most of your users arrive on a phone, which for most consumer products is now the default.
BreaksWhen dense, desktop-class workflows get cramped into a compromise built for a phone.
API-first Stance

Agreeing the handshake before anyone builds. The contract is the product, and teams build against it in parallel. The direct ancestor of spec-driven development.

BestMany consumers and many parallel teams that need a stable interface to share.
BreaksWhen you freeze a contract before you understand the domain, and every team inherits the guess.
AI-first Stance

Starting from what the model and the data can do, and designing the product around that capability rather than bolting a model onto something already shipped.

BestWhen an AI capability is the actual value, not a garnish on it.
BreaksWhen "AI" is a label with no real capability or data underneath it.
Spec-driven Execution

Writing the blueprint so precisely that the building falls out of it. The spec is the source of truth; the AI implements it and is measured against it.

BestWhen you can actually specify the thing, and you want AI speed without losing the rails.
BreaksA vague spec produces vague code, generated faster than you can review it.
Vibe coding Execution

Conducting rather than typing. You describe intent, the model writes, you keep what feels right. Karpathy's phrase for giving in to the vibes and barely reading the diff.

BestPrototypes, throwaways, weekend experiments, and learning a new corner of the stack.
BreaksThe moment it reaches production unreviewed and the unread lines start to matter.
Agentic Execution

Delegating to a tireless junior that plans, edits across the repository, and runs the tests, while you own the goal and stand at the gates where it matters.

BestWell-scoped, verifiable tasks with strong tests and clear guardrails.
BreaksFuzzy scope, or no review gate to catch a confident mistake before it ships.
Loop engineering Execution

Designing the lap instead of running it. You stop steering each edit and build the circuit – a fast build, honest tests, errors a model can read – then let the agent circle until the work passes.

BestTasks with a checkable finish line: a failing test, a type error, a screen that has to render.
BreaksA weak signal. Flaky tests and vague criteria teach the agent to satisfy the checker rather than the user.
Harness engineering Execution

Building the workshop rather than the furniture. Your effort goes into what every agent task shares – the context loaded first, the tools allowed, the gates that hold – and pays out on every task that follows.

BestTeams running agents daily, where an hour on the harness buys time back on every future task.
BreaksScaffolding built ahead of need, tuned for problems no agent has actually hit.
the fingerprint

Ten Approaches, Side by Side

If the cards are for feel, this is for decisions. The same five questions asked of every approach, so you can scan down a column and compare like for like. Read across a row and you have its fingerprint.

Approach Layer Unit of work Who drives Loop length Where AI sits
Waterfall Methodology A signed-off phase document Analyst and project manager Months Absent
Agile Methodology A user story in a sprint A cross-functional team One to two weeks Optional assistant
Mobile-first Stance The smallest-screen experience Designer and front-end Rides the host method Assistant
API-first Stance / bridge The API contract Architect and API designer Contract up front, then parallel Assistant
AI-first Stance The model capability and its data Product with ML and data Experiment-driven The core of the product
Spec-driven Execution A precise feature spec Author writes spec, AI builds Hours to days Pair, then driver
Vibe coding Execution A natural-language prompt The developer and model, by feel Seconds to minutes Driver, loosely held
Agentic Execution A goal handed to an agent The agent acts, a human checks Minutes to hours Driver, gated
Loop engineering Execution The feedback lap around a task Human builds the lap, the agent runs it Seconds to minutes per lap Driver, checked every lap
Harness engineering Execution The environment agents work in Senior engineers as toolsmiths Compounds across tasks Driver, on rails you built

One column repays a slow read: where AI sits. It moves from absent, to a helper at your elbow, to a pair at the keyboard, to the thing actually driving while you watch the road – and, in the last two rows, while you lay it. That migration is the real reason the old process questions feel unsettled. We changed who holds the keyboard without changing the road.

the spine underneath

The One Ruler They All Measure Against

So where did the SDLC go? It never left. The software development lifecycle is not an eleventh approach you would choose instead of Agile or vibe coding. It is the set of phases that every one of them rearranges. Strip away the branding and the same nine stages are always there, from first conversation to long-lived change. The methodology decides how you move through them; it does not get to skip them.

Here is the spine in full – the same nine phases this series uses elsewhere – with who acts, the gate that says a phase is done, and what it leaves behind.

Phase Who acts Milestone gate Deliverable
01 · AnalyzeAnalyst, product, stakeholdersRequirements agreedAcceptance criteria
02 · DesignArchitectDesign signed offArchitecture, domain model, contracts
03 · DevelopEngineers, increasingly with AICode completeThe implementation
04 · TestQA and engineersQuality gate passedA passing suite and coverage
05 · BuildRelease engineeringArtifact producedA deployable artifact
06 · DeployDevOps and SREReleased to productionA running system
07 · MonitorSRE and on-callObservability in placeDashboards, alerts, SLOs
08 · DeliverProduct and deliveryValue accepted by usersThe outcome, demo, sign-off
09 · ChangeThe whole teamChange managed safelyVersioning and a rollback path
↳ see also · Chapter 13 – The SDLC Practitioner's Map takes these nine phases and crosses them with eight structural forces, one reference grid for where AI helps and where it bites.

Now the trick that makes the whole landscape click. Every approach in this guide is just a way of weighting and reordering these nine phases. Lay them side by side against the same spine and the differences stop being slogans and become choices about where the work goes.

Waterfall
Runs all nine once, in order, with a hard gate between each. Heavy on Analyze and Design, because going back is so costly.
Agile
Runs all nine inside every sprint, lightly, then runs them again. The gates become conversations instead of sign-offs.
Mobile-first
Reweights Design and Build around the most constrained client, and makes the store-review wait a first-class fact of the Build phase.
API-first
Pulls the contract to the front of Design, so Develop and Test can run in parallel across teams against a shared interface.
AI-first
Starts Analyze from the model and the data, and rebuilds Monitor to watch output quality, not just uptime.
Spec-driven
Loads the weight onto Analyze and Design, the spec, then lets AI carry Develop and Test directly from it.
Vibe coding
Collapses Design, Develop, and Test into one fast loop, and often skips Monitor, Deliver, and Change entirely. That omission is why it is prototype-grade.
Agentic
Lets the agent run Develop and Test and propose Design, while humans keep Analyze and stand at the Deploy, Monitor, and Change gates.
Loop engineering
Welds Develop and Test into one closed lap the agent runs alone, and moves the human's work to the finish line: deciding what counts as green.
Harness engineering
Runs nothing itself. It equips the spine – Test, Build, and Monitor become tools an agent can wield – so every later pass through Develop starts further ahead.

Look at the bottom five rows again. The AI-era styles do not invent new phases. They move the human's attention to different ones. Vibe coding bets you can skip the back half. Agentic coding bets you can delegate the middle if you guard the ends. Loop and harness engineering bet the guarding itself can be engineered – per task as a loop, per codebase as an environment. Every one of these bets is about the spine, not about the model.

One more column belongs on the spine before we leave it. Every phase has a deliverable, and for every deliverable the industry long ago wrote down a standard that defines it. In the AI era those standards stop being shelf documentation and become the working scope you hand an agent: a boundary that says what the deliverable is, while leaving the approach open inside it. A model that receives the arc42 template, the failing test, or the SLO definition holds the same definition of done the team holds. Chapter 6 makes the full argument for why this amplifies rather than restricts. Here is the mapping, phase by phase.

Phase The standard that scopes an agent
01 · AnalyzeUser stories with acceptance criteria; a definition of ready
02 · DesignDDD bounded contexts; arc42 as the document template; the C4 model for structure at four zoom levels; UML where precision pays
03 · DevelopTest-driven development: the failing test as the task's boundary
04 · TestThe test pyramid for shape; orthogonal arrays for sizing the functional matrix; evals for AI output
05 · BuildPipelines as code; reproducible builds
06 · DeployDeployment checklists; progressive delivery rules
07 · MonitorSLOs and error budgets; runbooks written to be executed
08 · DeliverThe definition of done; acceptance owned by a human
09 · ChangeSemantic versioning; architecture decision records; the rollback path written first
↳ see also · Chapter 6: AI Adoption Is Not a Tooling Problem closes with this idea argued in full: scoped, not constrained, with the standards as the amplifier.
// why this matters more than the tool you pick

The choreography changed. The phases did not. Which is why teams that struggle with AI rarely have a tooling problem. They have a process pointed at the wrong phase – writing for the spine they used to have, not the one they are standing on now.

A field guide tells you what you are looking at. It does not tell you it is easy. The hard part was never choosing a name off the menu; it is knowing which phase of the spine your current trouble actually lives in, and being honest about which approach quietly skips it.
// carry forward

You have the lifecycles. Next, the pressures reshaping them: the eight forces the AI era puts on how software gets built – the overview map before the next four chapters walk it phase by phase. That is Chapter 8.