Seven tips to offshore agile development
- 01 October, 2012 20:47
You can't offshore agile.
That had largely been the accepted wisdom in corporate IT since the iterative development approach was introduced more than a decade ago.
Distance, it seemed, would only make agile methods of close-working, collaborative teams, self-governance, and rapid, time-boxed development more difficult.
According to a September 2012 Forrester report on "rightsourcing" agile development, "geographically distributed teams add complexity [to agile development], making it harder for teams to communicate the flow of work, backlog status, and issues and impediments."
But over the last few years, many niche offshore providers have been quietly developing their agile development offerings-several exclusively supporting such incremental software development. And some IT leaders are embracing the offshore model.
"I know of a few successful examples of agile development with offshore teams," says Cindy Carpenter, vice president of research at outsourcing analyst firm HfS Research. "One experienced offshore agile project manager told me [that while] the usual view is that you must be in the same room to do agile, his view is that if you're not in the same room, the best way to do software development is with agile methodology."
Here are seven tips to make it work:
1. Be Prepared
Daily scrums via Skype or another video conferencing system is the only way to make distributed agile development work, says Carpenter. But no one wants to spent 15 minutes finding appropriate rooms and equipment for a 15-minute check in. That's a big frustration for those who offshore agile development, according to the September Forrester report, which says, "wasted time searching for rooms and equipment to support communication seriously impedes agile transformation." The solution is to create standards, not only for communication tools but also the software tools and method for sharing and discussing artifacts.
[Related: Offshore Outsourcing Can Boost Agility]
2. Start Small
Roman Kaplun, director of engineering services for discount travel site Hotwire, decided to offshore agile development because he had to compete with the likes of Apple, Facebook, and Google for programming talent. He opted to work with Russian IT service provider Luxoft, but started with simple test automation work for the first year and a half.
Then Luxoft began providing agile development services from Kiev, Ukraine and Omsk, Russia, in small teams. It was important to take time to grow the relationship and figure out how to work together most effectively, says Kaplun.
Carpenter advises limiting development teams to three to seven programmers in order to assess their skills and find the most effective coders. IT leaders should be prepared for less-than-stellar performance on the first few iterations as customer and provider work out the kinks. Time-boxing the work into small chunks--two weeks max--is also smart, says Carpenter.
3. Consider a Hybrid Model
Joe Sniado, CIO of Standard & Poor's initially struggled < http://www.cio.com/article/706120/Outsourcing_Declines_Are_IT_Jobs_Coming_Back_> when offshoring agile development. So he opted to pay more to have the offshore partners provide more on-site personnel and has been pushing for partners to provide more nearby personnel--a couple of hours away versus another time zone--on the agile projects, creating a 50/50 onshore-offshore model.
4. Manage Actively
In theory, agile is supposed to be an organic, hierarchy-free method of software development. But if you're outsourcing--particularly offshore--you need to actively manage it. "You need to take control of your own destiny with Agile," warns the Forrester report.
Kaplun tried the hands-off approach in Kiev and got mixed results. "We came to the realization that the process and team needed to be managed," says Kaplan. But finding the right manager was tricky--someone who could intervene when necessary without being dictatorial and could work equally well with engineers and the business.
[Related: Is Your Cloud Project Ready to be Agile?]
5. Invest in Onsite Training
The Hotwire business model, whereby customers book a hotel room without knowing which one in exchange for cut rates, was foreign to many of the Eastern European engineers who would be working on the site. So Kaplun brought engineers over at the beginning of the engagement to learn more about Hotwire and its products and understand the customer point of view.
6. Pick the Right Partner
Many traditional Indian IT service providers built their businesses around waterfall development methodologies and have not been able to scale or perfect their agile development capabilities, says Stephanie Moore, vice president and principal outsourcing analyst with Forrester Research.
Infosys and Tata Consultancy Services, for example, employ agile methods in less than 20 percent of their development work, according to Forrester. Multi-national providers with offshore delivery centers, like HP and IBM are producing a similar percentage of agile development. But there are consultancies and providers who have built their businesses solely around agile development, like ThoughtWorks and Matrix Global. Resist the urge to engage incumbent IT service providers in offshore agile development projects unless they have a proven track record.
7. Account for Time Zones
It helps to have some overlap in time zones for daily scrums. "The lack of contextual sophistication means that projects can get held up as teams wait for the internal customer or subject matter expert to come online in the US to answer questions or approve iterations," says Forrester's Moore.
But for Hotwire, whose headquarters is 10 to 14 hours behind its offshore agile development center, communicating in real time was difficult. Kaplun overcame the challenge by introducing a new role--the practice product owner--that he located in Kiev. That person has been trained in San Francisco and understands the business and its processes and can assist the scrum team as issues arise rather than waiting for answer the next day.