Recently, a colleague and I were discussing the merits of best practices amongst small teams. The context of this discussion is of a development consulting company; companies that provide development resources from project managers to programmers and testers.
We agreed that "best practices" are often a difficult sell to clients that out source their projects to these consulting companies. The reason is that the there is a notion that best practices are time consuming tasks that offer no tangible benefit, but only perceived benefit. In other words, to the client, adding an extra X hours to a task that takes X hours to develop and deliver seems like unnecessary time and money. However, there is a serious fallacy to this reasoning.
Take, for instance, the best practice of code reviews. The whole purpose behind code reviews is to prevent defects in the software and to allow for their repair early in the project life-cycle. Generally speaking a defect costs much more to repair later in the development cycle. Therefore, it is advantageous to find it and fix it soon. This is made possible through code reviews.
One study involves a 10,000 line project done by two different groups of developers. One group did not perform code-reviews. The other did. The amount of money that would have been saved is substantial as shown in the figures below.
Personally, if I am the the customer hiring a development company, I want to make sure that the company performs code reviews, otherwise, I may be agreeing to pay some serious dough when I didn't have to.
If I'm the development company, and if I'm honest, I want to offer my clients the best service for their money. If I really believe that code reviews work, then I am going to work it into the development agreement. If a potential client resists, then I must show the potential cost in my estimate realizing I may not win the client.
I'll leave the analysis up to the reader. For more on this study, go here: Code Review Study.
Thoughts?