https://karpathy.bearblog.dev/year-in-review-2025/

In this episode @karpathy blessed us all with another blogpost. While his wording is much more careful and even nuanced, there is still a lot of bullshit in it. It way less outrageous bullshit as in the Friedman poocast and around that time, but still.

Here are some excerpts:

With vibe coding, programming is not strictly reserved for highly trained professionals, it is something anyone can do.

But not only does vibe coding empower regular people to approach programming, it empowers trained professionals to write a lot more (vibe coded) software that would otherwise never be written.

Okay, first, programming and coding are, in principle (from the neurological standpoint) very different activities, and so-called vibe-coding is neither of them. Here is how:

By the way, It is even funny how at lest somehow mathematically literate people (he is a PhD, among other things) could even confuse these activities, unless, of course, they are shilling or pitching something, themselves, most of the time.

Just like in mathematics, programming is about creating a properly captured abstractions, properly generalizing over them (to have a well-defined notion of an angle, lets say), and occasionally (very rare) making new concepts, and, perhaps, once in a lifetime – new ways of thinking, just like thinking about the Group Theory as an plausible abstract foundation of “whole” Geometry.

A good programmer mostly concerned with such properly generalized abstractions (Algebraic Data Types, in the first place), their properties, and relationships among them, as well as how to specialize “just tight” these “fundamental” abstraction’s to a specific problem domain. The focus is on proper abstraction barriers, high-level, abstract state-less interfaces, modules which export such narrow public interfaces, and composing such modules into larger systems.

As other famous meme-guys (hi, @bartosz) noted, programming is about decomposition of some aspects of the real world into properly defined abstractions, and then composing these abstractions into larger properly structured (as a “shallow” hierarchy of layerred DSLs) systems.

Barbara Liskov’s books were the first principle-guided attempt to systematize such proper programming practices, and they are still the best resource on the topic.

There is, of course, a lot more to programming, but the above is the “essence” of it.

Coding, on the other hand, is a more “mechanical” activity. It is quite similar of how ignorant people (which have a ready strong opinion on absolutely everything) produce their spoken or written verbiage – it just somehow appears from their minds, and they just speak it out loud, or write it down. No one even ask themselves “is it any good?”, or “is it even correct?”, leave alone “from where it comes from?”.

How thoughts and speech are actually formed in our minds is a completely different topic, but the analogy is quite accurate. No, it has nothing to do with “probabilities” and “running simulations inside out brains”, but more like neuromodulator-mediated “stochastic parrots”, which are “trained” on the past experiences of the person.

Notice that a systematic “mathematical” thinking and reasoning is a very different cognitive process that just spewing out whatever comes to mind (in a shower of thoughts tweet, lets say). One has, indeed, to be “trained” for years to do the first, while the second is something that everyone does almost unconsciously, all the time.

This is the difference between programming and coding.

Now , what is “vibe coding”, then? Imagine that you are watching a cooking videos on YouTube. You see something, which looks like the process you “fully understand” (which is a gross illusion) and even could easily replicate (which, is another gross illusion).

The playing violin instead of watching someone else do it, is such a cliche, that I almost blush to mention it. But, indeed, this is exactly what vibe coding is. You somehow end up with what fells like (to you) as an “acceptable sound” (which is, actually, quite far from what a real violinist could produce), without even moving your hands, and now you think that you are playing the violin.

In the very basic “preside-scientific” terms, the neurological activities involved in “vibe coding” are very similar to those involved in watching cooking videos, or watching someone play the violin. You don’t even “mimic” what you see, (that would require re-typing the slop by yourself world by world) without any actual understanding (the whys) of what is going on.

So what exactly these hypothetical “regular people” are engaged with, thinking that they are “program”? That isn’t even coding (they write nothing by themselves). That is sort of a video-game-like activity, where it appears to them that they are “doing something”.

Again, even cooking videos are just an illusion of cooking and only an experienced person would “see” the flaws and what has been “cut off” or “oversimplified” in the video. Same with vibe coding – only an experienced programmer would see how this is just an appearance (an cognitive illusion, as in a video game) of programming, and not programming itself.

Now, what the actual “outcome” of such vibe coding activity is? Well, mostly, it is a pile of something, that appears to be a “good” code, that even actually runs. This is exactly the same of a sophisticated sectarian (sorry, “socially scientific”) bullshitting appears to an uninitiated person – one cannot tell, in principle, whether it is true or not (because it requires that distinct and the only ability, as within the proper mathematics, to “walk all the way” back to the underlying the What Is, and then all the way up, via the processes of proper abstraction, generalization, naming, and so on).

Notice, I haven’t said a single word about “safety” (which “emerges” from using together in a complementing way just a few properly selected principles, abstractions, “patterns”,and idioms) in order to systematically and consistently “making an illegal state unrepresentable”, lets say, leave alone representation invariant or “efficiency”. Most of vibecoders does not even know the meaning of such long words, let alone the fundamental concepts behind them.

But, he said he actually “vibecoded the software he wished to exist”. Well, making some junkfood slop for lunch or dinner is an activity that almost any neurologically normal person could do and almost everyone on earth is doing every other day. If something is edible is not the sign that it is of a good quality, not to mention approaching a fixed point of the best possible quality.

At the another, more abstract level, a wall of text (a written verbiage), even if it is grammatically correct and somehow appears to be coherent and even “smooth”, does not imply that it is actually of any good. Coming up with a bunch of more-or-less grammatically correct sentences on a selected topic is not the same as a well-crafted essay (or whatever they teach you at these writting classes at the Ivy Leagues English departments). So is even more with the code.

It is also worth mentioning (again and again) that the whole generation process works at the level of mere syntax and estimated probabilities of the next token in a given sequence – there is no understanding of any kind whatsoever in the process, only an appearance (an illusion) of it, as in a parrot’s speech

So the term ‘vibecoded’ shall be substituted to a much more “scientifically” appropriate term “parroting” – I have parroted some code and it even runs (why, yes, the basic “micro-patterns” within – conditionals, loops, assignment, procedures, classes and methods – are being “put together” or generated at the level of their syntactic forms). The apparent coherence and apparent actual “correctness” (so it runs at all) are mere illusions, just like apparent grammatical correctness in what a parrot “says”.

Of course, he knows the algorithms behind of the whole pipeline, but decided to spew out a normie-friendly popular bullshit instead.

There is a simple takeaway – by no means the code an LLM spews out is at the same qualitative level as of a human expert, concerned with the underlying principles (systematic and consistent application of which leads to a better non-bullshit type-and memory- “safety”) and the careful craftmnship’s attention to details, just like an “ordinary person” couldn’t suddenly come up with a mathematical “paper” of the level of Euler. Reality does not work that way.