probably.co.uk logo

Claude Code Is a Game Changer

1265 words, 6 minutes.

TL;DR

I built a web application using Go, HTMx and TailwindCSS using Claude Code. I wrote zero code myself. I am not a programmer.

The longer version

I taught myself to program as a kid, in the early 1980s, on a Commodore Vic 20. Fast forward a decade and I’m a year out of university, having quit my Computer Science degree, working in my first tech job. But it’s not a coding role — I’d decided at uni that I didn’t want to be a programmer. It was technical though, and frequently involved writing ‘glue’ — shell scripts and the likes.

The next 20 years were similar — no real ‘coding’ in the sense of building applications, but lots of scripting. I taught myself countless languages to solve small problems — Perl, Python, C, Go, awk. The list goes on. But it was all rough, and because I didn’t code day in, day out, I was slow.

When I stopped being ‘hands on’ technical, around 2014, I ended up in Product Management and Product Marketing roles. In the former, I could often ask better quality questions of coders I interacted with, because at least I’d been fairly technical.

Over the last decade, I’ve had a few ideas for products, but knowing I couldn’t really build them myself, eventually the excitement would die. I noodled with some programming again when ChatGPT came out in 2022, and over the next couple of years solved a few problems by steering it, then Claude, to write code for me. A bit of Go here, a bit of Rust there.

Then a conversation with a friend a few weeks ago prompted me to try something bigger and bolder. Said friend had a fun idea to build a new social network, based on writing haikus. There was, is, something fun about the forced structure that causes one to consider one’s words more carefully. Creativity through constraints, if you like.

I jokingly said to him — he’s none technical — that he should try asking an LLM to build it for him. Then said if he hadn’t tried it by the following week, I would.

Two weeks passed. I went on holiday. The idea kept running around my head, so I decided to see if Claude could put it together for me.

I’m no programmer, but…

I got quite frustrated with the tech industry a long time ago. On the whole, we’ve lost our way. Complexity rules, and there are so many overwrought solutions. Code is terrible — people use layers and layers, frameworks on top of frameworks, which altogether make things slower and horrendous to debug when things go wrong.

But that frustration drives me to strive for simplicity. Constraints in tech used to force it, but now compute is abundant, everybody got lazy. So I prompted Claude to work within constraints:

I’d like to create a fun ‘social network’. Fundamentally, every message has to be a haiku - so the front end needs to check the format works, and not allow a submission if it doesn’t. Given this is syllables, I don’t know how to achieve the checking. That’s your job :)

Otherwise, here’s what I expect:

Backend code is Go, using as much of the standard library as possible. If you have to use external libraries, pick the smallest (in terms of codebase) and well maintained. i.e. if there are two libraries, with one being smaller than the other, but the larger one is more recently maintained, go with the larger.

I want to minimise frontend JavaScript, so let’s use HTMx to keep it small and tight.

I’d like all CSS to be tailwindcss.

Initially, let’s use sqlite for storage, but code with it in mind that we might need to swap that out later for a proper RDBMS (which will be PostgreSQL). Don’t use an ORM - let’s just use SQL statements. Bear in mind they might need to change at some point too, so code them in such a way that it’s easy to maintain and easy to extend (think about database migrations, for example).

The first iteration worked, immediately! It compiled, and it looked great (minimalist, but great). Syllable checking was a bit hit or miss, and continues to be. But it’s easy enough to fix.

I put that first prompt into the Claude desktop app, but then thought I’d try Claude Code on it. This is when my mind was blown.

Continuing to iterate the application with CC, using just ‘English’ to make changes, I lost hours of an evening. Dare I admit, I was enjoying myself. I’d found ‘flow’. I don’t have enough experience of Go to know if it’s good code or not, so I asked another friend who can program. His verdict:

On the one hand this is miraculous for non-coders. It actually works, it’s a giant step forward from your first “Hello World!” application. Maybe that’s the way to think about it, this is the new normal for a first attempt at app development.

It’s pretty readable, easy to understand. Things are, more or less, named for human consumption.

Occasionally I’d look at the code, and if something obviously ‘smelled’ to me, I’d question Claude about it. For example, I noticed it was building custom CSS, despite me saying it should use TailwindCSS. Pointing this out, it quickly refactored everything. Right now, most LLMs seem to favour using Tailwind v3, understandably, as v4 only came out a few months ago. This also means a lot of LLM choices are flat out wrong. Luckily, Tailwind now has a sponsor program (essentially a subscription) — and as part of the initial offering, Adam has shared the markdown file he uses to steer LLMs. Adding this to Claude Code with a ‘read @file’ means it has guidance to use Tailwind as Adam intended.

The site has been running for a few weeks now. We’ve shared it with some friends to test, and it all works well. It’s running on a tiny virtual server, in a FreeBSD jail (continuing the theme of keeping things small and simple). We have plans for a ‘production’ release soon.

There’s plenty of negativity around LLMs replacing programmers. I don’t believe that. I neither think ‘AI’ is the panacea to all our woes, nor is it the worst thing in the world. As with many things, it’s more nuanced than either extreme.

For coders who think it’s nonsense and eschew AI altogether - they are cutting off their nose to spite their face. For the already highly skilled coders who look at using AI, they’re going to find their productivity massively sped up. They might not want, or need, to give all their coding to the AI as I have, but they could reassign some junior tasks. This is no different from using automation to scale skills. We’ve made that mistake before, and many technologists continue to make it - believing that technology will 100% replace people1. In many scenarios, this produces more inefficiencies. The reality is automation is just another tool that is best coupled with human skills to produce something even better. The whole being better than the sum of the parts.

Will the likes of OpenAI, Anthropic, et al. ‘enshittify’? Only time will tell. But I continue to believe optimistically in Anthropic’s motivation.


  1. https://en.wikipedia.org/wiki/Ironies_of_Automation “The designer’s view of the human operator may be that the operator is unreliable and inefficient, so should be eliminated from the system. There are two ironies of this attitude. One is that designer errors can be a major source of operating problems” ↩︎

✍️ Respond by email