The city of Liverpool

 August, 2021 to April, 2024

Senior Online Services Programmer @ Firesprite

I'm working at a Sony studio on a ground-breaking, next generation PvP shooter project with a Games-as-a-Service focus

Responsibilities

  • Architecting reliable and robust back-end systems for an online AAA action shooter project using AWS, including Python microservices providing authentication, matchmaking, player profiles, ecommerce, and managing their associated resources such as security profiles, databases and event queues
  • Integrating with platform systems in Unreal Engine C++ as required by writing portable plugins that bridge the gap for game teams to features such as social presence, squads and voice communications from PSN, Steam
  • Creating bespoke administrative interfaces using web technologies Node and React to provide us with accessible, fine-grained control of server and player states
  • Automating continuous integration and delivery (CI/CD) of our systems using multiple version control softwares (Git, Helix), scripting via Jenkins, and Infrastructure-as-Code (IaC) to create an observable and scalable ecosystem
  • Liasing with game design, UI, and production teams using JIRA and Scrum training to break down and prioritise milestone tasks for the online team and determine how to achieve vertical slices in our cross-functional work
  • Liasing with QA to support bug triage and playtesting
  • Providing mentorship to programmers regarding technical and career aspirations
  • Helping create and manage client relationships by evaluating and integrating Software-as-a-Service (SaaS) solutions provided by international Sony teams and beyond
  • Actively supporting the diversity, equality, inclusion (DEI) group as a trained mental health champion

Definition-of-done

For any given piece of work, to own it from inception to a production-ready state, I may need to consider:

  • Suitability - research existing solutions and design the data in terms of what entities are being operated on, how they will be stored and accessed, and how they will be versioned to maintain compatibility
  • Security - use risk analyses, secret-management, defensive programming, auditing, and understanding of open-source models (OAuth, RBAC) to ensure principle-of-least privelege and GDPR is followed
  • Accessibility - use prototyping software to mock-up wireframes for the game client or an administrative panel to reduce assumptions between design and engineering na dprovide player-support
  • Availability & Observability - consider how the software will scale, how it reports logs and metrics in order to profile it
  • Testing and documentation - write automated tests to assert the integrity of the system, and describe it in process diagrams and knowledge-shares

A typical day

My typical day involves a stand-up with my cross-functional team to discuss progress, blockers, memes... design kick-off meetings for new features, meetings with third-parties to discuss integrations, and otherwise independent programming in whichever IDE best matches the language I'm using at the time - usually Visual Studio with SDK documentation open on another screen.

Since becoming a "senior", I'm also conducting pair-programming sessions, 1-2-1s and taking on drier work so I can boost the efforts of my mentees. Depending on the day, I might be presenting my work to seek feedback, often with QA via playtesting. Outside of work, I'm tending to my plants, or bothering someone somewhere with my fancy camera.

Achievements

NDA (sorry!)