From Vibe Coding to Agentic Engineering
Finding the balance in AI-assisted development.
The term "vibe coding" that's recently exploded the techie-Web was originally coined by Andrej Karpathy in 2025, and it is frequently, deeply, misunderstood.
Karpathy described it as a state where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It was made possible, he noted, because LLM tools were getting so good that you could simply talk to them and have code generated for you—even for the simplest or "dumbest" of ideas.
This concept is super interesting and, in some ways, an accurate reflection of how the technology has developed. But as anyone who has spent time playing around with vibe coding knows: no matter how smart the tool is, you still need a human driving the work, lest you end up with unintelligible slop.
If you spend too much time vibe coding and not enough time understanding the logic (and ideally, the actual code) behind your problems, things will inevitably break down.
The Limits of Pure "Vibes"
The tech blogger Simon Willison highlighted this issue early on, expressing concern that the term "vibe coding" was escaping its original intent. He pointed out that vibe coding is not the same thing as writing production code with the help of LLMs.
In all the excitement surrounding the trend, many people missed a crucial line from Karpathy's original post: he noted that such projects were "not too bad for throwaway weekend projects, but still quite amusing."
The real value of these LLM tools is that they open up a new canvas for expression. They provide a new level of freedom for folks who already have some degree of technical skill. It is vital to remember that the job of a software developer is not just to churn out code. The job is to:
- Demonstrate that projects actually work.
- Build refinements into the software.
- Test against user expectations and edge cases.
- Pick the correct logical solution from dozens of possible options for a given job.
Most importantly, any professional software designer or engineer will tell you that you actually need to be able to read the code in question.
This is exactly why I've spent time developing a rudimentary understanding of languages I previously didn't know, like Python. Back in the day, I had some grounding in HTML and CSS, and a little bit of JavaScript. Python was something I had never dived into until LLMs came along. Its extraordinarily structured format quickly proved itself a favorite for those working with AI, simply because it makes it much easier to see when and where something is going wrong.
The Shift to Agentic Engineering
Just this month, Simon Willison highlighted a new term to differentiate professional AI-assisted development from the casual nature of vibe coding: Agentic Engineering.
Willison defines agentic engineering as the process of building software using coding agents to generate and execute code, allowing them to test and iterate independently, while maintaining strict engineering oversight.
This shift is leading to the development of Agentic Engineering Patterns—specific coding practices designed to get the best, most reliable results out of this new era of coding agents.
A Philosophy for AI-Assisted Coding
What this highlights most of all is that these new tools are absolutely incredible, and they scale perfectly to the user's experience level:
- For novices: It allows them to explore the limits of their imagination, test their skills, and actively improve.
- For mid-level engineers: It enables them to tackle solo projects that would otherwise require a full support team.
- For exceptional programmers: It offers a chance to simply have fun and play around with code in ways that might not be accessible within the strict confines of their daily work.
As a relatively novice coder myself, I find the ability to work with agentic systems and LLMs to be a fantastic release valve for problem-solving and imagineering. But I strongly stress that the most fundamental thing I hold to when working with these tools is logical continuity and a philosophical approach geared toward high UX (User Experience). I also make sure that I go through the code and dig into it, using it as a tool to help me understand what I might not yet know.
Stepping into this world requires adhering to a few core tenets of programming:
- Protect the Workflow: Understand how to ensure that your AI-generated changes don't disrupt the existing workflow.
- Build for the Future: Understand how to structure code so that it is modular, extensible, and easy to build upon later.
- Keep it Readable: Force the LLM to build code that is, as frequently as possible, at a level you can actually read and understand.
Even if you can't completely debug a complex issue on your own, you must be able to see why an agent debugged something, or understand why a process was structured the way it was. Holding to this standard should be the bare minimum for anyone stepping into the world of vibe coding, if that code is going to enter any sort of production environment.
Over to You
How about you? Have you explored the world of vibe coding yourself? Do the terms "agentic engineering" and "agentic engineering patterns" resonate with the way you are currently building software?
Let me know in the comments, I'd love to chat.
I’m Odin Halvorson, a librarian, life coach, and fiction author. If you like my work and want to support what we do here at Unenlightened Generalists, please consider becoming a paid subscriber to our newsletter for as little as $2.50 a month!
Support us in other ways:
- Start writing and reading with the Supernote, and support me at the same time!
- Like audiobooks? Hate DRM? Use this affiliate link to sign up for Libro.fm, where you actually own the books you buy!
- Want your own Ghost newsletter? Check out MagicPages for the cheapest hosting rates via my affiliate link (they even offer lifetime hosting plans!)
Thanks for your support!