Pages

Apr 19, 2011

As some of you already know, I'm currently finalling a game called Space Marine. So it's obvious that everyone needs to shift to the Shipping Mindset.

The Shipping Mindset is basically about being extra careful on changes you make since everytime you touch something, there is chance that you break something else. Sure, normally it's not that bad. You can fix it sooner or later, but at this time, you wouldn't have enough time to test everything that used to work again. So what happens if a crucial bug doesn't get caught by the time the game is submitted to the first-party publishers, such as MS and Sony? You will fail at certification, and you will re-submit with the fixes. Not bad. eh? Oh, did I tell you that each submission easily cost the half of your yearly salary? Now you think it's bad? Hope so.

So, with the Shipping Mindset, this is what you MUST and MUST NOT do.

fix broken things only: As said earlier, any code you change might break other things. Please, don't risk your whole project for whatever excuses you come up with to fix things that are working fine.

do NOT beautify existing code to your taste: you introduce more bugs while you are moving around codes, changing 4 spaces to 1 tab, breaking a line into multiple lines and so on. Just make a note and fix it for your next game. Also I should say that if there's some coding style you don't like, but it's everywhere in the codebase, the chance is that most people in your company agree with that coding style. Maybe you are from the Wild West, but 21st century is not the time for a cowboy programmer to shine.

fix things that are not right to gamers(or testers), not to you: You found something that's mathematically wrong? Don't fix unless the end-users care about it. Did you know even Photoshop is mathematically wrong? Photoshop users don't care, and for the same reason gamers don't care about mathematical correctness. Instead, this math change could impact your fellow contents producers. "Hey, some math changed, so contents need to be changed too. Do you have enough time to fix all the arts you've been producing for the last 2 years? What? No? But it's mathematically correct." If you ever make this type of argument, you are being inconsiderate. Noone cares about your own satisfaction for being a math-wiz.

if you find something you think it must be fixed, talk to everyone who could be even remotely affected by this change: other people might have something more important things to fix. If that's the case and your fix adds too much burden onto other co-workers, it's better not to fix your bug.

I always thought whatever I wrote above is a common sense for any developer who shipped at least one game, especially on console. However, my belief has been proven wrong recently; for the last month, I was hit by numerous bugs produced by a self-claimed seasoned console game programmer and I had such privilege to investigate those bug to simply find out they had been caused by the missing shipping mindset of that programmer.

Programmers, please be considerate and be responsible for your code at least once when you are finalling. I seriously beg you.