I was reading Andrej Karpathy’s original post, https://x.com/karpathy/status/1886192184808149383, on vibe coding. And yesterday, first time I tried VS Code, in order to try Codeium, as my first touch of edit assist which the early GitHub Copilot I test drove before did not have. Cursor introduced the edit concept but I hadn’t tried this because I was already paying for Open AI ChatGPT, so I didnt want to double dip. But I got a chance to try Codeium at work, so I did.
I immediately asked for the moon, “lets edit these lines the same way I updated them in this other PR, https://….”, so I chose to lead with disappointment 😆. I guess internet access is not out of the box like with ChatGPT? The hallucinated diff I got was just too weird to describe, some weird HTTP json.
I asked to add to a json configuration , additional fields, available in a separate repository on my laptop, and not bad, only 2/3rd of the diff I had to remove and the remaining 1/3rd was spot on.
When I tried the Codeium chat assist style the night before, I encountered a true Russel Peters “how to make a cake” moment. Granted this was tied to VIM so perhaps quirky, but I had a pretty repetitive refactor I wanted to test, updating 10 multi parameter function calls, with a new function, that took fewer parameters making the code less verbose, so I said, “hey I have in my file.py, these lines, foo(apple, beta, cargo=2), I would like to replace with flarg(cargo=2), for all similar occurrences” , and I was told this would be easy. I just have to find all occurrences of X, and for each one replace them with Y, giving a very nice example , the very same one I gave. But that I should check after to make sure it is working. Great, my attempt to outsource my refactor, was outsourced right back to me, I thought. 😆.
I do see huge potential in context aware large diffs, maybe I just have to learn better prompting .
But vibe coding? Meaning, “… forget that the code even exists…”, I think can work for quick one off , say, analytical tasks quite well, as long as they are truly one off. But even if they are producing something you would like to improve and have to maintain, the Lean Startup “lets validate this is useful”, collect the quick feedback , seems to be the big benefit here. That and inertia. Getting from v=0 to v=1 is way harder than v=1 to v=2, which in turn is more difficult than going from v=2 to v=10.
The other day I fully vibe coded a fun analytical exercise, am I ebiking as little as I assume? https://world.hey.com/michal.piekarczyk/how-much-ebike-could-an-ebike-ebike-cbbaf661. Turned out I ebike sometimes 5x to 10x more than i thought, although I didnt really double check the maths. ChatGPT very nicely lets me talk to my data. I love this.
I just needed to answer a quick question. If this saves thousands of data scientists from getting bombarded with “quick questions " throughout their week by their code-disabled counterparts, this could make data science into a fun field again! No more “just asking questions " 😆.
So prototyping, gathering votes, okay. “This 6 month long project could have been a vibe coding afternoon.” I get it.
But replacing your skill acquisition , with an imprecise Reinforcement Learning Human Feedback ish layer, around possibly buggy probably average, most likely unmanageable black box code, that you cannot really use in production, I dont really see the point. Might as well gain the skills to learn whatever you need, so you know more and have some transferable skills on the other end.
Is vibe coding kind of like data science though? After all data science today is deeep learning or boosted machines that also produces black boxes of weights and biases that people used to build by hand. And also data science is a cycle grinding trial and error, evaluation, feature selection, training rinse and repeat. All to optimize some loss function. So maybe there is some vibe coding equivalent , as long as there is some other quantifiable loss to optimize .