AI did not retire the old acronyms. It changed where they belong.

If you have been around software teams long enough, you have seen this movie before.
Somebody says DDD while somebody else says TDD. The QA-minded person brings up BDD, and if the room skews older or more enterprise FDD shows up too. Then AI arrives, the team gets excited and suddenly a new acronym starts trying to sit at the same table:
AIDD — AI-Driven Development.
That is usually where the confusion starts.
Because AIDD sounds like the newest member of the same family. Another “driven development” method. Another box to add to the process diagram. Another thing to argue about in a planning meeting that should have been an email.
But AIDD is not really competing with TDD, DDD, BDD, or FDD.
It drives a different layer.
That is the distinction I think many teams are missing right now. They treat AI-driven development like a replacement philosophy, when it is closer to a coordination philosophy. It changes how work moves between humans and machines. It does not magically remove the need for a domain model, executable tests, shared behavior language, or sane feature slicing. If anything, it makes those older disciplines more important, because now there is a fast machine waiting to amplify whatever quality of instructions you hand it.
Good luck if those instructions are a mess.
Quick glossary before we go further
If the acronyms are not all top of mind, here is the short version:
- DDD: Domain-Driven Design. It shapes the domain model and business boundaries.
- TDD: Test-Driven Development. It shapes implementation through failing tests first.
- BDD: Behavior-Driven Development. It shapes behavior through shared examples.
- FDD: Feature-Driven Development. It shapes delivery through customer-visible feature slices.
- AIDD: AI-Driven Development. It shapes how humans and AI agents move intent into implementation, verification, and review.
The old DD acronyms were never driving the same thing
This is the first cleanup job we need to do.
People often talk about DDD, TDD, BDD and FDD as if they are rival religions. They are not. They focus on different artifacts.
DDD
- Core focus: the domain model.
- What it shapes: language, boundaries, aggregates, invariants and whether your software structure actually matches the business problem.
- Best outcome: the system stops lying about what the business is.
TDD
- Core focus: the implementation loop.
- How it works: write the failing test first, make it pass and then refactor.
- Done well: TDD shapes code through feedback instead of optimism.
BDD
- Core focus: shared behavior understanding.
- How it works: use examples and collaboration so business people and technical people stop pretending they mean the same thing by default.
- Best case: requirements stop turning into folklore.
FDD
- Core focus: work slicing by customer-valued feature.
- How it works: planning, designing and building happen in units of feature progress rather than vague effort.
- Payoff: visible increments. Not abstract motion.
None of those methods are actually solving the same problem. They overlap, yes, but they do not point at the same object.
That matters because AIDD also points at a different object.
AIDD drives the handoff between human intent and machine execution
This is the cleanest way I know to say it.
AIDD does not primarily drive your domain model because DDD still does that. It does not primarily drive your test loop either, because TDD still does that. It also does not primarily own business-readable examples or feature slicing, because BDD and FDD still have real work to do there.
AIDD drives how context, constraints, plans, verification and implementation work move through AI agents.
That is a different job.
AWS made this explicit when it described its AI-Driven Development Lifecycle. Their model is not “ask AI for code and hope.” It puts AI-powered execution under human oversight, then stretches that pattern across requirements, architecture, code, tests and operations. OpenAI describes Codex in a similar way: separate cloud tasks, isolated environments, terminal logs, test results and explicit evidence. GitHub’s cloud agent gets its own environment and can run tests and linters. Anthropic’s guidance pushes the same direction from another angle: give the agent a way to verify its work, explore first, then plan, then code.
Notice what happened there.
The AI system is no longer just filling in functions. It is participating in the workflow around the functions.
That is why I do not think AIDD belongs in the same mental bucket as TDD or DDD. It is not telling you what a good domain boundary is. It is telling you how a human and an agent should cooperate so the boundary gets implemented, tested, reviewed and revised without turning your repo into a landfill.
Why teams think AIDD replaces everything
Because code is the loudest artifact in the room.
When an AI agent writes code quickly, it feels like the entire development method has changed. In one sense it has, because the speed of production changes, the shape of delegation changes, and the cost of trying bad ideas drops fast enough that teams start acting differently. Still, that part is real.
But there is a trap in that feeling.
The trap is assuming that because implementation got cheaper, the disciplines that shape implementation got less important. Usually the opposite happens.
A human developer can often survive vague boundaries and incomplete intent because they fill gaps with judgment. An AI agent can also fill gaps, but it does it by pattern completion. Sometimes that looks brilliant. Sometimes it looks like a clean commit that quietly solved the wrong problem with impressive confidence.
So the weaker your DDD, TDD, BDD, or feature slicing is, the more dangerous AIDD becomes.
That is the important inversion.
Bad engineering discipline with slow humans is expensive. Bad engineering discipline with fast agents is explosive.
What AIDD does to TDD?
TDD is usually the first thing people think AI will obsolete.
I do not buy that.
If anything, AIDD raises the value of TDD because tests become one of the few hard constraints an agent can reliably run against without needing a committee, a meeting, or a philosophical debate about architecture. A failing test is legible to the machine. A vague human worry is not.
That does not mean “AI does TDD for you now.” It means TDD becomes one of the best control surfaces inside an AIDD workflow.
Here is the practical shift:
Without AIDD
- A developer writes the failing test.
- code is written by the same developer.
- the same person decides whether the result is acceptable.
With AIDD
- A human still decides what must be true.
- an agent can draft or extend tests from that intent.
- it can implement against the failing suite.
- the human still reviews whether the tests were meaningful in the first place.
That last line is where teams get sloppy.
Agents are good at satisfying tests. They are not magically good at deciding whether the test encoded the right business constraint. If your team lets AIDD collapse TDD into “the model generated a test so I guess we are safe,” you have kept the ceremony and lost the discipline.
TDD still matters because it answers a very specific question: what proof does this change need before I trust it?
AIDD just gives you a faster pair of hands inside that loop.
What AIDD does to DDD?
This one is less obvious and more important.
DDD gets more valuable in an AI-heavy workflow because agents do better when the codebase has stable language and cleaner boundaries. Microsoft makes this point in a more classical way through its DDD guidance: the domain model should carry the real invariants and the domain layer should not depend on infrastructure noise. That was already good design. In an AIDD workflow it becomes prompt hygiene too.
If your system has weak domain language, agents will improvise.
If your boundaries are muddy, agents will happily cross them.
If your invariants live half in controllers, half in services and half in a tired senior engineer’s head, the model will synthesize that confusion into working-looking code. Which is worse than a clean failure. At least a clean failure argues with you.
So AIDD does not replace DDD. It increases the return on DDD.
A codebase with bounded contexts, clear aggregate rules and predictable naming gives the agent a map. A codebase built from shortcuts gives it folklore.
That is why teams saying “AI makes architecture less important” are reading the situation backwards. AI makes architecture more visible because the machine keeps running into the shape of it.
What AIDD does to BDD?
BDD has always had an image problem.
Too many teams reduce it to Gherkin files nobody enjoys maintaining. Then they conclude BDD was the mistake, when the real mistake was treating a collaboration discipline like a syntax format.
Cucumber’s own docs are refreshingly clear here: BDD is about closing the gap between business people and technical people using concrete examples and it enhances an existing process rather than replacing it.
That idea ages well in AIDD.
Why? Because agents respond unusually well to explicit behavioral examples. “When a logged-out user tries to cancel an order, they must be redirected and the order state must not change” is stronger context than “fix auth edge cases.” One is behavior. The other is a prayer.
So BDD becomes more useful when you have agents in the loop, not less.
It gives the human team a better way to express intent and it gives the agent something more stable than a hand-wavy product sentence. Even if you never write formal Given/When/Then files, the discipline behind BDD matters: behavior first, examples first, ambiguity reduction first.
That discipline is oxygen for AIDD.
What AIDD does to FDD?
FDD tends to get ignored in modern AI discussions, which is funny because agents expose its value almost immediately.
Feature slicing matters more when implementation becomes cheap.
If you hand an agent a giant foggy initiative, it will often respond with giant foggy output: broad changes, weak acceptance boundaries and a diff that technically exists but is hard to merge with confidence. If you hand the agent a sharply scoped feature with visible user value, bounded files and known acceptance criteria, the quality usually jumps.
That is an FDD-shaped lesson.
Feature-driven thinking is not trendy right now, but it pairs well with AIDD because it breaks work into units that are legible to both humans and agents. The more your tasks resemble “build this customer-visible capability with these limits” instead of “go improve the system somehow,” the more usable your AI workflow becomes.
There is also a risk here.
Teams can become so feature-hungry with AIDD that they skip the design pressure older FDD expected. They let agents sprint from feature to feature while leaving cross-feature consistency for later. Later, of course, is where the pain invoice lives.
So yes, AIDD can make FDD faster. It can also make feature fragmentation worse if you confuse throughput with coherence.
The better model is simple: let each method keep its job
This is the part I wish more teams would say out loud.
Do not ask one methodology to do five jobs.
A practical stack looks more like this:
- Use DDD to define the language, boundaries and invariants.
- Use FDD to slice work into customer-valued increments.
- Use BDD to express behavior in concrete examples the team can argue about early.
- Use TDD to create executable proof that the implementation is correct.
- Use AIDD to orchestrate how agents consume that context, produce drafts, run verification and return evidence for review.
That sequence is not theoretical. It is operational, and teams feel the difference immediately when they skip straight to AIDD and end up asking the agent to invent what DDD, BDD, TDD, or feature slicing should have already made explicit. Sometimes it guesses well. Other times you spend the afternoon reviewing very polished nonsense that should never have needed review in the first place, which is not an AI problem so much as an ownership problem wearing an AI badge.
A quick before-and-after example
Here is the kind of instruction that creates chaos in an agent-heavy backend team:
Before
“Build order cancellation with refunds.”
The trap shows up the second five obvious questions appear.
Can a partially shipped order be canceled?
Is refund timing synchronous or queued?
What if the payment gateway succeeds but inventory release fails?
What is the domain rule around cancellation windows?
What test proves we did not create a double refund?
Now look at the same task after the older DD disciplines do their jobs:
After
- DDD defines the aggregate rules for Order, Payment and Refund.
- FDD slices the work into “merchant-initiated cancellation before fulfillment.”
- BDD gives concrete examples for full refund, already-shipped rejection and duplicate retry behavior.
- TDD turns the critical invariants into executable tests.
- AIDD uses that package of context to let the agent plan, implement, run the suite and return logs plus diffs for review.
That is a better relationship.
The agent is still doing real work. A lot of it. But it is no longer guessing the shape of the problem from a single sentence and your misplaced confidence.
So what should AIDD actually drive?
Not your truth.
Not your domain.
Not your acceptance criteria.
Not your architecture, at least not alone.
What AIDD should drive is the execution loop around those things:
- how context gets assembled
- how plans get proposed
- how implementation gets delegated
- how verification gets run
- how evidence gets returned to a human
- how revisions get pushed back through the loop
That is why I think AIDD is real. It is also why I think people keep placing it in the wrong slot.
If you put it next to TDD and ask whether one replaces the other, you will get bad answers. If you put it above the older disciplines and ask how it consumes their artifacts, the whole conversation gets cleaner very fast.
That is the framing I would use on a real team:
DDD tells us what the system means.
BDD tells us how it should behave.
TDD tells us what must be proven.
FDD tells us how to slice the work.
AIDD tells us how humans and agents move all of that through delivery without losing the plot.
That is a different layer.
And once you see that, the acronym stops being mysterious.


