It has been said that poor craftsmen blame their tools. Whoever said that never had to develop a video game. At Bungie, our creative process benefits enormously from the tools we use to make games, and given the uniqueness of what we’re building, we often have to create these tools ourselves. That requires really smart people who can create helpful systems from scratch. One of those people is Josh Poley. Let’s corner him and make him tell us how he came to be a Tools Engineer, shall we?
Who are you, and what do you do at Bungie?
I'm Josh and I'm an Engineer on the Core Tools team. We work on general-purpose tools for the studio, with the goal of trying to make things run a little more smoothly around here. When our system crashes (which, of course, it never does), my application takes over and collects a bunch of internal data to make it super-easy for the developers to find and fix the bug. In general, we make it so our engineers can focus more of their time on the important parts of delivering a kick ass game.
It sounds like we would be lost without your talents. Where did we find you?
Working at Microsoft. The majority of my time was spent on the Operating System for the Xbox and Xbox 360 consoles. One of the cooler projects was being involved with the "emulation ninjas" who worked on the backward compatibility engine. I've also had my fingers in Zune, Windows Live ID, Project Courier, and the C++ compiler.
You are a man of many talents. When we are not putting them to work at Bungie, how do they manifest in your life?
Aside from things that look like work but aren't, I'm into photography, backpacking, and places that are hot (the Pacific Northwest has a pathetic excuse for summer).
It must have been hard to choose between all of these interests. As you were coming up in the world, was there one thing that you aspired to be?
An Astronaut. Then, I got addicted to computer games and decided that was probably going to be more fun. The moment that really cemented me into a development career path was reading "The Official Book of Ultima". The story around Origin definitely tugged on something in my subconscious, and I knew that line of work is where I belonged. Besides, it can get freaking cold in space.
I also hear that NASA’s training program can be a real pain. Describe for us the training that equipped you to blast off into the exciting world of games development.
I got a Computer Science degree in Boulder, Colorado. Possibly more important was an extensive amount of programming on the side. It was super-beneficial to find a random project and jump into it. Even if it doesn't go anywhere, the experience and knowledge you gain is invaluable. It is that kind of chain-reaction that bolsters your skills and abilities. Aside from coding projects, I definitely spent a bunch of time gaming. And, apparently, all that "research" into computer games actually paid off.
There are a lot of gamers out there who would love to claim that their time spent playing could qualify as on-the-job training. Once your “research” led you to this industry, how did you entice Bungie to size you up as an applicant?
I would like to think it was my awesome hair style, but it was probably more likely my passion for low-level software systems. Digging into the internals on operating systems, good debugging skills, working with compilers, and my experience working with the Xbox console software all contributed to help pique Bungie's interest.
Once we become interested in someone, we can be a little brash in the get-to-know-you phase. What was the hardest part about your interview loop?
Convincing Charlie Gough that I don't suck. I'm still not 100% sure that I succeeded. He definitely had one of the harder questions. He gave me a problem and left me alone to code up the solution. I thought through some possible approaches, and wrote up the best one I had. Charlie came back and said something like "Yeah, can you make it faster?" I was thinking, "Damn, I thought I did that." After a fair amount of back and forth (and some amount of hand holding), I realized what the solution was. It totally made my first approach look like a Pinto racing a Lamborghini.
Now that you are your own racecar in the red, what is the best thing about running our track?
The most rewarding thing is how much Bungie cares for its employees. Towards the end of March I ended up in the hospital and had to have surgery. The following week I was sauntering into work like a zombie trying to get caught up and my manager basically kicked me out (with essentially some free sick time) saying that it was more important to Bungie that I take the time to heal. That is definitely not something that would have happened with some of my previous managers.
We will need for you to be strong if you are to survive the development schedule for our next game. Give our readers a window into that world. What is a day at Bungie like?
I typically show up about 8 AM. I grab a couple of drinks from the fridge and get logged in on my box. After a quick browse through my news reader, I have about two hours of distraction-free work (spent mostly in Visual Studio) before more people file in. I try to get any big code changes checked in at this point. If there are issues, I've got plenty of time to sort them out. Shortly after 10 AM, the Core Tools team gets together for a quick standup in front of our status board. We talk about what each of us is currently working on. From there, it’s back to our pod where we dig back into our work. At about 12 PM, the studio typically empties as we flood the nearby distributors of sustenance. Following lunch, we've got about two more hours of coding, debugging, and coming up with wicked solutions to problems before the "coffee train" starts rounding people up. If I get sucked in, I will get an oatmeal cookie. I'm probably the only person in the Seattle area that can't stand the taste of coffee. The afternoon is typically spent addressing bugs, feature requests, and other spontaneous activities. Shortly after 5 PM, I turn off my monitors and head out the back stairs to go catch my bus.
You have done a wonderful job of proving that we don’t just sit around and play games all day. Of all the things that we do to make your hard work worth the effort, what is your favorite?
The presents we got during the holidays were super cool. The fact that Bungie gave presents to our families as well is simply amazing. For a day-to-day perk, the climbing wall is a total win. It's great to be able to take a break from a hard problem and go stretch my arms and back out on an equally hard problem on the wall. If you are familiar with the route markings at bouldering gyms, you won't see them here. Instead we've got "easy", "normal", "heroic", and "legendary" routes.
Aside from climbing to the top of a legendary climbing route, what is your favorite accomplishment as a member of the Bungie team?
One of the recent projects that I was able to slide into my schedule definitely resulted in the best work-to-praise ratio. Some of our developers have been asking for the ability to easily file a bug from a block of selected code in our development environment. Writing the plugin and a quick web page was fairly straight forward, but the response from the first two Bungie veterans to try it out was definitely rewarding: "Holy crap! Totally awesome."
Just like the rock wall, Bungie is always challenging people to ascend to new heights. How do you elevate your skills?
If there is a very blurry line between work and play, then you are on the right track. I spend a big chunk of my free time outside of work programming or playing games. The more you push yourself, the more you learn and the better you get.
Your story will likely inspire a great many coders to follow in your steps. What advice would you give them?
If you are going the developer/engineer route, you definitely need to know your C and C++. Those should be as familiar and comfortable as breathing. With a good foundation there, it is easy to pick up other languages and technologies, enabling you to use a good tool for the job. I also recommend being able to read through and understand assembly. There are definitely times when you will want to debug some gnarly problem, and being able to grasp what the hardware is doing on each instruction of your code can mean the difference between figuring it out or not. I would then toss in some networking, web, and database technologies to round things out.
Experience, Work Ethic, or Talent? Rank them in order of importance to your role.
They are all about as important as Food, Water, and Air. Without having the experience to back your ideas and decisions, your output can be limited. You need the ethic (and passion) to get in and crank through problems. And if you have no talent, well, then your output will be crap. But obviously having awesome team mates and an open environment can help balance minor deficiencies.
We thank Josh for giving us a window into his world. The stories that lead people to Bungie are as diverse as the people who work here. If Josh’s tale doesn’t appeal to your specific ambitions, you just might find an interview that suits your dream in our Breaking In Archive