Thomas Jiang

About Me

Projects

Writings

Notes

Infinity Ward Postmortem

05 August 2017

I just finished a ten week gameplay programming internship at Infinity Ward working on IW8 (which I am very excited about). As I am leaving, I am left with some still-coalescing thoughts about that experience.

Context is key

In the last couple of days of my internship, my manager remarked that he was going to fill my seat with a senior level developer. Pressing a bit further on the matter, I was told that the team doesn’t even consider hiring entry level (associate) gameplay programmers. This was in part due to a couple of factors. First, it was difficult to hire associates because it was difficult to gauge how well they could work due to their lack of prior experience. Furthermore, senior developers took less time to get ramped up into the project and could contribute more faster on the project, which was especially important on the tight deadlines that triple-A titles have.

I feel this is in part due to the lack of context that associates have. Over the summer, after I completed each task that I was assigned, usually over the course of a couple of days, I would realize that an existing member of the team could have completed the same task in a matter of hours. This was because much of the time I was spending on tasks was not actually spent solving the problem, but rather attempting to gain context on the problem. Every new bug involved a system I had never seen or touched before and it took me a tremendous amount of time to get enough context on the issue in order to figure out what to do. For instance, I did not understand how bullets, a key part of Call of Duty, worked in the engine and how bullet spread is calculated. So when I was trying to investigate a bug where the bullets were not spreading properly, I spent a significant part of the time debugging the wrong Bullet system and wondering why it didn’t work.

I imagine for more senior developers, gaining context on a new system or problem is not as time consuming as it was for me. I believe that part of the reason why it was so difficult for me to gain the necessary context to dive into the work was because I was still learning much more than the systems–the programming language, the client-server model, and the tools were all new to me and herd knowledge, not written documentation, was the main source of knowledge transfer.

Tools, tools, tools

‘I don’t wake up and think, “If only I could build a tool to help people share executables!”’

Speaking of tools, I left this summer with a deep respect for tooling. Tooling may not be the most glamorous job ever, especially in a game studio, but I have no doubt that tools developers are among the most impactful developers in the studio despite their jobs being among the least appreciated. Gameplay programmers will get praise for new mechanics and systems programmers will get praise for low input latency but tools engineers get complaints for new tools and also old tools. New tools will break existing workflows. Old tools will break. Despite all of this, good tools are incredibly powerful investments. Not only do good tools enable existing developers to work faster and happier but they also become more impactful the more people that use that tool. The way to see that this is true is by watching people when their tools no longer work. Even as a mere intern, I could feel my productive work hours slip away on the clock as I waited for tools to be fixed or restart after a crash.

So while tools programming can be especially challenging to do and recruit for, it is incredibly important and I developed a newfound respect for tooling and tools development after the summer.

Focus on Attitude

In one of the final weeks, Eric Hirshberg, the CEO of Activision (below Bobby Kotick, CEO of Activision|Blizzard), invited the interns to a meeting where he gave us advice. Although it had a rocky start, Eric gave a couple of bits of advice that coincided with some other comments made by other coworkers. Perhaps the three biggest phrases about attitude that I walked away from the summer with are: “Cynicism bats 1000”, “Care the most”, and “No assholes.”

The biggest advantage one can give oneself, according to Eric, is to have an amazing attitude. It is easy to be cynical. Everyone can relate to cynicism, for some reason or another, and it is easy to be cynical as a result of its extremely high social sucess rate. However, cynicism is cheap. Much like potato chips, cynicism is delicious, but potato chips aren’t a full meal. Instead, Eric suggests bringing passion instead. Passion may not bat 1000, but it will get results in the end. I’m inclined to believe that there is some truth in this statement. Passion can be contagious and attractive. Without it, I do not see projects being done. This goes hand in hand with “Care the most”. It is an incredibly difficult directive to accomplish, but it is an easy, memorable phrase that can remind one of the goal one sets in front of themself.

Finally, more than one coworker remarked that the fundamental rule is to never hire assholes. In fact, as he was leaving to pursue other opportunities, a coworker said in his final team remarks that he was incredibly thankful for the opportunity to work at a place with no assholes. This is for obvious reasons. It is hard to be an asshole if one cares the most and is also not cynical. It is not sufficient, but it goes a long way.

Magic is hard

I got second place, losing to my boss in the finals. It was kind of a let down, but I do not feel too bad about it. I had a ton of fun learning and playing Magic with my coworkers and I learned alot about card games in the process!