28 February 2010
When working on any software development project, it is fundamental to be able to compile, package, deliver, and track the project output. But quite often, this area is overlooked and all of the design efforts are put toward managing the complexity of the software itself. This often leads to an ad hoc build script that gets more and more tangled and unmanageable as time goes on leading to valuable development time being wasted on non-deliverable items. As the project moves into production, the problem usually grows even more out of control as additional branches are required in the source control system, and nearly duplicate build scripts are required for each of the additional branches. Eventually a build strategy without a defined architecture or clear procedures will collapse under its own weight.