I’ve worked on many applications in my career. I feel fortunate that most of the applications I’ve written have shipped to customers. That’s not always true, particularly in the game industry.
There was only one game that I worked on that didn’t ship. Here’s the kicker: I wrote the best code in my career for that title. I was working for a small startup on a MMORPG, and I was the second programmer hired. At that point in my game programming career, I had already shipped multiple titles at multiple companies. Here was a unique opportunity to take all that I knew and apply it from the foundation on up.
We used the best tools available. We automated everything we possibly could. We built unit tests for everything. We applied the latest source code analysis tools to detect bugs early. We used source documentation tools to create automated web docs. We did code reviews. We were programming gods.
Yet the game didn’t ship. There were lots of reasons why. The design was too ambitious, for one. The company ran out of financing, too. But I can’t help thinking that if we’d used a bit more of the Duct Tape Programmer mentality, we might have actually shipped the thing. We didn’t necessarily over-engineer the code. We were very focused on only writing code that was essential to the game. But we did lose sight of the fact that shipping is the most important feature of all. As Jamie Zawinski says, "you’re not here to write code; you’re here to ship products."