You're reading a random programmers blog about software - go back to mainpage


Vibe Coding and the Future of Software Engineering

Written by: alexp on February 19, 2025


Vibe coding (or vibeware) is making rounds on X now. To the best of my knowledge Andrej Karpathy started the “meme” in this X entry. I find it well written and hilarious and it seems to have taken off.



"I Accept All" always, I don't read diffs anymore.

l o l

Obviously a meme has been improved:



And then finally, while I’m writing this article, Rick Rubin himself shares this:


Before that though, the reddit post has gone viral where someone built a whole python codebase without knowing python and now AI is having a hard time comprehending the codebase and suggesting solutions and bug fixes.

Reception

Obviously, there’s a significant pushback from this. Seems like programmers are terrified, but not necessarily because of AI potentially taking our jobs. Mostly due to code quality and comprehension concerns and extrapolating that into the future and where does this lead us.

On the other hand, various types of builders, indie hackers, solopreneurs, products managers, marketers, people who I’d call accelerationists (mostly on X platform) are hyper excited about the possibilities and they are fully onboard. There’s no shortage of opinions that senior devs are soon to be visiting the unemployment office en masse. Well, we shall see.

However, I will risk saying that an immediate reaction from someone who works with large scale software for a living is that the future is bright for software engineers either way.

Vibe coding in different contexts

So is Vibe Coding good or bad? Of course - it depends on the context, the purpose and the outcome.

First of all - I don’t think that companies and their engineering departments are willing to just start experimenting with blindly vibe coding and deploying the results to production all of the sudden. This is just not going to happen in mature organisations. TDD, code reviews, continuous integration are all there for a reason and they are not going anywhere. From my experience, no sane organisation is really deploying incomprehensible code to production and I don’t see this changing with AI. On the contrary, I’d expect engineers these days to be extra vigilant and careful during reviews knowing copilot et al. can be used to generate code. It’s really on you, as an engineer, to understand your change, regardless how the code was produced. The industry is definitely experimenting with harnessing AI to deliver code, but in the end, for now at least, the code is overwhelmingly still written by humans and it’s still reviewed by humans as well.

On the other hand, indie hackers, lone programmers, solopreneurs - sure, vibe code all the way to production - who cares? As long as it works I guess. If you’re a solo founder, the risks of doing this are very low. Even if the codebase will escape your comprehension, you can always start from scratch and learn from past mistakes. Next time maybe you’ll take smaller steps, refine the process (although iterative development is an insight that software engineers might have, but it’s probably not something people think about when starting vibe coding as non-programmers - interesting food for thought here as well for further exploration).

Vibe coding by non coders

The problem the aforementioned redditor created is not new either.

I will risk stating that humans have created spaghetti code since the beginning of computing. Not only by amateurs. Actually, probably mostly by professionals.

The result of a failed vibe coded project really isn’t much different than, for example, barely hacking things together with a wordpress installation. Installing shit load of different plugins just to arrive at the conclusion 2 years later that nothing works anymore. Versions get out of date, plugins get abandoned, you can’t upgrade anything any more, etc. Of course Wordpress installation is just an example here, but we’ve seen it in various codebases at some point in our careers as web developers or programmers.

"Junior devs can't code any more"

One more interesting case emerging with vibe coding is junior devs. I don’t have a lot of information here as I rarely interact with people new to the industry these days.

Initial insight emerges though and it’s mostly what you’d expect: New Junior Developers Can’t Actually Code.

That said, I think I need to agree with Gergely Orosz that “new devs can’t code” is a story as old as time. It is not new and most likely every single generation of programmers has been saying this about the upcoming generation of new programmers.

More interesting question is - how will new devs grow and evolve with all the modern tooling in place? Extrapolating this into the future I believe can give us valuable insight into the future of software engineering discipline itself.

Robots are updating our codebase as we speak

Let’s also not forget that we do have a lot of semi-smart automation already predating AI code generation. Dependabot for example updates your dependencies on a daily basis almost with no human intervention. It’s a standard practice these days to have it running on your repos. We are literally letting a robot update our dependencies, merge and deploy the code to production without any human supervision TODAY. This is enabled by having a test suite you’re fairly confident in, a continuous integration pipeline to run said test suite against each change and a continuous deployment pipeline to get it out into the world automatically. Tomorrow’s autonomous code generation capabilities are a step further from this.

Applying Vibe Coding

First of all, let me state that I find it truly amazing that vibe coding can actually work. The fact that you can literally talk to a model, give it an idea you’d like see built and it will give you the code, deployment instructions, explanations of various steps, having a coherent, long lasting conversation about the whole project, decisions, ideas, solutions, further improvements, etc is remarkable. I do feel the AGI.

At the same time it’s easy to dismiss this whole premise as something that will never work in a serious software engineering environment due to already mentioned problems. But we have to agree that AI and AI-driven-software-development are here to stay. That tooling will continue to improve and that it will change the landscape of software production forever in the near future.

It’s already changing all aspects of building software products from marketing, product engineering, operations, delivery and maintenance so it begs a question about what it all means for the future of software engineering as a discipline as it’s practiced in larger and more “mature” organisations?

Products with AI dna

Let’s speculate a bit about some near future product capabilities that might then drive software engineering changes and practices:

Self healing software - similarly to dependabot upgrading dependencies, we might see self adjusting and self healing systems where bugs are automatically detected and triaged. Fixes would be automatically implemented and deployed to production. This would require integration between several systems - error reporting software, observability systems, version control, possibly ticketing systems and company chat systems for notifications and orchestration. Software engineers would be responsible for architecting and maintaining these integrations as well as monitoring the AI agents that would be doing the work.

Prompt Management Systems - with more systems being integrated with LLMs and AI agents, versioning working prompts could become a thing. Tracking changes to prompts, understanding the impact of changes on the codebase, marking sections of the code that were AI generated and tracking their corresponding prompts would be a new spin on the traditional version control systems.

Auto Generated features - imagine an end user requesting a feature via a form or a chatbot and the feature being automatically verified for safety, implemented and deployed to production without or with minimal human intervention. On top of standard tests, security checks, there likely will be specialized AIs for reviewing the suggested changes, security audits, etc. Finally, humans might be signing off on the change before it goes live. Again, software engineers will be needed to drive, implement and maintain these processes.

Conversation Driven Development (aka Vibe Coding Enterprise Edition) - software development might be shifting more into the conversational space about “what” more instead of “how” (think Cucumber and BDD but driven mostly by AI. Specialized software might be needed to bridge the gap between nondeterministic AI output and deterministic code driven by detailed tests and/or formal verification before actual implementation is done by the AI. We’ll need skilled software engineers to conduct the test driven process and create tooling to verify that AI is generating correct code.

Productionizing vibe coded prototypes - surely there will be a period where programmers will be tasked with making vibe coded prototypes production ready. These can be done by non-programmers as part of A/B tests or experiments, validated on some small group and handed over to make it production ready.

More interactive documentation - automatically generating and maintaining documentation that you can talk to and ask questions about. With code and observability in context so that the experience is fully integrated and you can jump around between documentation, code and observability tooling seamlessly to gain insight and understanding about the system you’re analyzing.

Others - likely other “copilot” type of collaboration tools will emerge. AI agents that monitor systems performance and automatically suggest improvements on an ongoing basis. AI agents tracking conversations and technical discussions and suggest opportunities to eliminate waste, gaps or improvements to various processes. AI driven system observability: new tooling will emerge that will improve reaction time and time to recovery in cases of production incidents.

Summary

Currently vibe coding, depending on who you ask, is either an abomination, source of future problems and demise of our own making or a magical, egalitarian, equalizing, democratizing tool that allows people to bring their ideas to life without having to learn to code. As software engineers, whether we like it or not, we will be working with AIs throughout the whole software development lifecycle fairly soon if not already. The vibe coding meme is a hint on where things are headed. It’s a glimpse of the future of software development. It’s our job to imagine and make tools, build solutions, practices and design processes that will allow us to harness the power of AI to build better software products safely and efficiently.

comments powered by Disqus