The bottleneck in software creation is no longer coding speed. It’s the human ability to DESCRIBE and DESIGN high-value systems.
AI changed the constraint. Most teams haven’t updated their mental model.
Three Types of AI Adopters
I’ve seen organizations fall into three camps:
- Reckless — Vibe code. No discipline. Ship fast and pray. Every engineer is a solo act with a chatbot, and nobody knows what’s being generated or why.
- Fearful — Avoid AI entirely. Wait it out. Treat it as hype that will pass.
- Deliberate — Adopt with guardrails. Move faster because of discipline, not despite it.
This post is for the third group. If you’re an engineering leader trying to figure out how to help your team adopt AI with confidence — not recklessness, not paralysis — this is what I’ve learned building real software this way.
The Partnership
Here’s the uncomfortable truth about building with AI:
- Without the human: The AI cannot build anything meaningful. It doesn’t have vision, intent, or empathy. It can’t design a cohesive system that serves real people. That is and should remain our strength.
- Without the AI: I wouldn’t have even tried. The sheer scale of building a modern, secure, accessible platform alone is too much for one person.
Together, quality doesn’t have to be a trade-off for speed. But only if you treat AI as a system to be guided, not a magic wand to be waved.
Consider the traditional SDLC: your developers ship faster than QA can verify. Test automation helps, but realistically, test engineer backlogs grow faster than they shrink — you either invest heavily in specifying every detail upfront, or testing becomes the bottleneck. With AI in the loop, that constraint changes. When verification is built into the workflow — role separation, automated checks, review gates — the testing bottleneck dissolves. The human focuses on what to verify, not on keeping up.
The 4-Level Competency Model
Moving beyond “how to prompt better” to actually engineering with AI requires a progression of skills. Nate B Jones laid out a useful skill tree that I think captures this well — four levels of competency for working with probabilistic systems:
Level 1: Conditioning (The Inputs)
The model will happily fill ambiguity with plausible nonsense. Your job is to steer.
- Intent Specification — Tight problem contracts. Clear audience, purpose, constraints, definitions. In a deterministic system, ambiguous requirements cause bugs. In a probabilistic system, ambiguity is gasoline on the fire.
- Context Engineering — Managing what goes into the context window. What’s summarized, what’s quoted verbatim, what’s trusted, what’s excluded. This is the new I/O layer.
- Constraint Design — Output schemas, rubrics, required citations, tool access, token budgets, stop conditions. A probabilistic system without constraints is a slot machine. With constraints, it becomes a reliable component.
Level 2: Safe Autonomy (The Trust Layer)
This is the difference between “I used AI” and “I know how to operate an AI system responsibly.”
- Verification Design — How does truth enter the loop? Some verification is deterministic (schema validation, passing tests). Some is procedural (human review, adversarial prompting). Verification isn’t optional — it replaces the guarantee you used to get from authored logic.
- Permissions — Least-privilege access. The model is not your security boundary. If agents can email customers, move money, merge code — treat permissioning the way you’d treat any production system. Allow lists, scoped tools, approval steps, audit trails.
- Provenance — Chain of custody. Every claim needs a traceable source. In the deterministic world, you could trace causality through the code. In the probabilistic world, you design for auditability from day one.
Level 3: Workflows (The Engine)
This is where you stop treating the model like a chatbot and start treating it as a component in a pipeline.
- Decomposition — Break complex tasks into pipeline steps. Build intermediate artifacts. Create checkpoints. Keep failures local, not global. Make the workflow runnable by someone else, not just you.
- Observability — You can’t inspect the model’s internal reasoning. Compensate by making the surrounding system legible: tool call traces, inputs used, intermediate outputs, validations passed or failed, timing, cost.
Level 4: Compounding (The Growth)
This is where leverage becomes durable.
- Eval Harnesses — Without eval, you’re improvising faster. Golden sets, regression tests, scorecards, thresholds. You need a harness so you can change prompts, models, and tools without playing Russian roulette.
- Feedback Loops — The highest leverage: draft → critique → revise → recheck → ship. The loop makes the generator less risky because errors are caught before final output.
- Drift Management — Models change, data changes, teams change. Versioning, auditability, governance. Treat this like production infrastructure even if you’re not used to thinking that way.
The 4D Lifecycle: Where Competencies Meet the Work
These competency levels aren’t abstract — they map to how work actually flows. I explored this lifecycle before AI entered my workflow, and it turns out the framework only becomes more relevant when AI is in the loop.
| Phase | Competencies | The Human Action |
|---|---|---|
| Describe | Conditioning (L1) | Define the problem contract. You can’t describe the dream effectively without rigorous conditioning. |
| Design | Workflows (L3) + Safe Autonomy (L2) | Architect the pipeline. Design the safety net. You’re building the factory floor where agents will work. |
| Decide | Safe Autonomy (L2) | The human Go/No-Go gate. “Do I have enough verification in place to trust this?” |
| Deliver | Compounding (L4) | Validate output against the description. Ensure the system improves over time, not just this once. |
The key insight: humans stay at the decision points. AI handles generation. Humans handle judgment. The lifecycle ensures those boundaries don’t blur.
What This Looks Like in Practice
Frameworks are easy to sketch. Shipping software is where they prove themselves.
I built aix to make these principles operational — an open-source methodology framework for AI-assisted development. Here’s what the competency model looks like when it’s running:
Spec-driven workflows with specialized roles
An analyst explores the codebase and writes a detailed spec. A coder implements against that spec. A reviewer checks with fresh eyes. A tester verifies. Each role prevents the others’ blind spots. The same mind that writes code is blind to its flaws — role separation fixes that.
Approval gates everywhere
Users see the spec before code is written. Users review code before it’s committed. No irreversible action happens without a human decision. If something goes wrong, the decision point is clear.
Progressive adoption
Four tiers — Seed, Sprout, Grow, Scale. Start with three roles and one workflow. Add complexity only when your project needs it. Teams adopt at their comfort level. This is critical for cautious organizations: you don’t have to go all-in to get value.
Tool-agnostic fundamentals
aix works across Claude Code, Kiro, OpenCode, and Factory. The specific tool doesn’t matter. What matters is understanding roles, workflows, specs, and approval gates. These fundamentals transfer. Chasing the next “10x AI coding” tool is a trap — the landscape rotates too fast. Portability over novelty.
Using this methodology, I built a production-ready platform — a multi-app ecosystem with professional-grade task boards, adaptive scheduling, and an AI-first API — in under one month. Not as a speed flex, but as proof that quality and velocity aren’t opposites when the human architect focuses on the “why” and “what.”
When AI Output Disappoints
It will. When it does, it’s almost always one of three things:
- Ambiguous specs — The most common cause by far. Investing in Level 1 (Conditioning) pays dividends downstream. If the AI built the wrong thing, the spec was probably unclear.
- Model capability mismatch — Weaker models struggle with complex tasks or produce unreliable output even with complete specs. Match model to task complexity. Not every task needs the frontier model; some tasks need nothing less.
- Context compaction — In long sessions, AI compresses context and starts skipping steps (TDD, review loops, docs). Shorter sessions and proactive reflection help. This is a drift problem (L4) that manifests as a quality problem.
Notice that “AI is bad” isn’t on the list. When the inputs are right, the constraints are clear, and the workflow has verification — the output is remarkably good. The failure is almost always upstream.
The Real Shift
This isn’t “AI will replace engineers.” It isn’t “AI is just autocomplete.” The real shift:
Engineering leadership becomes more valuable, not less.
Your ability to describe vision, design systems, make governance decisions, and maintain authority over what ships — that’s the bottleneck now. AI amplified execution. It didn’t replace judgment.
The organizations that figure this out — that invest in the skill tree deliberately, that build guardrails which accelerate instead of constrain, that treat AI adoption as an engineering discipline rather than a tool rollout — those are the ones that will compound their advantage.
The ones clinging to “technical vs non-technical” hierarchies, or waiting for AI to stabilize before engaging, or letting every engineer vibe-code in isolation — they won’t.
The choice is yours. But the skill tree is the same for everyone.
Credits:
- The 4-level competency model (Conditioning, Safe Autonomy, Workflows, Compounding) is from Nate B Jones
- The 4D Lifecycle (Describe → Design → Decide → Deliver) and the mapping of competencies to lifecycle phases — originally explored here
- The practical implementation lives in aix