Proposing a Taxonomy of Agentic Engineering

The Problem: We’re Not Talking About the Same Thing
When someone says “you can vibe code anything,” and someone else says “vibe coding produces unmaintainable slop,” they’re both right—because they’re describing different things.
This isn’t a post about that discourse. It’s about giving you—an individual developer—a vocabulary to decide where you should operate on this spectrum, project by project, task by task.
The Taxonomy
| Label | You Are… | Good For |
|---|---|---|
| Vibe coding | Never looking at the code. You may not even know the language. Pure prompting and vibes. | Throwaway prototypes, things you truly don’t care about, tasks that would shock you if an agent screwed up |
| Vibe engineering | Not reading code, but heavily invested in prompting, tooling, verification, architecture | Things you care about but not enough to read every line, or where you don’t know the language |
| Agentic engineering | Writing some code yourself, reviewing critical parts, owning all architecture decisions | When it really matters, when there’s user data, when you want to maximize quality with all available effort |
| Human-driven development | Using AI only for tab-complete, never prompting for code | When you want to code, when you deeply distrust AI in this domain |
| Hand coding | Everything before 2022 | When you need perfect, when time doesn’t matter, when you need to prove you’ve still got it |
How to Choose Your Level
The core principle: match your effort to how much you care about the outcome.
Factors That Push You Toward Pure Vibes
- High verifiability — you can easily check if it works
- Low cost of mistakes — easy to fix or throw away
- Common patterns — the AI has seen this a million times
Factors That Push You Toward Hand Coding
- High cost of mistakes — security, user data, money
- Critical success — failure is not an option
- Perfection matters — “great” isn’t good enough, you need “perfect”
Factors That Don’t Correlate Simply
- Complexity — both hand-time and AI-time scale with complexity
- Your expertise — cuts both ways (better prompts vs. knowing what slop looks like)
The Grokking Principle
Here’s the real insight: For most things you care about, the sweet spot is minimizing human-in-the-loop while fully grokking what you’re building.
To grok something is to hold it in your mind and reason about all its aspects. There are levels:
- Goal — Do you understand what you’re trying to do and what makes it hard?
- Architecture — Do you understand how the pieces fit together?
- Tools — Do you know the languages/libraries and why they were chosen?
- Code — Could you walk someone through every file and explain the decisions?
These are in descending order of importance. You can vibe code without grokking architecture, but you can’t build something good without reasoning about tradeoffs. You can ship without grokking your tools, but the hard parts become much harder.
The danger zone: slowly losing your grip on a project as it grows more complex and AI-driven. If you catch yourself unable to explain why something works, you’ve stopped grokking.
The Secret Third Thing: Style Convergence
How much does matching existing code style matter?
This requires upfront hand-work to establish, but then it’s pure vibes. Every time you generate slop, do the human work of identifying the generalizable principle it violated—then add that to AGENTS.md. With enough iterations, models can match any code style.
TL;DR
- “Vibe coding” means different things to different people—here’s a taxonomy
- Choose your level based on how much you care about the outcome
- The biggest predictor of success is whether you grok what you’re building
- You can vibe hard as long as you maintain understanding