Delivering Ranked

When Season 17 of Apex Legends launches on May 9, it will include the most significant work that I’ve been a part of in my nearly three years on the project. It is also the first time where I’ve clearly found my role as part of a larger team effort, rather than as a pure IC. I contributed to two of the core features that will launch with Arsenal and learned (and confirmed) a great deal about my strengths and weaknesses as a developer (and person). 

On Weapon Mastery, I played a large role early on, working as a technical architect and using the knowledge I’d gained over a year-plus managing and serving as the technical lead of Apex’s statistics framework. I helped to design and architect a system for Mastery that would keep a lot of the good features of our Stats system in terms of simplicity, readability, and – critically – extensibility while reducing a lot of the excess data storage and relatively large memory footprint. It’s hard – perhaps impossible – to completely reimagine an existing core system like statistics on a game as large as Apex, but Mastery represents a framework for the future that we can build upon more easily and with better performance. 

It was the first time I’ve ever gotten to architect a new system from scratch. In the past, all of my major architectural work has been refactoring – such as changing the route measurement system at Zwift from a run-time to offline calculation, or various reworkings to simplify and lighten the load of internals design systems on Apex to better serve the established – rather than imagined – need of our players. I did none of the actual implementation work – which was admittedly strange for me, but the resulting system is – overall – essentially exactly how we designed and imagined it technically in those early meetings, and I’m excited to see how our players interact with this new system and also how we are able to change, grow, and improve it over time.

I played a much more involved role as one of three engineers working on the complete overhaul of our Ranked system and was accountable for the success of this feature. I got to play architect a bit here as well and really enjoyed getting to reimagine the functioning of our Ranked system across our entire tech stack in what was certainly the largest and most ambitious “full stack” project I’ve ever been a part of, but my role here was at least as much as a builder, actually coding the technical framework I’d help to design. This was also the biggest overall endeavor I’ve worked on, as one of the team of three engineers leading on both the technical architecture and implementation side of the changes; while also working a bit as a technical producer, helping to manage tasks and support of QA teams; and picking up a hodgepodge of various tasks across our whole stack, working in multiple languages and systems (and not making too many context-switching mistakes… though there were definitely some).

After nearly six years working in game development, working on this project definitely cemented the sense of who I am as a software developer that I had been slowly building through my work at Slowtwitch. That sense of self picked up some speed at Zwift but was still heavily tied to my identity as an athlete. But it has dramatically accelerated and really taken shape working on Apex while simultaneously pursuing my Masters in Comp Sci at Georgia Tech. I’m immersed in development as fully as I was immersed in triathlon during my best years, and it’s given me a similar understanding of who I am, but with the added perspective of hindsight. 

Like Isaiah Berlin’s fox, I am happiest and at my best when I know a lot of things. I think this is why I enjoy software architecture so much. Deep expertise – especially in a language as complex as C++ – is still something that I need to get better at, but I enjoy being able to work across the full stack in multiple languages and to think more broadly than deeply. The common element of both big projects I contributed to is that they are systems. Technical design of systems requires a broad understanding, and it’s this sense of how all of these various pieces can – and should – interact that I enjoy, but what truly motivates and excites me the most is actually building those interactions. What I love about game development is that you can imagine something remarkable and then actually build it. When I was in college, I chose mechanical engineering over computer science, because I wanted to make “things.” But having spent most of my adult life developing software and only very little constructing physical objects, I now realize that software is a “thing.” And it is magic.

The new Ranked system is incredibly involved, and we put together a great deep dive on the changes that we’re making and the goal for the game and the players. While there’s a part of me that is nervous to see this go live, I am even more excited. Like any big test where you actually get the chance to finally show off the hard work that you’ve put in, the true test – and the thing that makes it valuable, rewarding, and admittedly scary – is when you actually need to perform. 

While launch day isn’t quite like race day, there’s that same feeling of anticipation and excitement. As Steve McQueen says, “Racing is important to men who do it well. When you’re racing, it’s life. Anything that happens before or after is just … waiting.”

Leave a comment