I'm a product engineer based in Manchester, UK. I've spent 20+ years building software in real product teams at BBC Sport, Sky, Electronic Arts, Equal Experts, Hopin, and NewDay β much of it practicing Extreme Programming and TDD.
Again and again, the real constraint on speed was confidence: can we change this without breaking what customers rely on? When the answer is yes β when a team can change its system safely, release without drama, and refactor without heroics β the business gets more options. That's the outcome I care about.
These days most of my code is written with AI β and that's made the discipline around the code matter more, not less. Fast feedback loops, tests that describe behaviour, CI/CD, domain language, clean boundaries, pairing, and close product collaboration aren't rituals to me β they're how I know the code is good, whoever (or whatever) wrote it, and how change stays affordable.
- .dotfiles β my AI-assisted engineering system:
CLAUDE.md, on-demand skills, specialised agents, TDD workflows, TypeScript guardrails, mutation testing. Started as personal config; now a public, working example of disciplined AI-assisted development. - scenarist β scenario-based testing for Express and Next.js. Run your real application code while controlling external HTTP dependencies through named scenarios β integration confidence without end-to-end pain. Published as
@scenarist/*packages on npm, docs at scenarist.io. - feedbackdriven.dev β my writing on product engineering, XP, TDD, and AI-assisted development.
- TDD as a design and feedback practice, not just a testing technique β in an interview I put it as "TDD is the reason I'm never stressed"
- Front-end systems that are testable without becoming brittle
- Refactoring as a continuous habit, not a special event
- Architecture organised around domain language and boundaries that absorb business change
- Mutation testing, because coverage tells you code ran β not that your tests would catch a bug
- AI coding tools inside disciplined workflows: tests first, strict types, review, quality gates
Day to day that's mostly TypeScript, React, Node, and Next.js, with Vitest, Zod, Docker, Terraform, and Azure around the edges.
The question isn't whether AI can write code β it can. It's whether your team has the feedback systems to know that code is correct, maintainable, and safe to change. AI is a force multiplier; your practices decide what gets multiplied.
So I've been encoding XP discipline directly into AI-assisted workflows β small steps, tests first, strict TypeScript, mutation testing, refactoring checks β and publishing the whole system as I go in my .dotfiles.
πΊ Watch: Agentic Coding + TDD β guiding an AI agent through a real feature, test-first.
- Software design with Paul Hammond β Code with Jason
- In conversation with Alex: Paul Hammond
- TDD at BBC Sport β Optivem Journal
I consult through Pack Software: technical product delivery, front-end TDD coaching, architecture for change, and AI-assisted engineering systems built on tests, typed contracts, review, and CI quality gates.
When I'm not obsessing over feedback loops, I'm obsessing over Manchester City β½ β or hunting down the best curry in Manchester.






