Getting Best of Both Words with TDD: Combining Benefits of Test Driven Development with Economics of Offshore Outsourcing
Test Driven Development is increasingly gaining prominence among software development methodologies. For example, a Search on Amazon for "Test Driven Development" under the category "Computer and Technology" brings up 937 books, almost 5 times what search for "SCRUM" brings up under the same category.
And of course, outsourcing to offshore teams is now considered maintstream in IT circles.
How about combining the two? Here come a surprise - these two trends for lowering the cost of software development have been developing independent of each other, with very little intersection. In fact, many proponents of Test Driven Development methodology propose it as an alternative to engaging offshore development teams for cost savings.
However, I don't believe Test Driven Development and Outsourcing are “either…or” scenarios. There is no reason that a company can't embrace both and get the compounded benefits. In my opinion, the primary reason many people in the software development industry are reluctant trusting their outsourcing teams with Test Driven Development arises from a flawed understanding that test driven development does not lend themselves to outsourced processes; or offshore teams do not have the maturity of embarking upon lean agile processes such as test driven development.
The reality is the other way round - In fact, almost all aspects of lean agile methodologies in general and Test Driven Development in particular such as Development of unit tests first, development in small increments, continuous integration, very short iterations, and flexibility over rigid processes are ideal for outsourcing environment.
In a study done by Vishal Sachdev and Kishen Iyengar, researchers at the University of Texas at Arlington found that agile practices such as Test Driven Development are actually very useful for offshore development. They specifically evaluated adoption of agile software development in the context of outsourcing development offshore to countries such as India. In their study, they report that
“... continuous testing/integration, test first development and short iterations seem to be the most important agile practices which are used in Outsourced Information System Development and show clear benefits to companies.” The authors of the study conclude “While some communication and documentation overheads are required to compensate for the distance…the end result is more efficient and cost effective than traditional development.”
Industry veterans such as Scott Ambler of IBM reinforce this study. Mr. Ambler believes that use of agile methodologies in software development outsourcing is “inevitable, particularly if the buyer of such services wants to optimize its resources spent on such efforts and the seller of such services wants to compete effectively against lower labor cost countries!”
In another study, Rajiv Sabherwal, who is the Professor of Information Systems at the University of Missouri System s. Sabherwal, identified four levels of trust required for successful outsourcing.
Of-course, Test Driven Development needs to be adaptations to address factors unique to off-shoring. A big difference arises from geographic distance. This has been overcome by the use of Wikis to replicate the intense consultative process that is key to Test Driven Development, and increased documentation.
The increased work requirement for such adaptation is more than offset by the improved productivity arising from the Test Driven Development methodology. The compounding effects of improved productivity of Test Driven Development, and lower costs of offshore resources really fit well with the super lean IT budgets of this phase of economy.