Skip to the essays
All essays

Builds should never fail! (for long…)

After arriving to work and checking my e-mails I decided to check in on my previous team’s results on the continuous integration system. Guess what? The build had been broken for 10 days! Continuing to develop on top of a broken build is dangerous as typically an error in the build process hides several other …

After arriving to work and checking my e-mails I decided to check in on my previous team’s results on the continuous integration system. Guess what? The build had been broken for 10 days!

Continuing to develop on top of a broken build is dangerous as typically an error in the build process hides several other problems. Only the problem that causes the build to fail is visible, but that may only be the tip of the iceberg. Do you know if the current error is the tip of the iceberg?

Also, nothing justifies having a broken build. Don’t get me wrong, there are many excuses to have a build broken:
1- I’m sick, not at the office! (someone else needs to take the ball, that’s why the build results are available to the WHOLE TEAM!!)
2- I’m just too damn lazy! (humm, should this person be in the team?)
3- I don’’t know how to fix the build! (someone else needs to help!)
4- It’s ok to have that unit test fail because we are working on something that makes it fail for now! (If the build has been broken for more than a few hours this normally is a sign that you don’t know what you are doing because you can no longer assess the consequences of your changes!)
5- That unit test is obsolete, it should be removed. (what are you waiting for?!?)
6- Continuous integration sucks and I don’t care if the build is broken (there are bigger problems then the broken build in this team!)
7- I don’t believe that having continuously working software helps the development process in any way (boy, are you in for a religious fight or what!)

Even though I could come up with these excuses in just under 5 minutes, it does not mean that any of them justify having a broken build!

The continuous integration system is our hourly/daily feedback loop on the quality of the code that is delivered. If that stops working we are back to waterfall, even if an “iteration-length” waterfall instead of a “project-length” waterfall.

What happens at the end of the iteration if the build is broken until then? A lot of testing! Testing only at the end is bad because it destroys the visibility to your progress, and the continuous integration system helps you maintain that visibility by providing some “validation” on the code that you are developing.

If you are asking yourself “how could I avoid broken builds?”, take a look at this post.

Keep the conversation going

The essays work best in company. Join the community to keep the questions coming.

The #NoEstimates book and its companion volumes

Chapter 1 · Free PDF

What if better planning started with a different question?

The first chapter of #NoEstimates argues that the “deliver on time” challenge is answered by a different question. Read it, and see whether it changes how you plan the next piece of work.

Free PDF of chapter 1. No purchase, no library access. How we handle your details