Good Vibrations and Coding

Vibe Coding sounds like something Spicoli would do whether or not Mr. Hand approves. Frankly it's something we all could do.

Good Vibrations and Coding
Photo by Cody McLain / Unsplash

Vibe coding (also vibecoding) is an AI-dependent programming technique where a person describes a problem in a few sentences as a prompt to a large language model (LLM) tuned for coding. The LLM generates software, shifting the programmer's role from manual coding to guiding, testing, and refining the AI-generated source code. - Wikipedia article opening on Vibe coding

How things have changed. In my youth I had a magazine subscription (ok, Dad had it, but it was our household) that came with whole programs to copy manually into our trusty computer and run to play games or perform tasks. A Monopoly clone for one, other text based games as well - this was the era of TV's tuned to channel 3 or 4 as computer monitors. This was sometimes frustrating, as there were sometimes errors in the code, or typeface irregularities that made characters difficult to differentiate (like 0 vs. O and such), or we simply had to compensate for the fact that the version of BASIC on our computer was slightly different than the one the code was written for. A challenge for me at the tender age of about eight.

Fast forward to today, where "Vibe Coding" has become a thing. Imagine just telling an AI assistant what you want done and it creates code for you! None of that tedious mucking about learning a language, understanding how to code efficiently, or even being prepared to add features after you've gotten the basics working! Imagine being Bill Gates creating Microsoft today, or Mark Zuckerberg creating a misogynistic website for ranking his class coed peers via vibe coding! The possibilities are limitless!

Tongue in cheek? Sure. I'm being a cynic. There's no avoiding that, it is part of my core. Believe it or not I see value in this newly defined area of coding. Honestly, it's not that different from what I was doing back in the day - trusting someone/something else to have built some code that I'm going to modify and debug. We'd sometimes call this kludging, other times it was hacking - the original non-derogatory definition from before hacker was synonymous with cyber criminal. Many of us still do this today. As a personal example, I used sample code to help me personalize a digital badge solution - my tufty 2040 digital badge.

2.4" of programmable, wearable, low color depth badge!

That said, this sort of programming IS just that - kludgy, unrefined, and buggy. The sort of coding you do for software that isn't mission critical, doesn't have to stand up to strict security needs, etc. Like this badge - there's no remote access to it, no sensitive information on it, and no interaction to physical systems that could be interrupted. I have no problem with this sort of coding for this sort of project.

I hope you get where I'm going here. There's definitely a place for vibe coding, just like there's a place for hacking and kludging. But that place may not be your production environment, that's up to you based on your risk tolerance.

An Unfortunate Name For the Evolution of a Time Tested Methodology

I think "vibe coding" is perhaps one of the worst possible names for this activity. Then again, kludging isn't exactly the most positive word either, so maybe it is more appropriate than I give it credit for.

Ignoring the ethical questions like "was this code made freely available and am I properly following the license instructions from which the AI gathered it?" and the questions of efficient use of energy since AI activities seem to use a shockingly large amount of electricity compared to other ways of achieving the same output, such as traditional searches of places like GitHub, this is just the next stage in hacking together code that may be outside of your realm of expertise. Though those concerns should be kept in mind, especially if you're writing software for work!

When used wisely, this is a fantastic way to grow your skillset as a software writer, whether you're trying to build the next world-changing application, just need to get your spreadsheet to work properly, or are trying to get the lights in your house to turn on and off with dusk and dawn this kind of activity can be extremely helpful. If I didn't employ hacking techniques for writing my code I'd still be writing in Pascal or Fortran. (Yes, I'm old, now get off my digital lawn!) I've never studied Python, but at least half of what I've written in the past 5 years or so has been in that language, which has the benefit of having a lot less {} brackets than Pascal.

Not To Harsh Your Mellow, But...

If I'm a hiring manager looking to hire someone to develop my software I'm going to want to see something more than "vibe coding" skills. I'd want to know that you've got a strong grasp of relevant programing language(s), and can write, debug, and comment quality code. I'm going to want to know that in an "offline" situation you're still able to be productive and helpful. Do you understand how to validate inputs (I'm a security geek after all)? Can you write code that makes efficient use of the constraints on the hardware? Vibe coding might be part of your strategy for learning these things but to use an analogy, even if the airplane can fly itself I still want a trained pilot in the cockpit. That may change someday, but not just yet.

Now if you'll excuse me, I have an E-Ink, Raspberry Pi Zero based remote control to start building, which will involve some vibe coding, hacking, and/or probably even some kludging.


💡
Particular companies and brands were mentioned in this blog. I have no financial relationship with any of them, and merely mentioning them should not be construed as endorsing them or their products. Please, make your own decisions based on your own needs and research.