Many contemporary arguments about AI in software development are not arguments at all. They are two individuals using the same term to refer to entirely different concepts and who talk past each other for an hour without realizing it.
Say "AI coding" and one thinks of autocomplete filling in the line that follows. One reads "AI programming", with the image depicting an autonomous agent constructing a full feature from some description. Neither is wrong about their meaning, but the conversation goes nowhere because there is no common metric underneath it.
A no-nonsense maturity model corrects this faster than any policy template.
The ladder
So here goes the scale to describe where a developer (or one among my modules) is actually at.
- L0, Spicy autocomplete. The tool goes on to propose the next line while you type. First-generation Copilot. Most of the market still exist.
- L1, Coding intern. The tasks that the AI handles are discrete and bounded. Before accepting any line generated, a human reads the line and fuels it.
- L2, Junior developer. The AI can make precise multi-file changes and efficiently navigate the codebase. The result before merge is still read by a human.
- L3, Developer as manager. The AI is aided/setup/reviewed at the pull request/feature level, not line-by-line like an engineer would.
- L4, Developer as product manager. The engineer specifies, the agent builds, and the evaluation is based on outcome not implementation.
- L5, Dark factory. Humanless way from specification to working software. You only intervene when something is broken.
- L6, Spec-thinker. The developer actually operates at the level of the business problem. Specifications outlast model generations, and code becomes an output instead of an input.
The ladder can be read in one motion: further away from code, but closer to intent.
Why naming the levels matters
The scale exists to have a difficult conversation easy and not purposive ranking of the members. No one is at L4 because he or she is "better".
With a common scale, you can make some definitive statements: working at L2 with this module and it stays there because it's safety-critical while that internal tool is jumping to L4 in next sprint. Similar terms, new positioning, and no disputing who will be left behind. The argument that used to require an hour of discussion is reduced to a thirty-second agreement.
Also, it provides a common point of reference for teams across different locations or even stacks. Cross-team discussion is about real placement, not about defining terms afresh every time when everyone uses the same ladder.
Two things to keep in mind
There are two simple pitfalls to try to avoid when using a model like this.
Movement needs to be natural and intentional. The lure of having a ladder is getting everyone to ascend it on timed intervals - all teams must achieve L4 by X quarter. It imposes autonomy on code that is not yet ready for it and shatters the trust you are trying to cultivate. Change must happen module by module, when all are prepared and have skin in the game, not as a top-down rollout with a deadline.
Higher is not automatically better. This is the one people miss most of all. How you hit that balance is entirely dependent upon the stakes in your piece of code. Thus, nothing is relegated to a prototype that runs at L5 - a regulated, customer-critical module sits safely on the L2. It is correctly placed. It would not be progress, it would be a mistake to push it higher
Where to place your own team
Today, where would you rank most of your team for performing and where is your number one module?













