Software Engineer
April 2026 - Present
I currently work at giffgaff as part of
their newly formed Broadband team, building the order fulfilment platform that
takes a member from placing a broadband order all the way through to a completed engineer
installation and live service.
The stack is Java (Spring Boot) microservices running on Kubernetes, communicating
over Kafka and backed by PostgreSQL. Because the domain is new,
there's been a lot of genuinely greenfield work — I recently architected cross-service
support for a new Rewards product domain spanning three separate services, which meant
extending a shared company-wide API contract, reworking the central product catalogue's domain
model, and designing a product-sync capability from scratch. Making the call to build it
event-driven rather than follow the legacy HTTP-triggered pattern — and then having to evidence
and defend that decision — is the kind of ownership I've really enjoyed here.
A lot of my time goes on reliability and observability. I built a Kafka producer
that captures upstream error codes into Snowflake, with a
Streamlit dashboard on top, which gave the business its first real view of which
upstream rejections were causing members to fail repeatedly when rebooking appointments. I also
hold on-call responsibility for the services I build, and care a lot about
testing — using mutation testing alongside line and branch coverage, and writing
Cucumber feature tests that describe behaviour in terms the whole team can read.
Something I've found particularly interesting is AI-assisted development. I
undertook a five-week Claude
Code rollout across the team, working out where these tools genuinely help, where they don't,
and how to adopt them without quietly eroding code quality or review discipline.