During the last 15 years modern communication means have taken a giant leap. The world is becoming smaller and smaller; working closely together with colleagues around the world on a daily basis is a reality for many people. This is particularly true in offshoring IT. The benefits are clear: more qualified people and lower costs, but there are also challenges.
In this blog I will show how offshore software development can be improved by using Agile principles and best practices. I will show you how the Agile Tester and Agile Testing practice play an important role in this approach. I assume that the reader is familiar with Agile Software Development and Scrum.
From demand to delivery
Aligning business demand and IT delivery is very important for running a successful business. Especially, in economically hard times it becomes even more important to reduce re-work, and increase time-to-market. The basic demand/supply model visualizes the alignment of business demand and IT delivery on a high level:
Where Demand Management focuses on what is needed, why this is needed, and also translates this into requirements. Supply management & IT delivery focuses on realizing the demand. It focuses on the how part of the business needs.
In order to successfully deliver software we need to make sure that the information flow from why/what to how, and the feedback from how to why/what works well.
Throwing it over the wall
In offshoring software development, supply management needs to clarify the requirements for an offshore IT service. An architecture department writing functional and technical design documents typically does this. The documentation is then used to inform the offshore partner taking care of the delivery. The offshore partner will build and test the software based on the documentation, and delivers the result for acceptance by the business. This sounds good but does not work well. Among the many reasons for failure are:
- Badly defined system requirements; even if they are exceptionally well defined they will be bad at conveying the real intentions of the system
- Poor communication among customers, developers, and users
- Changing requirements during development
Studies have shown that software developers in these kind projects spend about 40 to 50 percent of their time on avoidable rework rather than on value-adding work.
The Agile Software Development methodologies are designed to deal with change. They embrace the idea that the documentation is not the software, and that the business will discover more about their real needs based on feedback and new insights during development. Next I will show you how Agile practices can be applied to align demand and supply while people are working together in different locations all over the world.
The Product Owner manages Demand
There is no difference in the Product Owner role between offshore and local software development; the Product Owner will focus on demand management. He knows what needs to be built and why it needs to be built. He knows the business processes that need to be implemented or the product features that need to be developed. He will focus on translating the Business Demand into a prioritized Product Backlog, a list of User Stories.
The team handles Supply & Delivery
Supply management focuses on making User Stories Ready. User Stories need to fulfill the Definition of Ready before they can be part of a Sprint. Making User Stories ready is done by the Agile Tester working together with the Product Owner and with input from the offshore software developers. The Agile Tester is located onsite where he or she has easy access to the business requirements. She will work on User Stories for the next Sprint together with the Product Owner. The work consists of getting the specification clear and illustrating them with examples.
IT delivery focuses on making the User Stories Done, resulting in working software at the end of each sprint. The software is built by the software developers located at the offshore location sitting together in the same room. Sit Together is a XP practice that, for instance, allows for local technical discussions on implementation challenges. The offshore software developers and Agile Tester work together on refining the specifications and use the examples to validate the product. The validation is automated and Continuous Integration is used for quick feedback. Writing and creating a suite of automated functional acceptance tests is part of the IT delivery process.
Connecting Demand and Supply
The process just described supports Building Integrity In. Integrity is achieved through excellent information flow. This process alone is of course not enough for a successful offshore result. Since we are considering Agile Offshore using Scrum it goes without saying that in order to be successful all Scrum artifacts, roles, and meetings (the bare minimum) need to be implemented in a distributed way, optimizing communication for people working together in different locations. A lot has already been written about this, so I won't repeat that here.
So then, what's new? The thing that is "new" is the emphasis on Agile Testing, and the Agile Tester role in the value stream from business need to working software in Offshore Software Development. Any Agile Software Development team can apply the Agile Testing practices. In Agile Offshoring they are the linchpin for connecting the 'what/why' to 'how' in a controlled manner. The Agile Tester will:
- Facilitate and help growing the common language
- Together with the team, build a suite of automated tests that enables refactoring, allows for change, and serves as living documentation
Organizing your Offshore Development in an Agile way provides you with the benefits of quickly responding to change without loosing control. The Agile Tester plays a crucial role in this. At the end of each Sprint the whole team will deliver high quality working software, but also accurate documentation keeping everybody on the same page.
G.M. Wijers, Demand and Supply: Key for the Modern IT organisation, EquaTerra, 2010
G. Schoonheim, Mind the Gap, Xebia, 2009
M. Fowler, Using an Agile Software Process with Offshore Development, 2006
S. Beaumont, The Definition of READY, 2009
R. N. Charette, Why Software Fails, 2005