When I first started as a junior programmer at Raven I was paired with another recent hire, Ste. Prolific and very bright, this chap was an import from the UK and had written code for several professional projects on a couple of different platforms I’d never heard of (what’s a Sinclair?). We worked shoulder to shoulder for several weeks on a helicopter enemy for Soldier of Fortune and I thought I was getting a feel for his strengths but it wasn’t until years later that I saw his true value to the company come to light.
Ste and I had been hired within weeks of each other and were put in a corner with the helicopter assets and told to make it fun. It seemed at the time to be half probationary period, half “we don’t know what to do with you two yet so just go make something and don’t bother the lead programmer for a while.” About the only thing I had over Ste was a slightly better familiarity with vector algebra. In every other sense he was quicker and more capable as a programmer. He actually wrote an entire scripting system that read an external data file so we could update the heli AI without rebuilding code. (Fact: he added so much code to the executable just for heli behavior that the programming department got an email from our tech lead one day asking what had recently been checked in that caused the executable size to go up 500k. This was in 1999 when the minimum system requirements were 64mb of RAM on a Pentium 233.)
As would happen at Raven, Ste and I drifted onto separate projects and I lost track of his exploits amongst the two dozen other programmers in the company. But I always held him in my head as this guy who was really good at churning out game code.
Fast forward maybe three years and Raven was in the throes of creating its first console title, X-Men Legends. As a company we had underestimated the resources and mindset required to shift into console development and the X-Men project rapidly ballooned not only in team size but also in technical infrastructure requirements. We needed to be cooking a ton of assets for Xbox Classic, PS2, and *shudder* Nintendo GameCube all the time without impinging upon the progress of the dozens of artists, programmers, and designers. It was a nightmare. That is, until Ste came along.
Now, I don’t know what kind of lengthy technical discussions were held behind closed doors leading up to Ste’s involvement. Maybe he had been in talks with our tech lead for months. And he probably had a fair amount of support from various other programmers that I don’t know about. What it looked like from my perspective, though, was that Ste almost singlehandedly created a tool that introduced distributed asset processing to our company and it absolutely saved our collective butt.
There were hiccups in the creation and implementation of the tool, but essentially it did this: BuildR (for thus Ste had christened it) ran a client on every networked machine at Raven that allowed a server app to farm out idle time asset processing onto everyone’s computer, allowing us to have daily builds with up-to-date assets without degrading anyone’s productivity. It may not sound like much now, but this was years before Cruise Control or any similar off-the-shelf solutions were available, much less in common use.
With the same intensity I had witnessed when we built the SOF heli, Ste constantly and rapidly integrated bits and pieces, tweaks and improvements. Eventually, the successor to BuildR, Fabric8, was used straight up through Unreal Tech days and beyond, building on Ste’s early successes on our first cross-platform console project and delivering vast swaths of functionality well beyond the system’s original intent. I can’t even begin to fathom how much money and how many developer-hours were ultimately saved by Ste’s work.
So here’s the main point of this post and the raison d’etre for the incredibly clichéd title: what if Ste had stayed a game programmer? What if he had never been given a shot at developing infrastructure systems? Would we have eventually hired dozens of extra personnel and spent a ton on middleware that kinda sorta did what we needed but wasn’t extensible to future projects? Would we have been able to turn out the sequels, X-Men Legends 2 and Marvel: Ultimate Alliance, in such rapid succession with comparatively small teams?
Somehow, this guy got a chance to shine in an area of strength apart from what had been his normal work. Maybe it was luck. Maybe it was good leadership to see hidden potential and provide him a chance to maximize it and turn it kinetic. But when I look at business decisions that encourage activities like Atlassian 20% I wonder how much more development success we could be seeing if more leaders made a point of taking Ste off of coding helicopters.