Lead Software Engineer

Hi, I’m William.

Go · Backend services · Distributed systems

I’m a Lead Software Engineer based in Manchester. I mainly work with Go, backend services and distributed systems, leading projects from early technical decisions through to production while staying close to the code.

  • Go
  • Backend engineering
  • Distributed systems
  • Technical leadership

Experience

Professional experience.

A concise view of my experience. My work is described at a deliberately high level.

2026 — now

Independent

Tournely founder

Product strategy · Full-stack delivery · SaaS operations · Customer discovery
2025 — now

bet365

Lead Software Engineer

Technical direction · Go platforms · Team leadership · Cloud modernisation
2023 — 2025

bet365

Senior Software Engineer

Distributed services · Production reliability · Architecture · On-call
2022 — 2023

bet365

Software Engineer

Regulatory delivery · SQL Server · Operational tooling
2017 — 2022

Fujitsu

Software Engineer

Enterprise software · Test automation · Legacy modernisation · Mentoring

How I work

What I focus on.

Employer work is deliberately kept high-level here.

01

Building systems that stay understandable.

I mainly work on Go and .NET services, APIs and data flows. I prefer simple boundaries, explicit failure handling and code that is easy for the next engineer to change.

02

Treating production as part of the design.

Reliable software needs useful monitoring, sensible rollout plans and clear operational behaviour. I try to make those decisions during development, not after release.

03

Leading projects without stepping away from the code.

I help teams shape solutions, make trade-offs, break work into deliverable stages and learn from each other. I still contribute code, reviews and production support.

Selected projects

Products built around real problems.

A growing collection of independent products and technical experiments, from production software to focused developer tools.

01Live product

Tournely

Tournament management software that brings entries, draws, scheduling and results into one place.

Why I built it Tournament organisers were still coordinating complex events through spreadsheets and message threads. I wanted to turn that fragmented process into one clear workflow.

GoPostgreSQLGoogle CloudStripe
Open source
02Go CLI

MailSentry

An explainable email risk analyser that scores saved messages and shows exactly which warning signs it found.

Why I built it Spam tools often return a verdict without showing their reasoning. I wanted to explore a transparent, testable approach where every point in the risk score can be understood.

GoEmail securityMIMECLI
Distributed systems
03Go service

RelayForge

A concurrent webhook delivery service that persists events, signs requests and retries failures without creating duplicate jobs.

Why I built it Webhook delivery looks simple until receivers fail or clients retry. I built RelayForge to explore how Go worker pools, PostgreSQL locking and idempotency combine into reliable infrastructure.

GoPostgreSQLConcurrencyIdempotency
Tournely — Plan. Schedule. Compete.

Independent project

I built Tournely to replace tournament spreadsheets.

I built it after seeing how much tournament admin still happened in spreadsheets and message threads. It brings entries, draws, availability, court scheduling and results into one product for tennis, padel and pickleball clubs.

5clubs
200players
3tennis · padel · pickleball
1product from entry to result
Product capability map
Registration

Collect entries and availability.

Live

Players choose events, share availability and provide the details organisers need before the draw begins.

01Event selectionSingles, doubles and mixed
02AvailabilityDate-level constraints
03Entry windowConfigurable opening and closing
04Admin oversightOne reliable player list

How it was built

A production SaaS application built in Go.

Server-rendered Go, PostgreSQL persistence, tenant-isolated administration, secure sessions, subscription billing and automated tournament scheduling.

Visit Tournely

Select a component to explore its role.

Contact

Let’s talk.

If you’d like to talk about backend engineering, one of my projects or a role, email is the easiest way to reach me.