Republished article : Originally published from the same author in Outsourcing Journal by Deutscher Outsourcing Verband e.V. – German Austrian Swiss Outsourcing Association – Autumn 2012
How Agile solves traditional pitfalls of IT Outsourcing
Outsourcing of software development has been done very extensively in the past few decades and in very large volumes across all geographies and all industries. The large drive for technology outsourcing in the past has been majorly due to two compelling reasons:
- Large global demand for qualified IT professionals
- Cost advantage offered from low cost locations
The traditional model of outsourcing
Traditionally outsourced software development has followed the ‘waterfall’ model using where the requirements are elaborated up-front, and the provider takes up the design, build and test phases before it gets rolled out to the customer for the acceptance. This resulted in what we call the ‘tunnel effect’ which means the activities that happen from requirements to deploy are in a black-box. If the requirements change in between or if the architecture, design or the code is defective, it is only discovered towards the end during the integration and test. The progress of the project was communicated through reports which most often were misunderstood. This method of software development resulted in wastage due to re-work, rigidity to changes, and low visibility in the whole project life cycle.
Outsourcing teams are usually organized as large skill-based teams working in silos and the hand-offs happen from one group to the other. This hand-offs result in knowledge leakage and internal process delays and could impact the end vale to the customer. When this delivery model was applied on outsourcing, the pain of the tunnel effect became multi-fold. Many a times, the customers and suppliers were on different pages, negotiations and conflicts happened on changes and acceptance. Lot of money was spent on building requirements that were never to be used and on re-work due to changing requirements or misunderstandings.
Recent arguments against outsourcing
In the recent past, there have been arguments against bulk outsourcing with the following as the arguments:
Arguments against outsourcing |
The reasoning |
Lack of time to market |
“Outsourcing takes too much time. We have to spend a lot of time to write down detailed requirements, and then to explain them. After that it takes too long to get the deliverables and our business suffers due to this. It would be much easier to make this software solution in-house” |
Lack of transparency |
“We never know what is really happening; we don’t get to see how much of the product is built. All we get is status reports with green lights, but when it comes to user acceptance testing, we discover many undesirable surprises” |
Lack of code quality and high TCO (Total cost of ownership) |
“The code written by outsourced developers is not good quality; many a times we have to re-write good part of it or realize this issue too late during the maintenance phase. There is no way to measure the code quality and the product quality during the outsourced build phase. Because of this quality issues, the maintenance of the application is very expensive increasing our TCO” |
Though no one can deny the obvious benefits of outsourcing like skill availability and lower cost, it is high time we address these above concerns. Like any other industry, outsourcing industry has matured over the years and is now able to offer alternate delivery models that assure transparency, time to market and lower cost of ownership.
Agile practices have been around for few years now. It started as a trend in innovative product companies to cater to the ‘need for speed’. For most of the technical people, it has been the most natural way to build applications. In the recent past, we have seen agile adoption spreading from product companies and internet businesses to a much larger scale where large global banks, telecom companies, media companies and manufacturing companies are embracing agile IT.
Here is a representation of how enterprise agility is adopted across the industry.
** Note: these patterns are indicative industry best practices only and in no way depict a mandatory model. There exist variants of these patterns as per domains, business and technology context
The above diagram explains the various degree of agility across enterprises (more agile as you go up) as dictated by the needs of their business functions. While innovative product companies and internet businesses tend to follow the topmost agile model, more traditional businesses and large enterprises tend to favor the one below that. Nevertheless, agility is not measured the same for all. The need for agility is measured from where you are now and where you want to be with respect to the business context.
Agile Development and Outsourcing
It is a misconception that agile IT cannot be outsourced. In fact, agile practices solve all the above mentioned arguments against outsourcing. It is important to note that agile is not just about incremental deliveries, agile teams engineer software in a different way as compared to traditional software engineering practices.
Time to market and early ROI through agile outsourcing
Agile delivers in small increments. A typical agile delivery cycle of 1 to 3 weeks include requirements elaboration, design, development and testing. The time boxes once fixed are not to be altered throughout the delivery cycle. While fast paced innovative product development scenarios tend to prefer 1 week cycles, larger enterprises tend to prefer 3 weeks iteration as it gives them enough time to manage the dependencies. It is found that large enterprises who have 12 months as the feature throughput time (time for a new feature to get to production) while following traditional processes have been reduced to few weeks while following agile.
To enable such faster time to market and early ROI, the outsourced providers need to embrace practices like continuous integration, automated unit tests, automated acceptance tests, continuous delivery, etc.
Transparency through agile outsourcing
By adopting agile practices, we can eliminate the ‘tunnel effect’ and bring forth transparency and trust into outsourced development. Agile teams along with the product owner (client proxy) would prioritize the business requirements as per ‘highest business value’ and deliver them in smaller lots. The technical infrastructure adopted by agile teams would ensure that the key KPIs and metrics used for reporting are derived from the working product and are not mere guesswork.
At any point of time, the customer would be able to see how many features completed (tested accepted and working), how many features remaining, the coverage of test cases, the number of successful builds, the complexity of the code, number of defects etc. At regular intervals, the customer will be given demo of the working software, and they can touch and feel the product in making and give their constructive feedback. This high level of transparency is possible only through agile, and it de-risks the entire investment in the project.
High product quality and low TCO through agile outsourcing
It has been proven through some recent studies that agile teams make lesser defects and provide much superior product quality as compared to traditional software development teams. (Ref: The Business Value of Agile Software Methods by Dr. F Rico, Dr. H Sayani, Dr. S Sone)
The less number of defects produced by agile teams is due to the very high focus on clean code, evolving design, test driven development, test automation etc. As the defects are very less and the amount of technical debt is low, the product is very easy to maintain. Incremental changes are less expensive, and hence the maintenance is way less expensive as compared to traditionally built product. The total cost of ownership of the product hence remains very low.
Agile as a solution to the arguments against outsourcing
It is quite evident that agile is the answer to the arguments against IT outsourcing and it is obvious choice for the future outsourcing. By embracing agile practices, the outsourced development will give you time to market and early ROI, transparency as well as highest level of product quality and lower TCO.
Author
Co-founder of People10, a 'total agile' software development and consulting company.