Archive

Posts Tagged ‘kiss’

Technical debt and game development

August 12th, 2009 Joseph Burchett 4 comments

Lets say you have a game idea, a really good game idea, with tons of funding and no worries at all, you are financially in a safe place and with a very strong and balanced team of programmers, designers, and and artists. A couple of months have passed by and your game is out and booming! I mean you are really making some serious cash, heck you are even about to break even. But then suddenly the money begins to stop coming in as fast… You begin to wonder why. You have the perfect team, everyone is top notch in their profession it just doesn’t seem to add up. But then you start looking to the forum and seeing comments pouring in talking about how the game is slowing down, bugs are being found and people are complaining about more and more issues. So of course you go and try and fix these problems, but then suddenly your developers begin running into their own problems. They are unable to easily track down a bug, things keep happening really randomly, hours upon hours are spent tracking down mundane issues, moving through waves and waves un-structured and barely documented code. This situation is what you would call being in
Technical Debt.

Technical debt is when you start loosing money because you are losing players from not being able to fix issues fast enough, or not being able to easily add new features fast enough. Now of course an argument can be made that a lot of really big company’s may have really unmanageable code and they are thriving and doing really well… This may be true but you also have to keep in mind that because whatever made them so successful was good enough to allow them to grow at an astounding rate they were then able to just toss more and more developers at the spaghetti code because they could offered it. But if you are a much smaller company you are almost always doomed to fail. Because when you are in “start up” mode you need to be able to effectively support and expand your game without issues and with as quick a turn around as possible.

A lot of people would also argue that in time once enough money has come in then they will then be able to sit down and begin re-factoring the code to make it work more effectively… But way to often people get in the mind set of “well, it does work… Ill just make it better later”, and they never get back to it! This makes for bad engineering and badly designed code. It is still very possible to dish out a product in a short amount of time if you train your developers to code in a clean and effective way; K.I.S.S. This is something honestly that a lot of so called “Software Engineers” are lacking these days…. Discipline.

By becoming more discipline it allows you to be much more productive because instead of having to wave through tons and tons of code you can look through simple, small and very clean looking code, this in turn making it super easy to find a solution to a problem. By doing things this way you also allow your developers to develop good coding habits and very effective code. When they begin to develop these good habits and practices it makes it easier to design a very loosely-coupled system, which in turn makes it easier to introduce new features into the game thus earning you money and making your users very happy!

To sum it all up it’s a very bad idea to think that just because you are able to get your game out there fast by simply slapping some code together in the end it will always come back to haunt you and possibly doom your project to ever having any type of success in the future.

All these thoughts are merely my opinions on the idea of technical debt and game development (or really any type of software development) I am sure many others share different ideas on the subject and id love to hear what you have to say. Also here are a couple of links to articles on how to optimize our code.

Round up of ActionScript 3.0 and Flex optimization techniques and practices
The Java Posse discuss technical debt
50+ important flash developers
.Net related but still good talk on writing good code

Although I have discussed in this post the down side to technical debt there can also be a good side to it all as well…  This excellent blog post discusses why you should “embrace technical debt” http://www.startuplessonslearned.com/2009/07/embrace-technical-debt.html.  Very good read.