Welcome to my first blog! This blog will focus on software development topics. I hope you find some value from the blogs or at least find what I say thought provoking. So, here goes . . .
Almost every prospective client I talk to says that they are using an agile (or agile-like) software development process. And, almost every one of them says, “Is it even possible to outsource using an agile development process?” My answer is a resounding “Yes”.
Before moving forward, let’s make sure it’s clear that an agile development process is a “process” and still has all the characteristics of a process (steps are defined, results are defined, metrics are defined). Many people I have talked to equate “ad hoc” to “agile”. An ad-hoc process is an oxymoron, i.e., it is not a process and is therefore not an agile process.
Our company, Agilis Solutions, provides software development outsourcing services for Independent Software Vendors (ISVs) with a blended team of onshore PMs, technical architects, and analysts and offshore developers and testers in Vietnam. We have worked with many companies using their own development processes. In the past 3 - 4 years, almost every company we work with uses some form of agile development process. After an initial “getting to know you” period with each client, we have successfully developed products using several variations of an agile development process.
As I’m sure you all know, there is no single “agile methodology”. These days, most teams use an adaptation of scrum to manage their agile process. This means having a backlog of work that is delivered in manageable pieces (i.e., iterations or sprints) and emphasizes full teams, including product management, development, and QA, working together interactively to successfully deliver each iteration and finally, the released product.
How can teams work together interactively if they are an ocean-apart in
distance and several hours apart in time? The keys are:
- excellent communication via the use of collaboration tools
- tracking progress of both internal and outsourced work using collaboration tools
- a strong commitment to make the process work across an ocean.
One of our clients uses several communications mechanisms to compensate for the teams not being located together. Teams on both sides of the ocean hold daily scrums (short meeting of team to discuss status and issues) and summarize their scrums in daily reports to each other. Issues identified that need to be addressed by the team on the other side of the ocean are tracked through to closure. In addition, weekly skype conferences are held to make sure that everything is moving forward and to also address outstanding issues. The teams each work out of the same configuration management system and are involved in daily builds that include each others code changes. The QA teams use the same test machines (but during different times of the day) ensuring that tests are done using an identical test environment. And, internal and outsourced teams track their time using the same system.
Another client uses a “kanban” methodology (made popular in Japan manufacturing companies). In this method, “tasks” are tracked via cards (one task per card). Each card goes through a set of steps, such as task definition, design, coding, testing, acceptance. Standards exist for the flow of a card, meaning how long each step is, how many days should be spent per card and how many cards should be active at any one time. In this case, the standard is 6 days per card. The progress of the cards are tracked electronically and can be viewed by team members on each side of the ocean. Everyone can see where a card might be blocked and can offer help to unblock a card. In addition, daily meetings are held on both sides of the ocean and across the ocean to identify and address issues.
One last thought, a commitment to make agile work with an outsourced team must exist on both sides of the ocean. It’s too easy to point a finger at “those people over there”. Both sides have to remember that teamwork must extend across the ocean. If the commitment is missing, most likely the relationship will fail and so will the project. That is a lose-lose situation. All levels must make a commitment to outsourcing to reap all the benefits of outsourcing.
Hopefully, I have given examples that help you see that you can outsource software development while using an agile development process. I’m not saying it’s easy, but it can definitely be done.