As a Software Engineer, I Let AI Write All My Code

As a Software Engineer, I Let AI Write All My Code

I’ve been a software engineer for more than six years, and I haven’t written a single line of code by hand in over a year. Today, AI writes every single line of code in my projects. But when I first started coding this way a little over a year ago, the honeymoon phase lasted less than three days.

The Bliss of Vibe Coding

I still remember opening Cursor for the first time back in June 2025 after hearing so much buzz about it. At first glance, it looked almost identical to VS Code, just with an AI chat sidebar tacked on.

Up until that point, my idea of AI coding was basically GitHub Copilot—a glorified autocomplete. But the moment I typed out my first prompt and hit send, something clicked. The model started churning through thoughts, blazing through dozens, then hundreds of lines of code right inside the editor. It jumped seamlessly between files, making coordinated edits, and even ran terminal commands for me.

All I had to do was describe what I wanted in plain English, and the AI built it out. I didn’t have to hammer out each line myself. This wasn’t autocomplete anymore; it was an AI stepping in at a higher level and taking over genuine engineering tasks.

It felt like holding a magic wand—that thrilling sensation of watching a completely new world open up right in front of you.

Back then, I wrote down these thoughts:

Vibe coding is practically made for people with ADHD. Traditional coding goes completely against the grain of an ADHD brain, but vibe coding instantly cured everything I hated: writing unit tests, wrestling with CSS, mistyping variable names, and chasing down tedious, boring bugs.

With AI at your side, feedback loops shrink to seconds, giving you an immediate sense of momentum. The more repetitive and mundane a task is, the better the AI handles it.

You’re left to focus on the big picture and architecture, acting purely as the technical lead on your project.

I have zero desire to handcraft every single character of syntax, but I love the joy of building things. The arc from assembly to high-level languages has always been about making the developer experience better and faster.

Building software as a pure creator rather than a digital bricklayer—honestly, as a programmer, that feels pretty close to bliss.

The Limits of Vibe Coding

This way of working has a name now: vibe coding. Andrej Karpathy, co-founder of OpenAI, coined the term in February 2025. The idea is to code entirely by “vibes”: describe what you want in natural language, accept whatever code the AI spits out without line-by-line review, throw error messages right back into the chat when things break, and basically forget that the underlying code even exists.

Barely three days after writing that glowing review, I slammed straight into the limits of vibe coding.

I was building an app prototype at the time. Pure vibe coding meant letting the AI run wild with vague prompts, without applying any real software engineering discipline. Before long, the AI became increasingly uncooperative, and the codebase devolved into an unmaintainable tangled mess.

So I scrapped it and started over. This time, I stepped back into my shoes as an engineer, approaching AI-assisted development with a proper engineering workflow.

That completely changed the game. While keeping all the fun of vibe coding, I introduced strict code reviews, clear documentation, and smaller, incremental iterations instead of massive feature drops. Suddenly, the architecture and implementation were firmly under control again. Everything clicked right into place. Working with AI felt like being a team lead directing an intern: you don’t have to implement every mundane detail yourself, but you still need firm architectural oversight and high-level systems thinking.

Soon after, I switched to Claude Code for my daily workflow. It gave me even tighter, more surgical control. It was like working with superpowers, multiplying my development speed several times over.

The Future of Software Engineering

“Could vibe coding let people ship things so fast that they lose any desire to learn the fundamentals of programming?”

I think it is very possible.

Traditionally, the journey from learning syntax to shipping real products is a set of stairs. You take it one step at a time: starting with introductory programming courses, landing a junior role, grinding through real-world engineering hurdles on the job, and gradually maturing into an engineer who can carry a project independently. Each step gives you tangible feedback, so anyone with average aptitude and dedication could break in along a well-trodden career path.

Vibe coding flattens the entry barrier to virtually zero. Anyone can cobble together a demo now. But software engineering is an empirical craft. Going from a working prototype to a reliable, production-ready product isn’t a small leap—it’s the difference between 0 to 1 and 1 to 100.

In the traditional path, the grind of getting from 0 to 1 naturally equipped you with the foundational muscles needed for 1 to 100. Vibe coding bypasses that entirely. Beginners build a demo effortlessly, but hit a vertical cliff the moment they try to go from 1 to 10. That sudden drop-off will discourage countless people from ever pushing deeper.

Because the beginning was so effortless, the sheer difficulty of what comes next can’t be bridged by casual curiosity or average problem-solving skills. Anyone who can bridge that gap effortlessly today almost certainly possesses exceptional learning velocity, grit, and analytical ability—putting them in the top 1% of developers anyway.

In other words, that rare breed of talent would have made it to the top even in the pre-AI era.

As AI coding capabilities advance at breakneck speed, the industry’s appetite for junior engineers is drying up. The traditional talent pipeline is fracturing, leaving fewer opportunities for beginners to cut their teeth and develop real skills.

A year after I first drafted these thoughts, labor market data began confirming the trend:

I find myself quite pessimistic about the future of this craft. Professional software development is splitting into two extremes: an elite arena where top minds push boundaries at superhuman scale, and a sea of hobbyists hacking together disposable demos for fun.

Other professions will inevitably follow suit. Routine white-collar and cognitive tasks across every industry will be swallowed by AI.

Even pure mathematics—perhaps the ultimate bastion of original, creative human thought—saw its gates breached over the past year:

What This Series Will Cover

Right now, more and more people with zero programming background are dipping their toes into AI coding. They might not know where to start, or they’ve only played around with toy projects. Quickly, they run into a wall: without foundational software engineering instincts, they often don’t know what they’re actually building, how to break down complex problems, or how to direct the AI toward a coherent outcome.

I’ve also noticed that many struggles come down to a lack of structured thinking: people don’t know how to ask precise questions, evaluate answers critically, or tell whether what the AI generated is actually sound.

As an engineer with over six years of experience, I’ve designed and shipped several complex, user-facing products with AI. As I mentioned at the start, every single line of code in my projects is written by AI. AI can absolutely help you build robust software—provided you understand what you’re doing and know how to steer it. The AI is just the instrument; the driver still matters.

In the age of AI, the old roadmap for learning to code is being rewritten. That’s why I’m launching a new series: The Complete Beginner’s Guide to Vibe Coding.

Here is what the guide will cover:

  1. Integrating AI coding with modern software engineering best practices: Demystifying what software engineering actually is, then building your ideas from scratch into maintainable, production-ready apps rather than fragile demos—all while keeping the workflow silky smooth.
  2. Mental models and prompt discipline: How to formulate effective questions, avoid common pitfalls, and write clear project documentation that guides the AI effectively.
  3. Testing and architectural stability: How to test your codebase, maintain architectural integrity, and continuously iterate on quality and features without breaking things.
  4. Optimal tech stacks for AI development: Choosing the right languages, libraries, and frameworks that play to AI’s strengths and maximize your leverage.

Postscript

The core of this post was originally written a year ago, in October 2025. I recently came back to it, added this past year’s hiring data and the breakthroughs AI made in mathematics. At the time, the dizzying pace of AI progress made me hesitate; I worried anything I published would feel obsolete within days, so I posted plenty of short snippets and avoided longer essays. Looking back at this draft a year later, the central argument holds up surprisingly well, so I decided to polish and share it. I plan to write more long-form pieces moving forward. After all, genuinely human perspectives are only going to get rarer from here on out.