Build Tools buyers guide

One of the pillars of modern software development is to build frequently and automate everything, to the extent that some teams constrain code check-in so that code that will not build cannot be checked in. Automation is critical for a couple of reasons. The first is to save time and avoid errors, but it goes beyond that. If the build is fully automated, then the scripts that perform the build can be treated as part of the code and so subject to version control, testing, refactoring and the like. Automated builds are also an essential step towards continuous integration, where code is checked in frequently and successful builds verified. If developers make conflicting changes then the problem is found immediately and can usually be easily fixed.

By contrast, if developers work separately on their parts of the project for an extended period of time before checking in their code, then there is a higher chance that conflicting changes elsewhere will break the build. Because the changes that caused the conflict may have been made days or weeks before, they are inevitably harder to find and fix.

Blogger Jeff Atwood calls the build server “Your project’s heart monitor” while Martin Fowler at ThoughtWorks notes: “Projects with Continuous Integration tend to have dramatically less bugs, both in production and in process.” You do not have to embrace the philosophy of Continuous Integration in order to take advantage of a build server, but you cannot do so without it.

Read more about build tools.