Compressed Thoughts

A blog by Matthew Rease

A chat interaction between a user and an LLM. The user says "Vibe me up some code mister AI!", to which the LLM generates some kind of Python script which it claims will draw a bouncing ball.

Skills Exist Apart From Tools

Leonardo da Vinci didn't need a brush to make art. My take on "Vibe Coding".

AI isn't bad. Using AI isn't bad either. Relying solely on AI is fine too, as long as you recognize it for what it is.

This new fad of vibe coding is certainly an odd one to me, but I'm also not here to judge what people find fun. But I do have concerns over how we define terms, and over "artistic" integrity. I'm not here to debate whether or not AI art is real art - I don't particularly care right now - this is about people claiming they do one thing, when they actually do another.

# Getting Pedantic

I don't know how you define coding, but I think it would be fair to say that someone who is a "coder" must necessarily be one who writes "code". And it is natural to assume that one who has the title of "coder" has the skills and knowledge required to write "code". The crux of my argument is entirely semantic, so if that bores you, feel free to stop reading now. I'm literally here just to talk about how vibe coders aren't (inherently) coders.

With the current state of technology, it is possible to create some simple programs with just a single AI prompt, and they work immediately with little to no flaws. One of my favorites is to ask an LLM (Large Language Model, the type of AI most people are talking about) to create a Minesweeper game. I usually pick Python due to the simplicity of its syntax. When I tried this 2-3 years ago, I was amazed at how good the result was. In retrospect, the training data was probably already quite good, but it was a new technology to me and I didn't know how LLMs worked yet, so I found it highly impressive.

I didn't write that code of course, and I think few would argue that I did. I wrote a prompt, which was tokenized into mathematical values, and thrown into a big block of numbers, which, through a complex series of linear algebra (and other) steps, the data was transformed into something new and meaningful. You can argue all day about whether the machine, the model creators, or the authors of the training data were the true creators here - some even want to say the person writing the prompt (or the "prompt engineer" lol) is the creator. There is a level of truth to all of these claims, though its hard to argue that the machine or those who trained the model had any "vision" in creating the Minesweeper game. But at the end of the day, the one who wrote the prompt didn't have to have any idea what Minesweeper game code looked like. In my case, I did of course, as I already had much knowledge on the subject of writing code - but my grandma could have written that prompt, and wouldn't have known if the output was even remotely correct (if it was Python - or heck, if it was even code)! And why not? Because she's not a coder! She doesn't know the first thing about code. And that's okay!

# It's Okay to Have Fun

I want to stress this: it's okay to not be a coder. It's okay to have fun with a tool and just see what it does. I have no classical artistic skill. I lack virtually any ability to draw or sculpt a beautiful piece of art (or even a passable piece of art). This is because I'm not a visual artist! I lack the skill and knowledge necessary to fix all the "bugs" in my drawings. Similarly, people who previously had 0 coding knowledge (or next to 0), are no more coders with AI, than without.

I can have fun with a paintbrush, even if what comes out is an abomination - kids do this all the time. Many kids draw objectively ugly pieces of art, but they had fun, and more importantly pure motives. The parent doesn't scold their child for making the five-billionth stick figure, they appreciate the heart behind the actions, and hang the drawing on the fridge to proudly display. They aren't proud of bad art, they're proud of their child wanting to make something to please them, because they love their parents.

# What's My Point?

Da Vinci didn't need his brush (or pencil, or whatever he used). Had you given him a bunch of Lego bricks (don't think about this scenario too hard), he could have arranged them into a passable art piece of some kind. Maybe not the best LEGO art, but still better than most could do, because, although some of his skills related to the handling of his tools, there was also true artistic skill behind what he did.

It's the same reason a skilled coder/programmer can work in a brand new programming language with only a little bit of time spent learning it. Because it's just a new tool for doing the same thing they already know how to do. I make a lot of system's level command-line applications. I used to do them all in C, now I mostly do Python. You could throw Zig or Rust at me, and within an hour or two I could have something. Because I fundamentally understand how the computer works at a software level (and a decent bit at the hardware level), I understand how imperative programming generally works, and I know systems level concepts on Unix such as file pointers, buffers, environment variables, etc.

Artists skilled at drawing humans, aren't skilled just because they can put pen to paper - they have a deep understanding of human structure. Facial bones, body curves, skin tones, and more. With any artistic implement, they can make due and learn. And you know what, someone with 0 coding experience could learn to code by throwing a bunch of stuff at AI and studying the output. That's not vibe coding, that's learning.

Those who ask the machine to make something, then have to ask the machine to fix every single issue (not just because they feel like it, but because they lack the ability to do so themselves), demonstrate that they are not coders because they have no knowledge or skill in the field of coding.

Also; being able to identify that code works, still doesn't make you a coder. I can look at a bad drawing and know it's bad - that doesn't make me an artist. I can see a collapsed bridge and know (all things being equal) that the designer of that bridge did not have sufficient knowledge or skill in bridge making (understanding of physics, materials, etc). It doesn't take an expert to identify lack of skill by lack of results, but it does take an expert to identify lack of skill by lack of execution. (I just wanted that last sentence to sound cool, but to be clear: an expert can observe something in the design phase, and know before implementing/executing the plan, if it will fail.)

# Conclusion

Vibe coding is fine. Computers are cool, math is cool, and together they do great things. You're not a coder because you can "vibe code", but rather (and only) in spite of it, if indeed you are a coder at all.