The Rise of Vibe Coding and The Future Programmer
From Monkey's Paw to Savant Intern
My first foray into coding with ChatGPT in early 2023 was a lesson in malicious compliance, reminiscent of the classic horror story, “The Monkey’s Paw.” It would grant my coding wishes with a humorless literalness, implementing the requested change while scrambling dozens of unrelated lines. The output was often over-engineered and cluttered with irrelevant code fragments. It felt like a detour rather than a shortcut.
By this year, however, the experience evolved. Using AI-assisted tools felt like pair-programming with a savant intern—competent and deferential, yet a bit too eager to make sweeping changes. But when I tasked it with localized, constrained problems, its efficiency was enviable.
The Art and Limit of Vibe Coding
The trick is to keep the problem space constrained. For instance, I recently had it convert a dozen lines of sequential code into a parallel process, reducing the total runtime from a stacked-up total to the time of a single operation. It’s like using a high-precision 3D printer: perfect for small custom parts like O-rings, but ask for an entire cockpit, and you might get a nonfunctional death trap. This new approach, where users with little experience can create products, has been dubbed “vibe-coding.”
One could argue vibe-coding isn't entirely new, descending from a long line of no-code applications. It also shares a spiritual connection with the dishonorable practice of “shotgun debugging,” where a brain-fried programmer mindlessly tweaks code, hoping for a magical fix. Both are forms of intuitive flailing, substituting hunches for deliberate reasoning.
We’ve used machines to take the load off cognition, but for the first time, we are offloading cognition itself to the machine.
The Programmer as Editor
I soon realized the most productive use of AI in coding is an editorial one. Just as an editor guides a writer, a responsible vibe-coder must guide the AI. The sprawling code blocks AI produces need structural edits first, then line-level refinements. This back-and-forth volley of prompts is how the coder’s vision is aligned with the final output.
Interestingly, I find these tools most useful not for writing code, but for understanding it. When faced with an unfamiliar codebase, I asked an AI to explain its basic flow. It generated a flowchart that saved me an afternoon of manual code-spelunking.
I'm of two minds about vibe-coding's potential. The writer in me loves how it could break down the snobbery engineers often show nontechnical roles. But the engineer in me knows that building a production-grade application requires years of grinding experience that can't be replaced by intuition alone.
A Codebase Is a City, Not a Pop-Up Shop
I've always seen a large codebase as a city. It has data pipelines, event queues, and complex traffic routing. Just as cities have districts, systems are divided into modules or microservices. Some parts are so old they are best left untouched, like the unexploded WWII bombs still found in European cities.
Building an app via vibe-coding is like opening a pop-up store—it's self-contained. The real challenges in software engineering aren't building individual units but connecting them. It's the difference between renovating one apartment and wiring a fire suppression system across an entire skyscraper. The introduction of a single new element can have countless ripple effects, just as a new building alters sunlight and traffic for its neighbors.
The security concerns around vibe-coding, in my estimation, are something of a bogeyman.
This is about hard-earned, tacit knowledge—knowing not just how to execute, but what to ask next. You can get any answer from AI, but the real skill is knowing the right sequence of questions. As the saying goes: “If you think good architecture is expensive, try bad architecture.”
Security Concerns and The Tea App Snafu
Linus Torvalds talks about “taste” in software, which emerges from countless sound micro-decisions that AI can't yet replicate. This intuition is developed from real-world battle scars, like 3 AM on-call alerts.
When the recent Tea app issue exposed thousands of driver's licenses, many were quick to blame vibe-coding. It was the moment skeptics were waiting for. However, when it was revealed that vibe-coding likely wasn’t the cause, the incident revealed more about our rush to create heroes and villains than about AI's dangers.
Honestly, the security concerns feel like a bogeyman. AI can also help us write more secure code. Automated tools already flag vulnerabilities, and I personally use them to generate more tests than I'd ever write by hand. A sufficiently advanced AI, when asked to build a database for driver's licenses, might automatically implement robust security measures like encryption and key management systems by default.
The Slow Drain of Competence
As a senior software engineer, AI has brought considerable ease to my job. I no longer parse long API docs or face judgment on Stack Overflow. But this comes at a cost. David Heinemeier Hansson, creator of Ruby on Rails, put it aptly: “I can literally feel competence draining out of my fingers.” I feel this too. Routine tasks I once did on autopilot now feel daunting without AI, and my fluency in programming languages is retreating.
Could AI make software engineering irrelevant? More likely, the Jevons Paradox will hold true: greater efficiency will simply fuel more consumption, leading to a higher volume of work.
The Unstoppable March of Abstraction
The evolution of software is a story of abstraction, moving from bare metal to higher conceptual layers. The path from assembly language to Python to AI is like going from giving turn-by-turn directions to just telling a GPS, “take me home.” But as we ascend, something vital may be left behind.
It may be the easiest time to be a coder, but it's harder than ever to become a true software engineer. You can't learn to dunk by watching highlight reels; you must internalize the fundamentals through hands-on struggle. One study even suggests AI-assisted coding might be slower. The key is developing a mental circuit breaker—knowing when to use AI and when to switch back to your own brain.
The End of an Era for The Craft
As James Somers wrote in his 2023 New Yorker essay, there's a feeling of wanting to write a eulogy for the craft of coding. I feel less motivated to learn new languages for fun now that an AI can generate code in any of them. The quiet pride in sharing debugging war stories may soon fade.
Software engineers can be split into two types: urban planners, who focus on the big picture, and miniaturists, who obsess over the fine details of code. This new AI-driven modality is a boon for planners but may leave no room for the miniaturists.
I remember watching a programming legend, Brian W. Kernighan, live-code in a bare-bones terminal. There was an aesthetic to his mastery. Soon, that kind of work may be seen as heroic but hopelessly out of time, a craft of gestures and incantations from a bygone era.