Coding in the Age of AI - Lessons From a Year With AI Assistants

Over the last year, I’ve spent a large portion of my working hours interacting with AI assistants. Since we mainly use JetBrains products, this has meant working with the integrated AI support powered by either ChatGPT or Claude Sonnet (No relevant experience with agents yet). Here are some of my observations after a year of using these tools in practice.
Prototyping Has Become Awesome
I’ve never been the biggest fan of strict Test-Driven Development or sitting through endless meetings about requirements and designs. My best ideas usually emerge from writing out my thoughts in code, iterating with clients and hacking away at them until only the necessary and essential parts remain.
AI assistants have made this process much easier and more enjoyable. The cost and effort required to prototype something have dropped significantly. I can now explore different approaches and designs quickly, spotting trade-offs much earlier than before.
For UI-heavy features, this becomes especially powerful, you can generate several design variations in minutes and simply ask clients which one they prefer, instead of fumbling around with clunky mock-up tools.
Learning new things is way more fun
Somewhat related to my previous point, learning with a top-to-bottom approach has become much more enjoyable now that everything you need is right inside your IDE with an AI assistant. There’s no need to dig through obscure blogs, outdated books, or closed Stack Overflow threads.
AI has also made me more ambitious with my recreational programming - my ever-growing graveyard of side projects - because I know I can make tangible progress on a quiet Sunday morning even in subjects I know next to nothing about. Will the result be any good? Probably not. Do I fully understand what I just built? Also questionable. But that’s not the point. The point is that I started, built some momentum, and left myself the option to dive deeper later into the parts that truly interest me. Pre-AI I wouldn't even have started because I would have talked myself out of even trying.
Hard Skills Will Remain Essential
It’s often said that programming itself isn’t the hardest part of building production-grade software. Modern LLMs can indeed one-shot solutions that would take experienced developers hours to craft. But that alone is nowhere near enough to replace software engineers.
A codebase is never just code. It’s a graveyard of past decisions, quick fixes, forgotten to-dos, and compromises - many driven less by technology than by politics or the need to keep the peace with teammates. These choices often sprawl across systems and company processes that feel like they’ve been around for centuries. Navigating that landscape is something current LLMs simply cannot do without substantial human guidance and expertise.
And, of course, a solid grasp of fundamentals remains invaluable. Many “vibe coders” have learned the hard way that you can’t bullshit your way through fundamental laws of physics or securing your application. Meanwhile, the seasoned developer who knows their stuff will quickly learn to craft effective prompts, critically review the AI’s well-scoped output, and put guardrails in place, preventing everything from resulting in an unmaintainable mess.
When you hand off your critical thinking to AI Assistants, your codebase will become riddled with a million "salmon in the river" type bugs that no human would ever write, but might just be tricky enough to spot in a sea of code changes.

Looks good to me!
Have I Become More Productive?
Maybe. It’s hard to say and as we know there is currently no way to really measure this. On the one hand, I’ve been able to automate a lot of grunt work with AI. On the other hand, I’ve also wasted plenty of time throwing the kitchen sink at my AI assistant, trying to force solutions that were never the right approach in the first place.
What I have noticed, though, is that my features have grown larger and more robust in scope. That’s mainly because I can now tackle all the “should-have” requirements that I would have previously cut, simply because they can be finished in a reasonable amount of time with AI’s help.
Something Ends, Something Begins
I’ll admit that over the past year I’ve wondered whether my skills would still matter a few years from now. The endless hype and fear-mongering on social media certainly didn’t help. After experimenting with AI, most of those doubts have eased, but programming in a post-AI world will never feel the same as when I started over a decade ago. That isn’t necessarily a bad thing, but it does feel like a piece of what made programming so enjoyable has quietly faded away.
Some parts of my skillset will inevitably become obsolete. I still struggle finding flow state more than before, knowing I can always ask my AI assistant for an opinion on every small decision. The constant nudges, the seconds spent waiting for an answer - they chip away at the immersion that used to make coding so satisfying.
The era of coding alone is over. We now code with machines at our side, for better and for worse. The question is not whether AI will change programming, it already has, but whether we as developers can adapt without losing the things that make our work fun and meaningful. Tools evolve. Skills evolve. The craft hopefully remains.