Many software development organizations are electing to implement Agile development methodologies in order to take advantage of the cost, quality, and time-to-market benefits commonly achieved with this approach. At the same time, these organizations are moving software development offshore to take advantage of greater scalability and quot;round the clockquot; development cycles. However, in combining these two efforts, the highly collaborative nature of Agile is tested as teams are faced with cultural challenges and necessary work habit shifts. If you are considering implementing a Global Agile approach to software development, then it is imperative to focus on an often underappreciated aspect of this initiative: building the right team. This is the most critical step in delivering the benefits of Global Agile development.
Global Agile can be as productive in a multi-shore environment as when working in the same location. In fact, when compared to other development techniques that can be done using an global team, such as waterfall, Agile is perhaps best suited for multi-shore environments based on the visibility it provides into the team's progress and the high level of communication and collaboration with the global teams.
Significant factors for Global Agile's success are the skills, seniority, and subject matter expertise of each team member. Perhaps the most important trait of all is one that can't necessarily be reflected on a resume: personality. Constructing your Agile teams is not a one-time exercise, but requires constant review to ensure long term success. While this is true for all Agile teams, the nuances in a global context can have significant detrimental effects if not fully appreciated.
The Important People Factors
Factors such as cultural compatibility, close collaboration, and the value of teamwork over individual contribution can be more important than particular technology skill sets.
Unlike a waterfall method where team structure is more of a managerial hierarchy, Agile is insistent upon open, continuous team communication. Agile development decries the traditional hierarchy system for a more quot;democraticquot; philosophy. With Agile, an individual's value is determined by his ability to contribute to the team. For some, this is a very hard transition to make, especially in eastern cultures where the management culture is more autocratic and value is often measured by the number of people one manages. Understanding a team member's attitude toward a flat organizational structure, willingness to quot;get his hands dirty,quot; and acceptance of open communication is important for an Agile team to be successful.
It's very important to properly evaluate these quot;softquot; factors. As with most companies, a large percent of the team members do not come from an Agile background, yet these companies have been able to build strong Agile teams for many of their clients. For example, one client, a leading product lifecycle management ISV, had slowly adopted Scrum for its onshore development teams. However, with our firm's experience, we were able to scale the project to a global team in only three months. That was due in large part to the traits that we looked for (noted above) in the team members when we scaled up.
Due to these requirements, any previous experience with Agile development is a factor that should be strongly considered based on the personality traits of those who practice it. As an example, if a team is used to getting detailed requirements up front, and then suddenly gets immersed in an Agile environment where requirements are not detailed, this impacts relevancy, productivity and quality of deliverables. Agile development requires the team to be much more intuitive, inventive, creative and extemporaneous in their approach to development.
Building a Team
In any Agile environment, to make the process as smooth and productive as possible, team members should have clarity in their roles and responsibilities. This task becomes even more complex when considering multi-shore locations. One way to approach team building is to keep personality compatibility in mind. Clarity of roles is paramount to smooth operating teams. This does not mean role assignment is critical, but rather personality positioning is important.
One tip is to make a map of your teams with open slots for different roles and then select or recruit for those open slots. As you fill in the team map, note the individual's experience, especially with global development, and his dominant personality traits. Attempting to determine overall personality during a typical interview