AI in engineering companies · Coding agents
Vibe coding is just another level of abstraction
When I started as an engineer, I wrote real-time software in assembler for avionics. Each instruction mapped almost directly to what the processor did. Then higher-level languages took over, then operating systems and libraries, then frameworks, then cloud platforms. At every step, someone announced that the new level of abstraction would make engineers unnecessary. At every step, the opposite happened: the engineers who understood what was underneath the abstraction became more productive, and more valuable, than ever.
"Vibe coding", describing what you want in plain language and letting AI write the code, is the latest level of abstraction. I think it is the most powerful one yet. And I think it follows exactly the same rule as every level before it.
This is the first article in a series on coding agents: how to exploit them, where they are strong and weak, how to manage their cost, how to keep code private, and why they need experienced engineers. It builds on Building production software with AI coding agents, in the agents series, where I described how I led the build of a production connected vehicle platform with AI.
Every abstraction hides something
A compiler hides the machine code. A framework hides the plumbing. A cloud platform hides the servers. That is the point of abstraction: it lets you work at the level of the problem rather than the level of the mechanism.
But every abstraction leaks. When the compiled code is too slow, someone has to understand what the compiler produced. When the framework behaves strangely under load, someone has to understand what it is doing underneath. When the cloud service fails in an unexpected way, someone has to understand the architecture it is running on.
The engineers who can reach below the abstraction when it leaks are the ones who make systems work in the real world. That has been true for fifty years.
Natural language is the highest abstraction yet
Coding agents let you work at the level of intent. Instead of writing a function, you describe what it should do. Instead of writing a module, you describe its responsibilities and constraints. The agent produces the code, runs it, tests it and iterates.
That is an extraordinary change. It removes much of the effort between deciding what a system should do and having working code that does it. In an earlier article I called that gap the translation layer, and described how removing it let me build, alone, a platform that would once have needed a team.
But it hides more than any previous abstraction. A compiler is deterministic: the same input produces the same output, and the output follows rules you can learn. A coding agent is not. It produces plausible code, shaped by everything it has learned, which may or may not be correct, secure or coherent with the rest of the system. The abstraction is higher, and the leaks are larger.
Who benefits most
This is the uncomfortable part, and it is the thread that runs through this whole series.
A coding agent amplifies the person using it. An experienced engineer brings a mental model of how systems behave: how data flows, where failures occur, what happens under load, where the security boundaries are, what will be hard to maintain. With that model, they can direct the agent precisely, recognise when its output is wrong, and reach below the abstraction when it leaks. For that engineer, the agent removes the typing and leaves the thinking.
Someone without that model can produce a great deal of code that appears to work. They cannot tell whether it is correct, secure or maintainable, because they do not know what to look for. The agent removes the typing and the thinking, and nobody notices the thinking is missing until the system fails.
I cover this in Coding agents need experienced engineers, later in this series. The short version is that vibe coding is not a replacement for systems knowledge. It is the most powerful tool yet for people who have it.
Where the value is for engineering companies
For an engineering company, the opportunity is to put this abstraction in the hands of its most experienced people and let them work at the level of the system rather than the level of the line of code.
That means:
- architects who can implement their designs directly, without the losses of handing them over
- senior engineers who can take on work in unfamiliar languages or platforms, guided by principles they already understand
- legacy code that can finally be understood, documented, tested and modernised
- test coverage and documentation that were never quite affordable becoming routine
It also means new costs and risks to manage: the cost of the computing the agents consume, the security of the code they write, the privacy of the code they read, and the discipline needed to keep the result coherent. Each has its own article in this series.
The series
- Vibe coding is just another level of abstraction (this article)
- Coding agents: strengths, weaknesses and opportunities
- Coding agents need experienced engineers
- The security of AI-written code
- What tokens are, and why they matter
- Managing a token budget
- Local, cloud and frontier: getting the most from your budget
- Keeping your code local and private
Four things worth taking seriously
For engineering leaders: treat coding agents as a new level of abstraction, not a replacement for engineering. The same rule applies as always: those who understand the level below benefit most.
For senior engineers: this is the most powerful tool you have been given in decades. Your systems knowledge is what makes it powerful.
For anyone early in their career: use coding agents to learn what is underneath, not to avoid learning it.
For everyone: the abstraction is higher and the leaks are larger. Someone still needs to understand what happens when it leaks.
I would be interested to hear how your organisation thinks about coding agents: as a new tool for engineers, or as a replacement for them.