About
Architecture in service of product development
Software engineer with ten years' experience designing and evolving complex software systems. Experienced across software architecture, distributed systems, technical strategy and product development in both high-growth startups and large-scale engineering organisations.
I believe the best technical decisions are the ones engineers no longer need to think about. Throughout my career I've used engineering judgement, software architecture and technical strategy to remove incidental complexity, create coherent technical direction and build platforms that remain easy to understand, evolve and extend as organisations grow.
Principles
How I try to work
Architecture earns its keep when it removes decisions from the critical path of product work.
01
Build reusable capabilities
Prefer coherent platform capabilities over a collection of bespoke solutions.
02
Preserve autonomy
Reduce coupling so teams can make progress without coordinating every change.
03
Evolve incrementally
Improve systems in safe, deliberate steps instead of defaulting to disruptive rewrites.
04
Connect direction to need
Tie technical choices to the product and business outcomes they make possible.
05
Simplify the default
Judge success by whether the organisation’s normal way of working becomes easier.
Technologies
What I work with
Roughly grouped by where they sit in a system.
Languages
Backend
Frontend
Cloud & Infrastructure
Distributed Systems & Data
Also
A few other things
Languages