Recently, I’ve seen a lot of discussion around using AI agents to create software. IDEs and plugins supporting agentic workflows like Cursor, Windsurf, Firebase Studio, you name it... are becoming extremely popular. But there’s no clear consensus in the community on whether that’s a good or bad thing. Some praise them for a huge productivity boost, others blame them for producing an incredible amount of meaningless, non-maintainable code - a recipe for disaster in the near future. I hear voices of people that I know and respect and they are coming from both groups.
So where’s the truth? Maybe only time will tell, but I believe it lies somewhere in the middle. And “vibe coding” is not necessarily the (only) way to utilize AI Agents.
The Context
I haven't done any blogging in years, (maybe even decades), but the topic is so hot that even I cannot help myself and break the silence to share my own thoughts and experience.
Let’s start with a quick quiz covering my current situation:
Q: Do you use AI agents in your daily work?
A: Yes, I do.
Q: Do you use them for any client work?
A: No, I don’t.
Q: Do you use them blindly, without much thinking?
A: I hope not.
Q: Do they boost your productivity?
A: Yes, they do, but nowhere near the hype of "I built this website with one prompt in 10 minutes".
Q: Do they affect the quality of your code?
A: That’s for you to judge - feel free to check my GitHub. Personally, I still see it as my code, even if technically I didn't type all of it using my keyboard.
Q: Is what you do considered “vibe coding”?
A: No idea. I hope not… but I might not be the best judge of that either. Let me know in the comments. 🙂
What Do I Want to Build and Why?
I’m known as a self-taught programmer with multiple degrees (including a PhD) in civil engineering but zero formal computer science education. Everything I know, I learned from books, blogs, videos, and working alongside many highly skilled colleagues. My learning has always been pragmatic: I pick up what I need to build something specific.
That started early. In the '90s, I was “famous” (at least within my family 😄) for a few projects:
- A VBA script that made a button jump between cells in Excel.
- A FoxPro-based DB and forms for cataloging paper models (another hobby of mine) I built.
- A point-and-click adventure featuring my cousin Vovachka on a quest to kill the neighbor’s dog (yeah, sounds scary now 😬), written in VB6 (even more scary, right?).
- An attempt to create a computer version of the BattleTech board game.
I especially remember the last one. It was so much fun, my first hands-on experience trying to implement the things right (as they taught in the books), and having some primitive architecture in place. Although I got the first prototype working with a hex map, unit deployment and movement logic, I never managed to finish it. I just didn't have enough skills, experience and eventually motivation. So I abandoned the thing but it kept bugging me to this day.
That's why at some point last November, 26 years after the original attempt, I decided to give it another try – with some (AI) assistance this time.
Creating the game is not the aim, is kind of pointless: BattleTech is copyrighted and its IP is a mess with different companies owning different bits. Also, the thing I wanted to build already exists. MegaMek is a mature implementation that’s been in development for 20+ years. So the main focus is on having fun, and they say to pursue your dreams, right? 😄
With that, on the 1st of December 2024, I opened a Windsurf editor, selected Claude 3.5 and put in my first prompt:
Please create me a computer implementation of a BattleTech game, use MegaMek as reference.
Of course I didn't get what I wanted with 1 prompt and within 10 minutes, the prompt above is just a joke. Even after almost 5 months (and roughly 80 actual hours) spent in the company of an AI agent it still feels like the very beginning of the journey.
Why AI, and How I Use It
I’m a bit of a skeptic. The recent AI boom is largely thanks to the “rise of transformers,” but there’s not much “intelligence” in these models. They don’t "think", they just predict the next token based on prior context and probabilities from training data. Fundamentally, it’s not that different from labeling images.
I doubt we’ll reach true intelligence (hello AGI 😄) with this tech alone. That might require a new kind of model to make the next big step. Still, LLMs are amazingly good at what they are supposed to do, and text proofreading and code generation are among the most valid use cases to me. And a personal open-source project seemed like the perfect playground to give AI a try.
I’ve experimented with different workflows to fit my style and needs. And eventually it feels like it made me more productive. How much "more", I do not know. Definitely not 10x, not even 5x, 2x is a more realistic number, but there is no scientific way to say for sure. You spend less time typing the code, but more typing and tuning the prompt, reviewing and editing the output, and, what is also important, - consider all the time just waiting for the agent finishing its job...
Ultimately, it’s about a balance between speed and quality or more precisely, deciding how responsibility is shared between you and the agent. You can go faster initially by giving it more freedom, but that can quickly spiral into chaos causing delays later on. I think that “quick way” only works for tiny greenfield projects. The ones you can do in one day and won't be bothered maintaining or updating in the future. In my setup, I act more as an architect. The agent is just a coder, predicting relevant pieces of C# and XAML.
That way, the project stays 100% mine: my architecture, my structure, my usual practices, including using my 15-year-old libraries for MVVM and the transport layer.
To achieve this, I had to sacrifice a great part of that productivity boost you would normally expect using an AI toolchain, with multiple rejections of proposed code, adjusting the prompts, and refactoring or even implementing some parts manually writing the code myself or leveraging traditional "copilot" mode which is still relevant and in some cases even more useful than full agentic flow.
And the fact that I love to work with technologies not many other people are enjoying (.NET and AvaloniaUI) "helps" a lot. As sometimes the model just doesn't "know" how to write the Avalonia markup correctly, confusing it with other XAML frameworks' syntaxes, and I just don't have a choice other than fixing something myself. It might be better for those of you working with tech stacks where more training data is available. At the same time I would not rely on AI "decisions" in the areas where you're not very strong, as what it proposes could be (and in the most cases is) a good practice indeed, but it could be also just a "hallucinated" nonsense - you should always be able to tell the difference.
What Works for Me (So Far):
- Know exactly what you want to build down to technical details, so you can compare what the AI outputs to what’s in your head, and that leads us to:
- Review all code, written by AI thoroughly.
- Have unit tests for everything you can test. Many people also suggest following TDD. But for me, it really worked only if you create a test and implementation in different sessions: first ask to create a test, then create a new session, use the test as input/context and ask to implement the functionality. Otherwise, the agent tends to mess it up all the time anyway.
- Keep prompts focused. Break features into small tasks. Start fresh sessions often. Only provide enough context for that task. Context windows are still a limiting factor, and how they’re filled is a black box.
- Be flexible. You don't need to work with an agent for everything: in many cases utilizing your IDE's refactoring capabilities or relying on old good autocomplete mode make more sense.
I could dive into the technical details, but this post is long enough. Maybe next time, if people are interested.
Key Takeaway
The title says it all: control over speed.
That mindset resonates with another of my hobbies: flying FPV drones: it always starts very exciting but if you go too fast the chances to lose control and eventually crash are getting much higher. That's why I prefer calm cinematic flights over racing or freestyle. It works for me, however if you’ve got the confidence and skills, you can go fast and have more fun. Just know the risks.
Summary
So, is it worth it, even if it doesn’t make you 10x more productive?
Absolutely. It’s fun, it challenges you in new ways, and no, it won’t replace you as a software engineer. It’s just another tool in the toolbox.
My main concerns aren’t technical, but ethical. Energy usage, training data, all that. But hey, at least to me it makes much more sense than mining Bitcoin.