Vibe Coding and why the world still needs software engineers

Vibe Coding

Vibe Coding is a very new term, coined by former OpenAI employee Andrej Karpathy two months ago (as of the date of writing). It involves someone – with or without knowledge of or experience with software development – to use an LLM to create a piece of software. Kaparthy originally intended this to be a way to create personal tools or software prototypes, to get creative quickly and to try out ideas without having to bother with the boring minutia of making the software safe or robust (let’s put a pin in this idea, I’ll come back to it later).

Some people even double down on this vibe coding methodology and insist that you shouldn’t check the LLMs work – if you can even keep up with what the tools are building for you. For them vibe coding is about the end result, not the code that accomplishes it. Vibe coding and AI assisted coding tools are democratizing software development, giving non-coders or hobbyists the possibility to create software. A good thing, right?

Game Over for software developers

Mark Zuckerberg, Meta’s CEO declared earlier this year that they would replace mid-level software developers with AI coding tools. Sam Altman made similar claims, about OpenAI’s tools making software development work superfluous. I’m very curious how this will turn out especially since halucinations are still an unsolved problem. What will happen if these AI tools hallucinate all kinds of undesireable functionality into Facebook’s code?

This also reminds me of a conversation I had with a potential customer, almost two decades ago. They wanted a platform and tools to create simple educational games. But they wanted a tool to create these without programming. I carefully tried to explain them that you can’t create games without programming. They rejected our proposal for a competitor who could deliver on a game creation tool without programming. Years later I recognized the disconnect between their request and my response. They wanted a tool where they wouldn’t have to type in programming code…

This little anecdote highlights a big misconception. Writing code is to software engineering what shifting gears is to driving a car. It’s a skill that you need to get to your destination, but it’s not the essence. And just like driving a car, it’s something that you can do away with altogether with technology. Just like automatic transmissions in a car remove the manual gear shifting from driving a car, visual code editors or LLMs can remove the writing of – for the layman – incomprehensible symbols of a programming language.

What is programming?

But programming is so much more then typing in the right incantations. Let’s start at the beginning: converting an idea into something a computer can execute. As a programmer you have to break the requirements of a software product down into little chunks that a computer can actually execute and then you have to enter the steps and the logic into a computer. Whether you enter them using code or any other method is not really that relevant.

But this is not where your work ends. You not only have to make sure that the piece of software does what you want it to do, you also have to make sure that it is bug-free, that your colleagues working on it at a later date understand what it’s about, that it is safe from hackers and that the data is safe from prying eyes. And this is the real value of a professional and experienced software engineer: making sure that the programming is durable and safe.

Software engineers have to think about each of these factors (maintainability, stability, potential bugs, safety, …) for every instruction or every function they add to the software all while keeping the whole of the software product, the needs of the user and the request of customer in mind. And this, is in my mind, something that AI systems are not ready to replace yet.

Vibe Coding gone awry

A story has been doing the rounds on social media about a vibe coder by the name of Leo. His story perfectly illustrates the point above. Leo created an online tool using AI and made a somewhat condescending remark that you shouldn’t complain about not having a piece of software and start building using AI. Two days later, e sent out a somewhat panicked tweet about his software being hacked.

Yes, LLMs offer everyone the chance to start building software without prior knowledge. But building software is more then just converting an idea into programming code. At this point, AI powered programming software are a great productivity tool for experienced software engineers. But at this point we’re not ready to let AI create software unsupervised.

Just as we wouldn’t trust a driver who only knows how to put an automatic transmission into ‘drive’ to get me through traffic safely, we shouldn’t trust a Vibe Coder to create production level software.

By

·

Leave a comment