About

I'm a fullstack developer. Python on the back end, JavaScript and Vue on the front — the usual mix of APIs, background jobs, migrations that went badly once, and components that grew three props too many. For most of that time the job was typing: I knew what the code should look like, and the work was getting it out of my head and into the editor.

Then I moved to vibe coding, and the bottleneck moved with it. Typing is no longer the slow part. Describing the thing precisely is. I spend more of my day now on specs, prompts and CLAUDE.md rules than on implementations, and the habit that changed the most is that I write down why a constraint exists instead of just stating it — because a rule with a reason attached generalizes to cases I never thought to mention.

The other half of the job is review. A generated diff is easy to skim and hard to actually read, and skimming is how bad abstractions get merged. So the skills that carry over from years of writing code by hand turn out to be exactly the ones that matter: knowing what good looks like, being suspicious of cleverness, and insisting on a way to verify that something works before believing that it does.