In late 2004, I was consulting at one of the big American auto makers, alongside a good friend of mine, Aslak Hellesoy. It was a challenging assignment, chock full of difficult political situations, technical frustration, and crushing deadlines. Not your ordinary deadlines either; they were the type of deadline where the client would get fined a million dollars a day if we were late. The pressure was on!
In a moment of questionable judgment, the team agreed to base our continuous integration system on a pet project of Aslak’s named DamageControl. It was a Ruby-based version of the venerable CruiseControl server produced by our employer, ThoughtWorks.
The problem was that DamageControl wasn’t quite what you’d call a finished ...