Wednesday 8 July 2009

The Importance of Removing Impediments

What is an impediment?

I do not actually know, because it is such a difficult word. But what I do know is that the time I have to wait for a build to finish is not productive for me. It even costs the customer money. This is for me an impediment.

If the time it takes to build the application is too long it starts imposing challenges on me. When it takes too long I do not want to build too often.. If i do not build too often, the tests is not run often and I will not commit code very often. This leads to finding bugs much later than I normally would have if I had ran the build more often. So I use more time fixing the bug because I have produced much more code since i made the bug somewhere in the huge codebase.

Did you get it? If not let's run som numbers on it instead. Lets say that it takes 8 minutes to build and that you use most of the resources on your computer while doing it. The best you do is drink a cup of coffee or read up on some documentation while you wait. Let's say you do the cup of coffee and wait for 8 minutes to see if the tests fail or pass. Its not only you in the project, but ten people that does the same thing. We all do it 2 times a day, because it takes so much time and we dont like coffee that much. We do it every day of course. So the numbers become:

8 minutes x 2 times x 10 people x 5 days = 800 minutes = 13.3 hours

Not only does it take you 16 minutes a day to build, but it takes the whole project 13.3 hours to build a week. Let us then say that you work 40 weeks a year and your project runs for 2 years.

13.3 hours x 80 weeks = 1064 hours

So during the lifespan of your project it has been used 1064 hours for running the build. What if those hours could have been used to implement more functionality because you have so much good code that your build did not take any noticable time at all. Imagine that the cost where 1000 NOK per hour that would amount to 1064000 NOK used on build/coffee during the project.

1064 hours x 1000 NOK = 1064000 NOK

That is not just an impediment to me, but to the customer. Build time matters! So remove those impediments while you still have time left to do so. If you are not busy building the application of course...

3 comments:

Johannes Brodwall said...

Good post. Build time matters. But this is not the main reason why.

What happens if after 8 minutes, there's an error message about a failing test? What happens if I sort of think I know what the problem is? What happens if I think it may be one of five very easy to implement solutions? What happens if it's five in the afternoon? What happens the next time I have uncommitted code at four in the afternoon?

Thommy Bommen said...

Exactly Johannes!

To run fast you have to run well. Removing build time as an impediment is extremely important to run fast. Motivating for TDD is not an easy task when running fast and removing build time would really help developers in so many ways we can only imagine a few

Unknown said...

Great post, Thommy.

Excessively long build times can be frustrating, but I am not so worried about the minutes lost pr. developer. It gives them time to blog, philosophize, read up on news, twitter, google, check facebook and all the other social networking things we would otherwise not find the time to do! :-)