Maturity levels

How AI development matured

intermediate 16 min read

In 30 seconds

From copying ChatGPT answers to orchestrating agents. The 5 maturity phases and where your workflow fits.

From copying answers to orchestrating agents

Most people using AI in software development are somewhere between “copy the ChatGPT answer” and “orchestrate agents with automated validation.” Looking at what teams actually do day to day, you can identify five distinct phases. They aren’t seniority levels or a linear ladder. A senior dev might use Phase 2 for simple work and Phase 5 for complex projects. A PM can operate mostly in Phase 1 and still be highly effective.

The value of this map isn’t grading yourself. It’s understanding what each phase offers, where it breaks, and when it makes sense to move on.

Why this matters

Two common mistakes:

Staying stuck in Phase 1 by inertia. Copy-paste chat works well enough, so you never change. The cost is that you spend far more time on tasks that could be delegated.

Jumping to Phase 5 out of anxiety. You read about autonomous agents, harness engineering, and MCP servers, and suddenly want all of it in a simple CRUD project. The extra complexity doesn’t pay for itself.

The phase map helps avoid both. It shows what each phase solves and where forcing the next phase makes no sense.

Phase 1: Ask

What it is

You open an AI chat, ask questions, copy the answer, and paste it into your work. It’s the natural entry point, no workflow change required. AI works like a better search engine: you ask, it answers, you decide what to do.

Where it works

  • Quick questions about APIs, syntax, and concepts
  • Simple snippets you’ll adapt
  • Exploring ideas before implementation

Where it breaks

  • Copying code without understanding it. The model generates plausible code, not guaranteed-correct code.
  • No project context. The chat doesn’t know your types, conventions, or architecture.

What the next phase solves

The next phase brings AI into the editor, removing copy-paste and adding automatic code context.

Phase 2: Autocomplete

What it is

You install an AI extension or use an AI IDE, and it suggests code while you type. It appeared because copy-paste between chat and editor is slow and loses context. With access to the open file, AI suggests code that already respects imports, types, and local patterns.

Where it works

  • Completing functions that follow clear patterns
  • Writing unit tests and generating boilerplate
  • Speeding up repetitive code

Where it breaks

  • Automatic acceptance. The number one risk is accepting everything without reading.
  • Limited context. Autocomplete sees the current file and maybe nearby files, not the whole business domain.

What the next phase solves

The next phase stops controlling every line and asks AI to generate larger blocks from natural language.

Phase 3: Vibe Coding

What it is

You describe what you want in natural language and AI generates whole blocks of code. The term comes from Andrej Karpathy describing programming guided by the “vibe” of what you want while delegating actual typing to the model. Autocomplete accelerates typing, but you still need to know what to type. Vibe coding is for when you know the outcome but don’t need to handcraft every detail.

Where it works

  • Quick prototypes that won’t go to production
  • MVPs where speed matters more than quality
  • Exploring approaches or learning by reading generated code

Where it breaks

  • No spec, no control. If you only describe the vibe and accept the result, you can’t guarantee the code does what it should.
  • Instant technical debt. Generated code may work but lack types, tests, error handling, and maintainable structure.

What the next phase solves

The next phase replaces vague description with a clear spec: not “do this for me,” but “implement according to this spec.”

Phase 4: Spec-Driven Development

What it is

You write a specification before asking AI to implement: endpoints, types, constraints, expected behavior, edge cases. The agent implements against the spec, and output is validated against it, not a vague feeling. It appeared because vibe coding doesn’t scale: real complexity needs more than “make an auth service.” The key shift is that specs used to be documents people read. Now a coding agent can execute from them.

Where it works

  • Features with real complexity and need for predictability
  • Teams where multiple people work in the same module
  • QA generating test scenarios from specs

Where it breaks

  • Over-engineering the spec. A three-page spec for a typo isn’t maturity. It’s waste.
  • Spec without validation. Sending a spec to an agent and never checking output is vibe coding with extra steps.

What the next phase solves

The next phase automates validation and orchestration so the human doesn’t manually run every check.

Phase 5: Harness Engineering

What it is

You build a full work system around the agent: persistent instructions, rules files, configured tools, automated validation, and clear acceptance criteria. The agent operates inside that system, and the system catches issues without constant supervision. In Phase 4 you validate manually; here validation is automated. It appeared because agents generate output faster than humans can review. Without automation, review becomes the bottleneck.

Where it works

  • Large projects with many modules and established conventions
  • Teams with tests, lint, and CI already in place
  • Large refactors touching many files

Where it breaks

  • Premature complexity. If the project has no tests or lint, building a harness is putting the roof on before the walls.
  • Overtrusting automation. Automated checks reduce review work. They don’t replace human judgment.

What changes here

In Phase 1, you ask for an answer. In Phase 5, you build the system that produces validated answers. The mindset changes from “AI user” to “engineer of AI work systems.” This isn’t for every project, but at scale it’s the difference between using AI and being AI-native.

Real examples

Scenario 1: Two-week MVP

Best fit: Phase 3, Vibe Coding. Speed matters more than quality. Generate code, test manually, iterate fast. If the idea works, refactor for production later.

Scenario 2: Legacy refactor

Best fit: Phase 5, Harness Engineering. Configure rules, connect tests and lint as automated validation, and let the agent work module by module.

Scenario 3: Production maintenance

Best fit: Phase 4 for features, Phase 2 for quick fixes. New features get lightweight specs. Small fixes are better handled with autocomplete and direct review.

The point: the right phase depends on context, not ambition.

Where this breaks

  • Linear thinking. You don’t need to move from Phase 2 to 3 to 4 forever. You can use different phases for different tasks.

  • Over-engineering simple work. A full harness for a 50-line script isn’t maturity. The phase should match complexity.

  • Confusing phase with identity. You’re not a “Phase 5 developer.” You’re someone who picks the right phase for the task.

Interactive block

Phase 1: Ask

You open an AI chat and ask questions. You copy the answer into your work. AI works like a better search engine.

Where it works
  • Quick questions about APIs and syntax
  • Exploring ideas before implementation
  • PM summarizing a technical document
Where it breaks
  • Copying code without understanding it
  • No project context means generic answers
  • No iteration: ask, copy, leave
What the next phase solves: Bring AI into the editor, removing copy-paste and adding automatic code context.

Takeaway

  • Identify which phase you use today for each type of task. It’s probably not the same for everything
  • Next time you start a task, ask “which phase fits here?” instead of defaulting to the usual approach
  • Validation is mandatory in every phase. What changes is whether you validate manually or the system does it
  • Real maturity is knowing when to drop back to a simpler phase

Want to go deeper?

Videos

Articles

Docs

Next session In practice

How to operate AI-native in practice

Keep going