The Copilot's Log #1: Vibe-Coding vs AI-Assisted Coding

Bogdan BujdeaBogdan Bujdea
7 min read

Welcome to the first edition of The Copilot's Log, a weekly newsletter about AI-assisted software development, from a developer who's using these tools in the real world.

No hype. No fear. Just honest stories and practical takeaways.

To kick things off, I want to share two short stories from the past 9 months. These moments will give you a feel for what this newsletter is all about.

Story #1

Todoist's CEO just teased a new feature on his Twitter page. My app, Task Analytics for Todoist, is a power-up that adds features their platform doesn't offer. So I thought it would be cool to try to build the same feature before they launch it. I fired up Cursor, crafted the initial prompt, and in less than two minutes I had a basic version of the calendar that was 100% functional from the start without requiring any changes from my part. I pushed it to prod, recorded a video about it, and replied with that video in the same thread.

The result? 21 new users and over 300$ for 5 minutes of vibe-coding.

Part of me was thrilled. Another part thought: if AI can do this so easily… what happens to my career as a developer?

Article content

Story #2

November 2024, I was tasked with removing endpoints related to an entity from a microservice. The job seemed simple enough for AI, so I opened VS Code and asked Copilot to remove all the code that used that C# entity (services, controllers, repositories, etc.)

Less than a minute later, over 50 files had been changed. I scanned the diffs in GitKraken, but not too carefully. Everything looked clean. The service still ran, smoke tests passed, and I pushed the code. A colleague gave it a quick review, and the PR was merged.

Two days later a table gets deleted from our QA database. I thought it might be related with my changes, so I started to go through the latest pull request. Indeed, someone created a PR with a migration that had the "DROP TABLE" command, but they insisted they haven't removed that entity. I then looked at my PR and found that I was the one who removed it. Turns out that Copilot decided to delete a little more than I requested, and I missed it because I haven't reviewed it carefully.

That’s how I learned a hard lesson: AI can make decisions you didn’t ask for, in places you least expect, and if you’re not watching, those decisions can have severe consequences.

Luckily for me, this didn’t reach production. But it blocked more than 50 people from working on that environment for over two hours while the issue was found and the data was restored.

Why I'm Writing This Newsletter

Over the past few years, I’ve used AI tools extensively to boost my productivity, and it’s made a real difference in my career. AI has helped me deliver more in less time, stay steady in a volatile job market, and even launch my own app, where it filled in as a kind of co-founder... handling front-end work, marketing copy, and more.

But for every success, I’ve had failures too. And I want to share both. Openly.

I’m pragmatic about AI. I don’t believe it’s a silver bullet, and I don’t think we should fear it either. That probably means I won’t attract as many readers as those hyping vibe coding or those warning that AI is killing our craft. But I’m okay with that.

This newsletter is for devs who want to get better (not just faster) with AI. So, in this first edition, I want to talk about exactly that: Vibe coding vs AI-assisted development.

Vibe-coding

Vibe coding is a software development approach where developers heavily rely on large language models (LLMs) to generate code from natural language prompts. It involves giving general, high-level instructions to the LLM, which then produces the working code. This method aims to accelerate development and make app building more accessible, especially for those with limited programming experience.

Does this definition sound too good to be true? That's because it really is too good to be true, at least at the moment I'm writing this newsletter.

This approach has its pros and cons, and that’s why I wanted to share both success and failure stories. Relying on AI to write code without truly understanding or reviewing it can lead to serious consequences. I’m not gatekeeping here—vibe coding can be a great way to dip your toes into programming. But using it as your only tool to build and ship products? That’s where things get risky.

Why Vibe Coding Can Be Risky

Vibe coding is becoming popular among folks with little to no dev background. While I admire the entrepreneurial mindset, this can be dangerous when taken too far.

When I used AI to implement that feature from the story #1. that was vibe-coding. The term didn’t exist back then, we just called it "AI-generated code." But let’s be honest, "vibe coding" sounds better.

Think of it like this: being a vibe-coder without foundational knowledge is like trying to be an electrician without proper training. At some point, you’ll get shocked... or start a fire.

That doesn’t mean you need a license or formal degree to be a developer. You can absolutely start with vibe coding. But to build stable, safe, and scalable software, you need more than prompts. You need to learn the basics: clean code, version control, security, system design. That’s what turns quick wins into long-term success.

If you ignore don't have basic programming skills, you risk introducing issues like:

  • Security vulnerabilities that could expose user data and lead to legal trouble

  • Bugs that frustrate users and drive customers away

  • Performance issues that inflate cloud costs or degrade the user experience

When Vibe Coding Does Work

Proof of Concepts

Vibe coding is great for prototyping. Need to integrate a new library to see if it’s worth paying for? AI can spin up a working demo in minutes. Just point it at the docs and let it work while you drink coffee. For internal demos, it doesn’t need to be secure or pretty—just functional.

When Failure Is an Option

I’m not a frontend dev. That used to stop me from launching products. Now, with AI, I’ve built and sold a SaaS with frontend code that works but it would make a real frontend dev cry. And that’s fine. For a small project, where UI bugs aren’t dealbreakers, vibe coding works. But this would never fly in a mature product with real users and expectations.

Vibe coding is fine when you can afford to fail. But you'll never see NASA vibe-coding the navigation system for a spacecraft that puts astronauts on the ISS.

What Is AI-Assisted Coding?

AI-assisted coding is different. You don’t trust the AI blindly. You use it like a junior dev or a very fast pair programmer, you guide it, verify its output, and think critically at every step. Sure, it might take longer than vibe coding, but the goal is to produce results that match or even exceed your own expertise.

And it’s not just about writing code. AI can assist with all the unglamorous but essential parts of the job:

  • Writing and updating documentation

  • Generating tests

  • Reviewing pull requests

  • Drafting technical emails and status updates

  • Exploring unfamiliar APIs or libraries

You can also use it to simulate pair programming: bouncing ideas off the model, thinking through architectural decisions, and even catching edge cases during reviews.

Used thoughtfully, AI becomes a productivity multiplier, not just a code generator.

That’s what this newsletter is all about: giving you real-world ways to use AI that make you a better, faster, and more reliable developer.... without putting your job or product at risk.

This first edition was about setting the stage and explaining my take on vibe coding vs. AI-assisted development. In the next issue, I’ll share actionable tips I’ve tested myself, stuff you can use right away to boost your workflow.

But what about you? What’s been your biggest aha moment with AI? Or your most frustrating failure? I’d love to hear your stories!

Thanks for reading and stay tuned!

0
Subscribe to my newsletter

Read articles from Bogdan Bujdea directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Bogdan Bujdea
Bogdan Bujdea

Expert generalist • Independent Contractor • Microsoft MVP • Home Assistant enthusiast Hi there! I'm Bogdan Bujdea, a software developer from Romania. I'm currently a .NET independent contractor, and in my free time I get involved in the local .NET community or I'm co-organizing the @dotnetdays conference. I consider myself an expert generalist, mostly because I enjoy trying out new stuff whenever I get the chance and I get bored pretty easily, so on this blog you'll see me posting content from programming tutorials to playing with my smart gadgets.