My gosh, how things have changed
Tech today — software in particular — is almost unrecognizable compared to what it looked like when I left to become a chef. To give you an idea: one team I worked with had a massive backend server with constant, soul-crushing reliability problems. For months I tried to convince them to invest in a proper test suite, but every release came with enormous pressure to just ship. So we resorted to "firehose testing." If something was broken badly enough, it would surface immediately. Then we'd play whack-a-mole until things settled down.
It was exhausting, and it didn't work. I believed there was a better way, but there were never resources to do the hard work of fixing things properly. Every release was filled with anxiety. I remember multiple deployments where the server simply didn't come up. From our office in India, I'd watch the clock and count down the hours until people on the East Coast woke up to find things broken, and the P1 tickets started rolling in.
Nowadays, those problems are largely behind us. Modern coding agents write better code — along with functional, coverage, and stress tests — far faster than we could back then. Automated quality tools catch the null pointer exceptions that used to haunt us. When I first tried Claude Code, I was floored by how fast I could write scripts or even full-stack applications. I thought I'd died and gone to heaven.
Initial missteps
I was so impressed with the speed that I got overconfident. I started building gigantic apps with mountains of code. Everything was modular, tested, and statistically high-quality. The problem was I had skipped too many steps. I convinced myself I didn't need to understand these systems with the same intimacy I had twenty years ago. The key thing now was getting the prompt right — be meticulous about specs, push the tools hard to stick to them, and the right outcome would follow.
I was wrong.
I got a hard lesson in hallucination. My code worked, but in weird, over-engineered ways. I rabbit-holed into an endless cycle of polishing sub-features, and real progress ground to a halt. When problems came up, I couldn't get to the root of them. I'd fix one thing and watch a previous fix break. At one point I was convinced nothing had actually moved forward and that any new code would have to be written by hand. It turns out I was wrong about that too.
Back to the drawing board
The only way forward was the tried and true: I had to actually learn this stuff.
I needed to get current on new technologies the same way I did as a junior engineer — consistently, thoroughly, no shortcuts. I set a goal of two hours a day, every day. That technique has always worked for me, partly because I can endure anything for two hours, and partly because two hours has a way of turning into three, four, or eight. I started with online courses. Then small, focused apps that taught me specific things. I tried hard to keep my grandiose ideas in check — the monster companies I was going to build, the platforms that would change everything. It was time to get my nose in the code and do the unglamorous work of careful design and incremental execution.
It's working.
This stuff really works
What I'm finding now, on a daily basis, is how to use tools like Claude Code more effectively. Early on, I overcorrected and started hand-coding things I didn't need to. I fell back into old time-killers: formatting issues, syntax errors, the usual suspects that have plagued me throughout my career. I had trust issues. I didn't trust the tools, and I wasn't confident enough in myself to work through problems when they came up.
Confidence came slowly, through small wins. We all know that even the tiniest, hardest-to-spot error in a config file can break an app in the most maddening way. That was the first thing I handed off. I stopped opening files and copy-pasting changes myself. I told Claude to do it, then tested the result. That alone eliminated a whole class of errors, and I started getting more productive.
From there I moved up to bigger tasks — Terraform scripts, IAM, S3, Lambda, CloudFront. I spent a long time debugging a set of scripts once, using Claude to check my syntax and consistency along the way. Now I use those as templates, and Claude gets it right well over 90% of the time. I've gotten comfortable enough to trust it with agent programming, and I'm steadily getting better at producing Next.js pages that don't embarrass me.
I feel genuinely good about where this is headed. The mundane tasks are off my plate. I'm spending more time on design, architecture, and learning how the newer paradigms actually work. I'm more productive and I enjoy coding again.
What's not to love about that?