AI-Coding: The Ultimate Leaky Abstraction
I am skeptical of exaggerated hype around vibe coding. One question bothered me, though: Am I just turning into the old curmudgeon yelling at the young kids to get off his lawn? After all, similar debates existed before:
There was a time when programming meant punching holes into cards. Then along came these fancy folks with their keyboards.
Then we had people who complained that, with a compiler, programmers these days weren't reading and writing pure machine instructions (assembly language) anymore.
These compiler users then complained when some people moved to interpreted languages that don't even need to be compiled.
The list goes on and on, and of course, the old guard proclaimed that the new way was wrong each time. When confronted with this litany of outdated complaints, the curmudgeons quickly insist that "it's different this time!"
It Is Different This Time
So what's the difference between someone using a compiler, blissfully unaware of the underlying machine instructions, and someone vibe coding their app, blissfully unaware of the underlying Python or JavaScript?
It's that the abstraction is incredibly leaky.
In more than 99% of situations, using a compiled language like C, C++, or Rust, you can happily ignore that it ends up as machine language. You can spend your entire programming career writing highly effective code in these languages and not once have to drop down to the lower level of CPU instructions.
We are still far from achieving a similar scenario with AI-generated software! As your project grows beyond the very first prototype, you'll find that the AI runs into dead ends, or, that it breaks one thing when fixing another, and all sorts of hiccups that you can only solve by looking at the code and devising a solution. You have to drop down to the level of the source code, and there's currently no way around it.
It might change in the future, but I wouldn't just yet fire my entire software engineering department to have my project managers vibe-code everything themselves 🤷♂️.