This title is in honor of the great Analog Engineer, Bob Pease, who helped me learn that as an engineer, you're never done learning...
Continuous integration is a beautiful thing! A practice only new to me as of about a year ago, continuous integration (CI) allows for code to be built as soon as it's checked into your Version Control System (VCS).
So why is this important? Imagine, before continuous integration, broken code (i.e. code that does not compile) would be checked into VCS and no one would know about it until another developer would check the code out and attempt to build. Only then would the second developer realize there was an issue, and have to scramble to either fix the issue or find the developer responsible.
Even a good developer who verifies their code compiles at their desk still forgets to add a file to version control every now and then!
How does it work? At the simplest level, a continuous integration software application watches your version control system, checks out the code after a push, and compiles. That's it. Pretty simple, right?
It doesn't just stop there, almost anything as part of your build process can be added to your CI server: static analysis, unit testing, functional testing, publishing artifacts (e.g. binaries)...
What stuff is out there? TeamCity, Jenkins, Hudson, Travis, Bamboo to name a few.
Our code for Chirp GUI is out on GitHub, and I'm looking at using integrating Travis as our continuous integration tool.