Google Trends suggests we’ve reached peak vibes. This is presumably down to “vibe coding” – a term coined by Andrej Karpathy a year ago. Like many others, I noticed a step change in the coding abilities of AI models in December 2025 with the combination of Claude Code and Opus 4.5.
LinkedIn is now awash with slopfluencer predictions about the death of software engineering. Deep expertise in any specific language or framework is certainly no longer an effective career moat. The default level of abstraction is moving up a layer and it’s happening fast. I imagine this is how it would feel if you were writing Fortran on punchcards in the 70s and somebody handed you a MacBook with a Python interpreter.
The best engineers will tell you that typing code has always been a means to an end. Wherever we’re headed next, I don’t think we’re going to need less software. I’m writing down a few experiences as a snapshot in time. Three years after ChatGPT went public, it feels like software engineering has finally crossed the Rubicon. The craft will look very different a year from now.
What I’m building
I’ve always built things outside of work – to learn, to use, or to pass time in front of the TV. These are just pet projects, so the key success metric is fun. I’m definitely having more fun.
Inky stocks
I made Inky Stocks with Cursor in February 2025. This was my first exposure to coding agents. I’d already used super-autocomplete in early versions of GitHub Copilot and pasted the occasional code snippet into ChatGPT for debugging. Both were helpful, but Cursor was the first glimpse of something game-changing.

The project is powered by a Python script. I’m fairly comfortable with the language, but I’d have spent hours selecting dependencies and reading docs without some AI help. I reckon Cursor did about 70% of the work. I still reviewed all of the code, prompted many refactors, and made layout tweaks by hand.
tripm.app
In January I realised how much of my life I’d spent standing in line at the US border. I applied for Global Entry, which involves remembering every country you’ve visited in the last 5 years. I suppose I could have handed Claude the keys to my calendar and asked it to trawl. I decided to use Claude Code to build a privacy-conscious utility instead: tripm.app.

This was my first true vibe coding experience. I probably only read about 20% of the code and I made zero manual code edits. Building this myself could easily have taken a week. I got something working well enough to solve my problem in an hour, and then I had loads of fun playing product manager to make it useful for other people.
Arrivals
Arrivals is an older project, but I’ve been using Claude Code to add new features. This is the most complex codebase on the list. It’s a Kotlin Multiplatform project with multiple public transit API integrations and multiple UI targets (macOS toolbar app, CLI, etc.).

I used Claude to add support for UK National Rail. It was able to follow established patterns easily, but the a-ha moment was when it searched the web for API documentation and listed the pros and cons of different approaches. I could have spent hours researching before laying down a single line of code. Claude got me to a 90% first pass in 30 minutes.
jdamcd.blog
This blog is a static Hugo site. I used a generic open source theme for years but I didn’t love it. I gave Claude Code a 3-sentence description of what I wanted (minimal, muted tones, centred column content etc.) and it produced a 60% version in 2 minutes. It took perhaps 2 hours total to tweak the result until it matched what was in my head. I’d simply never have gotten round to doing this by hand. I definitely wouldn’t have added a fun 404 page if it would have taken more than 2 minutes.
(I still start every post from a blank page, but I’m using Claude to find typos and suggest copy edits. I know there are probably some em dashes, but hey, I married an editor and sometimes I even read books.)
At work
AI tools are starting to change how my teams build software at work too. Sometimes an engineer types code by hand. Sometimes they use AI tools on their local machine. Sometimes they ask an agent to open a PR from Slack. I don’t think of this as vibe coding, though. Every change passes through the same rigorous framework of code review, automated testing, and production monitoring. It’s not vibes-based, and that’s a very good thing when you’re building a bank.
I’m also using new tools as a manager. I’ve used Claude Code to self-serve questions I would have asked an engineer. I’ve used Gemini to build SQL queries in our data warehouse. I’ve used NotebookLM to generate workshop materials. If I’m writing an operational doc (like a meeting agenda), I find it’s faster to edit a draft from Gemini. If I’m writing to think, I’ll still start from a blank page.
How I’m building
Right now, I’m using Claude Code exclusively for my personal projects. I hit the Pro plan usage limits now and then, and this has shaped parts of my workflow. I haven’t felt the need to run multiple parallel agents with Git worktrees. However, I have started to tailor behaviour via CLAUDE.md instructions, sub-agents, and skills. I’m going for quality over quantity.
Making plans
I use plan mode for all non-trivial tasks. I’ve found it dramatically reduces rework. I normally use Opus to make plans and then switch down to Sonnet to save tokens on the implementation. I often tweak the plan in a text editor via Ctrl+G. If I’m making lots of small changes, I’ll just give the model a to-do list in markdown so it can work uninterrupted for longer. If I know Claude is going to time me out, I’ll generate a plan for something and come back later with claude --resume.
Prompting
Today’s AI models are extremely good at generating new code. Out of the box, they are not very good at:
- recognising when code has become complex and needs refactoring
- removing dead code from earlier iterations
- telling you when you shouldn’t build something (e.g. performance or maintainability trade-offs)
- writing targeted tests (i.e. focusing on project code over dependency behaviour)
- running tests after making changes
The good news is that once you know what to look out for, the models do a decent job of all these things when prompted.
Is vibe coding punk?
Rick Rubin said that vibe coding is punk rock on the A16Z podcast. I know that’s a cursed sentence, but bear with me. I think it’s true that coding agents represent a powerful democratising force. Claude Code is already good enough for somebody with zero programming experience to build a simple app or website.
I asked Claude what it thought about the punk rock analogy. It generally agreed, but it also reminded me that the Ramones wrote and performed all of their 3-chord bangers while Claude Code writes and executes the code.
This could go a couple of different ways…
Creativity flourishes
The early web was weird and wonderful. Maybe we’ll get a spiritual successor to GeoCities for vibe coding: everybody making and sharing their own apps, games, and websites because the barrier to entry is so low. Many of them will be a dude playing Wonderwall at open mic, but a few will be more like Joy Division or Geese or whatever the kids are listening to.
Agents do everything
The alternative is that agents become the default interface to accomplish any task. In this world, most software is a utilitarian script generated on the fly to solve a problem you described to your personal AI assistant. This feels less punk.