One of the fundamental principles of agile development is continuous integration. I’ve always been a huge fan of agile development, but in my experience it doesn’t seem to be something put into practice in the game industry. A lot of developers speak highly of it, however sometimes for business or political reasons we programmers don’t always get to do things that way.
Martin Fowler, who in my opinion is one of the greatest experts regarding continuous integration, has many good articles on the subject. I love the concept and I like everything he says it should be, but will I ever get a chance to see it in action in my career? I’ve talked with co-workers in the past about it and tried to get it adopted but it’s a very difficult process.
Writing unit tests, documenting code, and setting up build systems tailored for continuous integration all require time. The time spent doing this might be considered wasted by managers, executives, or producers, because “the customer doesn’t see the code”, and thus is of no value to them. The thing they fail to realize, however, is that by implementing these practices, everyone benefits. Software is released quicker because it goes through shorter and fewer testing cycles- and we all know that time is money. Unit tests, while imperfect, provide a scalable level of coverage and can catch most of, if not all, the issues you will typically encounter in a product. Continuous commits to a version control system ensures fewer conflicts and quicker turn-around times for resolving issues.
There are a lot of reasons why a company should use continuous integration, and no reasons not to. There are a lot of things I don’t fully understand in this world and the reason why companies choose waterfall management over agile is one of them. As much as I’d love to cover every little detail here, I would only be redundant. Everyone should check out Martin Fowler’s website for some good reading on everything I’ve discussed here and much, much more. He does a much better job explaining it than I could.