Programming is not a Vibe

Programming is not a Vibe

2025, Apr 16    

If you follow technology trends, and you’ve seen all the hype around AI assisted programming, you probably have had one of these reactions:

  • Oh, super cool, that could potentially make my life easier.
  • This is great. I can now write any application I want and not have to learn to program.
  • This is the worst thing ever! This is going to ruin the whole industry and all code is going to be garbage code.

You may, very well, have said two or more of these things after reading about it, trying it out, or talking to others. I personally have been through all three stages. Currently I am in the “Oh, super cool” phase, but, I expect that will change again at some point. Let’s break down each of these.

The Sky is Falling, Chicken Little

If you, like me, have been a programmer for some time in the industry you’ve seen a lot of trends come and go. Some disappear, and others stay but the long haul. Most, however, go from being the next big thing to simply becoming a part of your workflow. High-level programming languages, for example, eased some of the complexity of writing Assembly code. Seeing these trends emerge can be extremely frustrating for people who have spent their lives perfecting their craft. You may feel you are no longer in high demand because some kid can churn out code in half the time and, thus, you are going to get defensive. You’ll only see the bad in what is to come.

This is not unwarranted. There are trade-offs with every “quality of life” enhancement that we see in our industry. When Microsoft started making visual editors that allowed you to drag and drop components into your editor we heard criticisms. “The code is going to be bloated”. “People are going to forget how to code if they don’t write everything from scratch”. To some degree, this was correct. There were certain fundamental concepts that we trade off in favor of ease of use. It became clear, however, that over time these tools served better as prototyping tools, or tools for making applications that had no intentions to scale. Once they found a foothold, they would need to be re-written in a more mature language so that they could run efficiently, securely, and without risk.

Very well; now dance

The compliment to our hero from the previous section is the opportunist. The aspiring entrepreneur who sees this as an opportunity to cut out the middle-man or the manager who sees this as a way to eliminate the need for programmers. You can simply “vibe code” and create any application your heart desired by feeding the requirements to a prompt.

Although true, the opportunist will soon realize that, much like the visual editors from our previous example, they are building tech debt, they are introducing weak security and buggy code, all for the promise of quick to market delivery. Much like the grasshopper in Aesop’s fable, when the winter comes, and they need someone to fix their code while they spent all summer playing their fiddle, us ants will say “very well; now dance!”.

In a pinch a good use of our wits may help us out

In sticking with our fairy tales let’s turn our attention to the crow and the pitcher. In order to reach the water in the pitcher our friend the crow would add pebbles until the water rose high enough for him to drink. We should be like the crow using the tools around us to help us to achieve our goals. Instead of fighting the advancement of technology, let’s embrace it. Use AI to help us write the code. Why should we write boilerplate templates that rarely change, subject ourselves to writing reams of tests that can be easily automated, or force ourselves to remember syntax that can easily be recalled from the breath of data collected online.

Our jobs are hard enough as it is. We should simplify them, but not at the expense of knowing what the code is doing. Programming is not a vibe, just like engineering, medicine, and architecture are not a vibe. Imagine if we had AI design our electric grid without human oversight, or we relied strictly on AI prompts to diagnose our illnesses, or risked our lives taking the elevator up to the top floor of a skyscraper that was entirely designed by a machine. Software seems to get a pass because we are not risking our lives. We are, however, risking our personal privacy, our identity, our finances, and many other things that are critical to our survival. Let’s keep the vibe coding for the prototypes and the proof of concepts, let’s use AI to augment our software development practices but, most importantly, let’s continue to refine our craft and not sell ourselves short in favor of doing things quicker.