Twenty-eight years of building enterprise software has taught me that the hard problems are almost never the ones on the whiteboard - they're the ones lurking in the interfaces between systems, teams, and assumptions. I specialise in distributed systems that remain maintainable long after the original architect has moved on, and I'm equally comfortable stepping into the role of architect, technical lead, or senior developer depending on what a client actually needs.
My stack is primarily C#/.NET with a strong cloud-native bent (Azure and AWS), but I've been around long enough to know that the stack is rarely the interesting part. What matters is whether the thing works, whether it keeps working, and whether the next team can still understand it in two years' time.
- Deep expertise in backend systems, asynchronous workflows, event-driven architectures, and CQRS
- Hands-on technical leadership in high-stakes delivery environments, including national-scale public services
- A pragmatic eye for which engineering practices genuinely help ship software, and which are cargo-cult theatre
- Mildly evangelical about technical excellence, sustainable pace, and software that lasts
I currently hold a primary contract and am open to additional part-time or fractional engagements - a day or two a week suits me well alongside existing commitments. If you're wrestling with a distributed systems problem, an architecture decision that doesn't feel quite right, or a delivery that needs a steady pair of hands, I'd be glad to hear from you.




