This weekend I saw yet another post about how AI and “vibe coding” will replace software engineers1. Meanwhile, the same companies making those claims are still actively hiring them2. That alone should tell you something.
We’ve somehow convinced ourselves that code is the hard part. It isn’t. The bottleneck has never been writing code. It has always been having good ideas, understanding what to build, and executing it properly. AI just makes this painfully obvious.
If code was the most valuable part, companies wouldn’t be giving it away for free. But they do. We’ve had open source for decades. Entire production systems are freely available: databases like ClickHouse, tools like Deepnote3. Entire companies are built on this pattern: open-source the core product, then make a living running it for people who don’t want to4. The value was never in the code itself.
Take Linux. It’s free, powerful, flexible. You can build almost anything on top of it. Entire operating systems like Ubuntu and Fedora exist because of it. And if you want to go further, there’s Arch, which I use btw, pick every package, configure every service, compile your own kernel if you feel like it. I do that sometimes, and I enjoy it. But other days I just want to open a MacBook and get to work. I don’t want to spend three days picking components, debugging drivers, and tweaking configs before I can do the thing I actually care about.
Arch Linux is free. MacBooks still sell.
Free code isn’t the same as a finished product.
Both approaches are valid. The real skill is knowing when to use which.
Before AI, we already had waves promising to “democratize software creation”: low-code, no-code, Zapier, Make.com, n8n. AI just pushed this idea further. And that’s not a bad thing. But it comes with the same misunderstanding.
Vibe coding is generating until something looks right. It’s incredibly useful for prototyping, for exploring ideas, for figuring out what you even want to build. Software engineering is the opposite. It’s about making deliberate decisions, understanding tradeoffs, and building systems that don’t just look good, but survive contact with reality. You can’t ignore decisions in code and expect production-grade systems at the same time.
Let’s be clear. AI is useful. I use it daily: ChatGPT, Claude Code, MCP servers integrated into my workflow. It’s incredibly powerful. In some cases, it even writes better code than I would. But only when I know what I want. If I don’t, I go in circles.
AI doesn’t remove the need to think. It punishes you if you don’t.
The best way to understand this shift is through 3D printing. It didn’t kill manufacturing. It made prototyping faster. It allowed people to iterate quickly, test ideas, and even sell early products. But eventually, you hit limits (cost, durability, scalability) and you move to injection molding. The same thing is happening with AI.
You can start with vibes. You can’t scale with them.
If AI makes it easier to build things, we won’t get fewer systems. We’ll get more. More prototypes. More tools. More SaaS products. More internal apps. And all of them will need to be fixed, scaled, secured, and maintained. AI won’t replace engineers. It will create more work for them.
We’re also shifting from “can we build this?” to “should we build this?” That’s a much harder question. Talking to users, understanding problems, designing something simple, usable, accessible. AI doesn’t do that for you.
At the end of the day, users don’t care what’s under the hood. They want software that’s fast, pleasant to use, and intuitive. Something that just works and doesn’t get in their way. And when something does break, or they have a question, they want to reach a real person who fixes it fast. That’s the product. Not the code. Not the architecture. The experience of using it and knowing someone has your back when things go wrong. No amount of AI-generated code delivers that on its own.
This shift will also expose companies. If a company was only held back by how fast it could ship code, AI will help it grow. If it was held back by unclear ideas or weak direction, AI will make that painfully obvious. Some layoffs now get blamed on AI when the real cause was already there: unclear strategy, bloated teams, products nobody wanted. AI just gave leadership a cleaner story to tell investors about why they’re laying people off.
Where AI really shines is in the boring parts. It reduces toil, helps investigate issues, speeds up workflows, and acts like an extra pair of hands. But it doesn’t replace thinking.
Agentic engineering is the real skill
If vibe coding is one end of the spectrum, agentic engineering is the other. Instead of generating until something looks right, you use AI the way a senior engineer uses a capable junior: give it context, direct it, review what it produces, step in when it drifts.
STRV has a great breakdown of the six levels of AI adoption engineers go through5: skeptic, tourist, assisted coder, prompt-driven developer, AI-native engineer, architect. The jump between levels is rarely about learning a new tool. It’s about changing how you think.
This is the part every software engineer should take seriously. Not because you’re about to be replaced, but because this is how the craft is moving. The engineers who get good at directing AI will be dramatically more effective than the ones who don’t. Not because they type faster, but because they operate at a higher level.
You still own the decisions. You still design the systems. You just delegate more of the mechanics.
Don’t get discouraged
It’s easy to feel like you’ve missed the AI wave. That everyone else is ahead. That it’s too late to catch up. But even Andrej Karpathy, the person who coined the term “vibe coding”6, has said he feels like he’s falling behind7.
Think about that for a second.
The field is moving so fast that even the people shaping it feel like they’re catching up. So no, you didn’t miss the train. There is no train. There’s just continuous change.
If anything, this is the best time to start. Go build something. Something you always wanted to do but didn’t have the skills for. Use AI to explore, prototype, learn, experiment. Don’t worry about doing it perfectly. Just don’t confuse the prototype with the final product.
We’re entering a world where code is cheap, building is easy, and ideas are abundant. What’s scarce is taste, judgment, and the ability to execute well.
The hardest part of software was never writing code.
It was always knowing what to build.
And that hasn’t changed.
Footnotes
-
Anthropic CEO Dario Amodei predicted AI would write 90% of all code within 3–6 months and “essentially all of the code” within 12 months. A similar claim came from Matt Garman (AWS). ↩
-
See Anthropic’s careers page, which currently lists dozens of open software engineering roles across infrastructure, product, security, and research. ↩
-
The New Stack, Deepnote, a successor to Jupyter Notebook, goes open source. ↩
-
See Elastic, MongoDB, GitLab, Grafana Labs, Confluent, Supabase, ClickHouse, Vercel, PostHog, and dbt Labs. Each open-sources its core product and runs a commercial hosting business on top. ↩
-
Andrej Karpathy, tweet coining “vibe coding”. ↩
-
Andrej Karpathy, tweet on feeling like he’s falling behind. ↩