Humans with AI versus AI agents directed by humans

Why AI-assisted Coding (not Vibe Coding) is the Future

TLDR;

AI is having a big impact on the software development industry. In this post I share some of my personal thoughts about AI-assisted coding, pure "vibe coding", and the future of programming in general.

Where We Are Today

Conversations about AI are taking place in every corner of the workplace: from law firms, to call centers, to my very own field of software development. And amidst all the excitement and chaos, everyone's trying to figure out what this new technology means for their career and for the future of their profession as a whole. For software development, having read a bunch of different perspectives over the last several months, it seems to me like most people's views are some blend of the following three outlooks:

  1. AI coding is a fad and is mostly overrated in terms of the productivity gains it can offer
  2. AI-assisted coding is awesome and will enable professional software developers to be 2x, 5x or even 10x more productive than before
  3. Most future development will be done by "vibe coding" with professional developers evolving to become code reviewers, expert debuggers, or (gulp) displaced altogether

I'll be the first to admit that it can be very tricky to figure out where things are headed right now. It feels like we're currently in the fog of war with everyone having their own conflicting opinions. However I do think that we've seen enough so far, and that we understand a bit more about how these LLMs work now, to make some educated guesses about what the future of coding may look like (at least in the near-term).

Why AI Coding is Definitely *Not* a Fad

Let's start with the most skeptical group first. Granted, it seems like the number of people today who totally dismiss AI as a fad is getting smaller by the day. It made sense that a higher degree of skepticism was warranted (and even healthy) in the earlier days when it was mainly ChatGPT being used as a standalone chatbot, and before more programming-focused tools like GitHub Copilot, Cursor, and Claude Code hit the scene.

But fast-forward to August 2025 and we now have larger models, tighter integrations in the form of GitHub Copilot or Claude Code directly into our code editor, as well as MCP (Model Context Protocol) to help pull more context from your favourite SaaS platforms. Personally I use VSCode as my primary code editor, and it's become quite handy to enable Agent mode to help with multi-file edits and developing other simple features.

LLM talking to multiple MCP servers to grab additional context
LLM talking to multiple MCP servers to grab additional context

Does it get everything right? Of course not. Do I sometimes have to erase all of the code that it produces to write things myself? For sure. But lately I've been quite impressed with how often these models can get you in the general ballpark, even for more complex tasks, if you give them enough context. And in my experience it's much quicker to make small tweaks to code that is already 75% there than to have manually typed it all out line by line.

At a bare minimum, generating boilerplate, writing routine test cases, creating little helper functions, and other small repetitive tasks can now largely be delegated away. Given where we are already at today, and with the pace of the development that's taking place, it's hard not to be bullish on AI-assisted coding in the future. It's here to stay, and won't be going anywhere anytime soon.

AI-assisted Coding versus "Vibe Coding"

As this AI revolution has taken off, there's also a bunch of new terminology being used all over social media. To make things even more confusing these terms are often used differently by different people, as well as being used across different contexts. One of these terms is "vibe coding".

It turns out the term was originally coined by Andrej Karpathy, a computer scientist who previously worked at OpenAI, in a post he made on X in February 2025.

“There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like "decrease the padding on the sidebar by half" because I'm too lazy to find it. I "Accept All" always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I'd have to really read through it for a while. Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. I'm building a project or webapp, but it's not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.”

— Andrej Karpathy

On social media I've seen this term used primarily in two different ways. On the one hand "vibe coding" is being used to describe entire apps created from scratch without ever interacting, understanding or even seeing any of the underlying code. Other times it's used to describe the more traditional software development process, where a developer uses these models within their coding editor to accelerate their workflow, by using human language to automate boilerplate and quickly step over tedious tasks.

AI-assisted coding versus vibe coding prompt example
AI-assisted coding versus vibe coding prompt example

As a professional developer myself, I'm probably a bit biased and also naturally a bit skeptical when it comes to the first category of these "vibe coded" apps. There's something fundamentally unsettling about creating apps which may look functional and pretty on the outside, but are essentially black boxes on the inside. How do you know if the code is clean? How do you know if your app is secure? How do you know that the model didn't add some random dormant code that says "On the 100,000th visit to this app, permanently clear the database and all files"?

Okay that last part probably isn't very likely (...hopefully 😅). But the point is that if you don't understand the generated code, then how would you really know?

The Dangers of the "Black Box" Approach to Vibe Coding

To be fair, I think for small prototypes or fun weekend projects, even the "black box" approach to vibe coding has some value. Software development should *not* be about gatekeeping, and I think that any technology which allows more people to participate in the creation process is generally a force for good. For small apps that run on your own computer, or low-risk apps that run internally for your company, I'd say give it a shot. Looks good? Great, maybe get a quick second pair of eyes from a few of your developer colleagues. But for larger client-facing apps or trying to vibe code your own production-level SaaS app? This is where "not knowing what you don't know" can quickly become very dangerous.

Just ask any professional software developer how often they reject the output of a model for being:

  • Flat out wrong
  • Unnecessarily repetitive or verbose
  • Not scalable
  • Potential security risk
  • Stylistically inconsistent with the rest of the codebase
  • Etc...

Perhaps it'll be less and less over time. But for most developers, it's definitely not zero (or even close). At least not yet.

For me personally it also comes down to this issue of trust. I've always been someone who feels a great weight of responsibility whenever others place their trust in me. Whether it's a client trusting me with their hard earned dollars for a project, or customers entrusting their data to a SaaS product I'm working on, it's important to have confidence that what you're delivering is reliable and secure. And at least for me, that means having a solid understanding of how the technical pieces work and fit together.

Final Thoughts

All in all, I'm optimistic on the use of AI to help write working software more quickly. The key is for us always be aware of the limits of the tools we're using and of our own knowledge gaps. Personally, I'm far more bullish on AI being used within the software development process ("AI-assisted coding") versus AI abstracting away coding altogether (pure "vibe coding"). But of course I'm probably a bit biased in this respect. Only time will tell.