I've been ranting about good code a lot lately, but something I've discovered is that a few of the most succesful companies out there have crappy codebases. This galls me a bit - it doesn't seem fair! But when I think about it, it makes sense.
The most important thing is you make a game that's a hit. You do that, you'll make ten, twenty times the revenue of the companies that are making average games. You might have a crappy codebase that takes fifteen minutes to build, that breaks whenever you introduce a small change because it's so badly factored, and that slows you down, sure - maybe it takes two or three times as much time and money to ship as it would if you had a slick engine. But since you're a hit-maker, you can afford it. And then you'll have the resources to improve your codebase post hoc, if you should so desire.
That said, am I going to start willfully writing crappy code? Of course not.
I had got into a discussion with a CEO of a company and when this topic was brought up of how important it was to have quality code he told me that just get your game out there first... Sure you may have insanely bad code that takes forever to manage, but then once you start getting money from that game then you will be able to offered time to go back and re-factoring... But really thats just bad engineering, even if you were under the gun that is no excuse to hack something together. If you really are a good engineer you should be able to work effectivly and quickly and still produce quality code. Honestly if you are going to write bad code, then this really isn't the field for you. He then also told me that the customer cares about the product not how pretty and manageable your code base is... This is all very true... But then their is also the side you have to look at all the technical debt you slow being to accumulate, it will be come harder and harder to push builds out, productivity will go down, your engineers will stop really trying because they just don't enjoy what they do... Sure you can toss more people at the project and if your a big company that works fine, but if you are a small company it makes it almost impossible to be successful. Also why should we encourage more bad software engineers? Being more of an engineer then business guy I want nothing more to enjoy my work and look at pretty code, and know that I can make a fix quick and effectively if something goes wrong or a feature needs to be introduced... So to get to the point I really feel that quality of engineering really matters! Sorry about the rant there :-P
Posted by: Joseph Burchett | August 11, 2009 at 10:52 PM
I too find it annoying that some of the 'best' companies have horrid code bases (and I've had to work with a few).
How about an idea though - what it takes to make a great game is lots of iteration and trying out different ideas. Throw away code and crazy prototypes.
What it takes to make good code is a well structured and thought out design that understands the problems and constraints.
Seems like these two forces are mutally exclusive ... :o
Posted by: Gwaredd | August 13, 2009 at 12:53 PM
I don't really think there is a correlation between code quality and successful games. A game being successful has a lot more to do with being fun, pretty, polished, sounding good, getting good PR, etc. than is has to do with whether or not the code is good.
Of course I'm personally going to try to write good code to hopefully make my life easier and to make it easier to adjust the code to make it more fun, be more flexible for the designers, artists, whatever but ultimately they have more to do with whether or not it's a hit then the programmers.
Posted by: gman | August 14, 2009 at 01:02 AM
I believe the the code quality has more to do with long term success then the initial game launch... I wrote a blog post going a bit deeper on the topic might want to check that out http://josephburchett.net/?p=115
Posted by: Joseph Burchett | August 14, 2009 at 07:50 AM