Almost three weeks ago, I participated in an internal AI hackathon.
The idea was simple: one day to work on any work-related project, with one constraint — rely almost entirely on AI to do the work. Code generation, design help, scaffolding, naming things, documentation, the works.
Naturally, I didn’t pick something easy.
I decided to refactor a core part of our system — something foundational, messy, and grown over time.
You know me — if there’s domain complexity, some bounded context hairball, or a little #DDDesign chaos to untangle, I’m in.
It was the first time I leaned this heavily on AI in one go.
Here’s what I learned.
If someone tells you AI is writing ALL their code — be skeptical.
In some corners of the internet, it sounds like AI can just build entire systems from scratch.
In reality? If AI is writing everything for someone, either the task is trivial, or they’re cutting corners you probably don’t want to cut.
In my case, the domain was non-trivial, the logic nuanced, and the boundaries blurry. I quickly realized that while the model was helpful, I was still the one doing the real problem solving.
AI helps with small tasks — if you supervise it.
AI can sometimes understand enough context to be useful. It can propose working code, especially for self-contained, well-defined changes. In those moments, it genuinely accelerates you. It reduces friction. You spend less time writing boilerplate or searching for that forgotten library method.
But even then, you can’t run it unchecked.
Everything needs to be reviewed. Sometimes heavily. It makes small mistakes that are hard to spot until they break something later.
For complex changes, it gets... slippery.
As the complexity increases, things start to fall apart. It forgets instructions. Reintroduces mistakes you’ve explicitly corrected. You fix your prompts. You simplify the problem. You try again.
It seems to work — until it doesn’t.
There’s this uncanny loop: you point out an issue, it acknowledges it, fixes it… and then, twenty minutes later, it does it again. You start to feel like a babysitter.
It feels like working with a junior developer — in a good and bad way.
At some point, I realized what it felt like: pair programming with a very eager, slightly chaotic junior developer. One who has good instincts, knows some patterns, but hasn’t seen enough real-world code to be reliable yet.
There’s something charming about it — the energy, the speed, the creativity. But also: the constant need to check whether something just caught fire.
And yes, I spent a lot of time cleaning up after it.
It did help me see some things I hadn’t seen.
This part surprised me. Despite the friction, it surfaced a few interesting design alternatives — conceptual directions I might not have considered immediately. It wasn’t consistent about it, but sometimes, it unlocked something.
That said: it couldn’t follow through on those ideas. The leap from insight to working implementation was too far. At best, it gave me a spark. But I had to take it from there.
It’s not a magic pill. But it’s not useless either.
After that day, I came away with a renewed perspective.
I don't think AI is useless. Far from it. It’s a powerful tool when used correctly — especially for bootstrapping, repetitive work, or getting unstuck.
But it’s not autonomous. It’s not going to replace thoughtful, skilled engineering anytime soon. Not in complex domains. Not when the stakes are high.
We’ll probably see better models, faster iterations, more specialized agents.
We might even get to the point where we supervise less — or we get better at supervising a lot more with the right safety nets.
But today?
AI is not the magic fix.
It’s not the silver bullet.
It’s just another part of the modern software toolkit.
Know what it’s good for.
Know where it breaks.
And most importantly: know when to say, “No thanks, I’ll do this one myself.”
Have you tried something similar? I’d love to hear what worked for you (or didn’t).
PS.
Take a look (and get free ebook) at my "DDD/CQRS/ES Applied on JVM with Axon Framework" course, which I am (very slowy) working on: cqrsapplied.pl
Comments
Post a Comment