12th May 2025 · By Arif Ikmal

"Vibe coding" has been the talk of the tech world recently. It’s when developers build things based on gut feeling, what seems right, or code quickly generated by AI tools like LLMs. It feels fast and productive to get something working almost instantly. But as this way of coding becomes more popular, we need to ask a serious question, one that touches on ideas of my friend, Aziz Iskandar, recently wrote about. He discussed David Deutsch's views on real self-confidence and Edsger Dijkstra's push for programmers to truly understand their work. Is "vibe coding," with its quick wins, leading us to build digital Potemkin villages - impressive on the outside, but dangerously hollow within?
Aziz, talking about Deutsch's ideas (as detailed in "Deutsch's Role-Model Fallacy: The Reality of Self-Confidence"), pointed out that real self-confidence doesn't come from just watching successful people who look like us. It’s built by solving hard problems ourselves – trying, failing, learning, and finally succeeding. He mentioned how in Malaysia, the government tried to "create role models" by giving advantages to certain businesses. The idea was that their success would inspire others. But often, this just hid deeper problems and didn't help most people build real skills or businesses. It was about looking good on the surface, not building solid foundations, which ended up harming the economy.
Now, think about "vibe coding." A developer uses an AI tool or quickly pulls together some code that seems to work. The app runs, the feature is there. It looks like success. It feels good. But what if the developer doesn't truly understand why the code works, its weak spots, or the security risks? Are we not just putting up a pretty front, like those fake villages built just to impress?
This is where "vibe coding" starts to look like that role model problem. The "working" code is like the "successful" crony – it looks good, but it might not represent real, solid skill or a dependable system. Developers and teams might feel they're doing great work because things appear to function. But this can be a false sense of achievement, hiding serious issues under the surface, like a Potemkin village hiding a barren reality.
The dangers of building these digital Potemkin villages are serious, and they remind me of Dijkstra's warnings (which Aziz explores in "Debunking Dijkstra's ‘Toxicity’") about the ethics of not understanding your own code.
This isn't about rejecting new tools like LLMs. They are incredibly powerful. As Dijkstra's message is often misunderstood, the point isn't to "gatekeep" or stop progress. The point is about responsibility. We should use these tools to help us learn and build better, not as a shortcut to avoid understanding. Real progress in technology comes from tackling tough problems, understanding how things work, and testing thoroughly. That’s how we build real skills and truly dependable software.
Just like those impressive-looking but fake villages couldn't magically make a country strong, code that just "vibes" right, without being deeply understood by the people who wrote it, can't be the foundation for a trustworthy digital world. We need to focus on building genuine understanding and solid engineering skills, not just software that looks good on its first run. Our digital future depends on moving beyond pretty facades to build things with real substance.