Agile. Global. Development.
Think those three words don't go together?
My company, Macadamian Technologies, has been doing Agile global development for a couple of years now. We have permanent offices in Romania and Armenia, and we have long-term deals with developers in two other countries. Most of the projects we're doing now have some kind of global component.
Ah, but you're wondering, "Sure it's global, but how can it be Agile?"
Okay, so let's look at the Agile manifesto, respectfully copied in its entirety from agilemanifesto.org:
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
In the rest of this article, I'm going to go over each of those bullet points, talk about the issues involved, and show you our solution.
Individuals and interaction over processes and tools...
Okay, so what happens when individuals are in four different time zones? What kind of "interaction" can possibly happen then? Face-to-face collaboration on a daily basis would mean earning a lot of air miles and developers having permanent jet lag; better hope those airports have wireless access...
Not to mention the cultural issues. North American school systems prepare students to solve individual problems, and in North American culture, we prize initiative, something that may not be as valued in other societies. That's just the start of cultural conflicts that might come into play.
Add in something else-not the society's culture, but the culture of the corporation that other developers are used to, and you've got one big interaction problem.
Oddly enough, we've found the solution to the problem of interaction between individuals lies in those tools (and, to some extent, processes) that the Agile manifesto doesn't value so much.
Gotta cut the manifesto guys some slack: we're probably not talking about the same tools. They're probably talking about being slavishly handcuffed to Proprietary Source Control Tool TM and Proprietary Task Reporting System TM, while we're talking about Skype, IM, call conference bridges, and anything else that connects people. After all, when they wrote the manifesto in 2001, wiki-anything was just a gleam in Ward Cunningham's eye.
The tools we use these days are all about individuals interacting. Like I said, Skype, which can be a better phone than a phone, letting you write stuff when verbal communication goes opaque; IM, which makes firing off a quick question to someone across the globe as easy as yelling over the cubicle wall; and call conference bridges, which have certain advantages over catching a flight across the Atlantic (though the movies aren't as good).
But most of all, we love our wiki (We use Atlassian's Confluence). I'll talk more about this during in other sections-probably until you're sick of it, gentle reader-but there's nothing more agile than a wiki. When you can't bring the team together in real space, a virtual one does almost as well.
Making a team space on a wiki won't let you look your teammate in Nagpur in the eye, but it will let you get on the same page. It lets everyone share any relevant information (or that hilarious Dilbert from yesterday), and gathers all the documentation in one, searchable space.
A wiki space (and allowing global partners access to your company wiki) is the beginning of something really important to Agile global development-the creation of a team culture that transcends local culture. The wiki will reflect values that global partners will pick up on. For example, Macadamian values include:
- Encouraging questions
- Dealing with work blockages: making your best guess, moving on to other things, asking for help
- Responding to changes to the plan
- Being wrong isn't fatal-better to take initiative and fail than to sit on your butt,