The value of having continuous integration of your code is everyone knows when someone broke the build. The two most common errors are forgetting to check in all the changed code from someone’s desktop or forgetting to run the whole test suite before checking in.
There’s a tiny bit of guilt associated with breaking the build under normal conditions. Then there’s the times that make you scratch your head.
Like, the developer who checked in a single java class with the compelling CVS comment:
This doesn’t compile.
Then there was the retort long ago from another developer who had broken the build by forgetting to check in a class. It turned out the class he hadn’t bothered to check in that was being referenced in other classes didn’t actually compile. He sent a cryptic email explaining this:
I can check in the class if having an unused non-compilable class in CVS is a problem for you guys.
Only problem was the ‘unused’ class had several references to it in the code. Strange understanding of unused.
They do make for good war stories.