A retrospective on agentic coding in 2025

A look back at the dawn of agentic and vibe-coding.

Updated
Dane Grant Dane Grant
Screenshot of juvy source code

It’s hard to believe that at the time of my writing this post, it’s only been about a year since the term “vibe-coding” was coined.

https://x.com/karpathy/status/1886192184808149383?s=20

I wanted to write a short retrospective on my experience with agentic/vibe coding over the past year.

I was an early adopter of Claude Code. I immediately found it to be incredibly useful. I wrote a post about the power of letting it control your computer and provided examples of some of the random things I was using it for.

In the beginning, I found it to be most useful for controlling my computer. When I did generate code, it was typically throw away or I spent a significant amount of time fixing it up afterwards. This seemed to be the experience of most people who were applying agents to real software projects (unless you scrolled Twitter).

Somewhere during the first half of the year I got an idea for a small project that I thought would be an interesting experiment for vibe-coding. I wanted a tool that automatically backed up configuration and dot files on my machine. The UX of the popular solutions for this problem were not amazing in my opinion. I decided to attempt to vibe-code a simple, hands-off solution of my own with shell scripts. I created a new project called juvy, if you’re going through middle-age as well you might get the reference.

I chatted with the LLM and landed on pretty simple design that used git and rsync to do the heavy lifting. I spent about a week on and off prompting and trying to get it to a good place. I was able to get something working but it was not solid. The testing setup never worked reliably and I ran into some strange bugs when using it. Most of the code was a single zsh script that ended up around 2k loc. It struggled to work and keep context in a single large file and overall the models and tooling seemed to fall short (skill issue).

My experience vibe-coding juvy fit in with a lot of the sentiment I was seeing online from others experimenting with agentic and vibe-coding earlier on in the year. You just couldn’t trust it to do serious work and if you actually cared about your codebase, you needed to aggressively micro-manage it.

Later on in the year after the release of Sonnet 4.5, Opus 4.5, GPT 5.2, the tides started to turn. It was fascinating to watch people who were previously campaigning against agentic coding coming around one-by-one. It almost seems like people are having a religious type of experience. Sometimes the AI can feel like it is some kind of miracle machine, it truly is incredible technology. Even the opposite of vibe-coding embodied Linus Torvalds, is finding a time and place to get his vibe on.

I decided to pick my juvy project back up a few weeks ago to see what the newer models and tools could accomplish. Within a short amount of time I was able to get the project to a place I was satisfied with. I was able to stabilize the test setup, rewrite the existing API in Bash 3.2 for cross-platform support, and even clean up the code base to make it more manageable and easy to work with. It’s a tool that I wanted for myself and I’m the only happy customer.

This is a simple use case, but I was able to walk away with a useful working piece of software without writing any bash code myself. I worked out the overall design and API with the LLM up front and it did the work.

If you haven’t experienced the miracle yet yourself, let me be the first to tell you: Agentic coding is here to stay. It’s still evolving quickly and it’ll be interesting to look back at the end of this year. There’s already glimpses of new patterns emerging for longer running agent loops like the Ralph and Gas Town. Claude Code has added experimental support for long-running agent swarms with Opus 4.6 and ran an experiment to have it generate a new C compiler on its own.

Meditate for a moment on the power of this technology. Tell your past self the not to distant future. Would you believe it?