How do you collaboratively develop software when you have people working at different sites, countries or even continents? How do you get distributed teams to communicate effectively, and deliver working software in a agile way? The second book from Jutta Eckstein can help you to implement agile software development in a multisite environment. This posting is the book review that I wrote for Software Quality Professional, June 2011, published by the American Society for Quality.
The book provides lot’s of solutions for building teams. Different multi-site team structures are described, with focus on how to ensure co-operation and effective communication. Also specific roles for larger and distributed teams are described, like architects, integration experts, product owners and infrastructure experts. These roles are important to establish and maintain collaboration between the distributed teams, and to ensure that that the parts developed by teams can be combined into working solutions. Global decisions (e.g. architectural issues, infrastructure or overall testing) should be taking by consensus where possible, to ensure that people are heard and can provide input for the decision, and are aware of the decisions that have been taken. The product owner, as defined in Scrum, clarifies and assign priorities to the different requirements. It is necessary that every team has a collocated product owner. Also off-shored teams need a product owner, to ensure that the team has the right information, on time, to deliver business value.
What makes a team a team? It is important that team members share a team identity, work towards a common goal, and acknowledge the joint responsibility to deliver results. Also they need to adhere to collaborative rules and guidelines, and must agree on a joint set of values. Reaching this takes time and effort, it cannot be forced upon team members so there must be sufficient time planned for team member to discuss, establish and experience the way that they want to work together. Team member need to build up trust, which enables them to work together.
Jutta shows that face-to-face meetings are essential in a distributed setting. Of course that will imply that people will have to travel, which has costs and time attached. But for team members to work together effectively, they need to know, trust and mutually respect each other and build up relationships; face-to-face communication is the most effective means to reach this. So if you are planning for distributed teams, also plan for travelling of team members. At the start of a project, frequent face-to-face meetings are needed, and it will take several weeks of people working together before trust is established. Avoid longer periods in which team members have no face-to-face contact, since it will hamper trust and result in a threshold which makes it even more difficult to build up trust afterwards.
Many communication problems are related to cultural differences between teams or sites. It is very important for team members to be aware of cultural differences, and to learn how to handle them to improve collaboration. A good way to learn each others culture is to work on-site, and to experience the culture. There is a lot of research done on culture, take for instance the Hofstede model which quantifies behavioural differences in cultures; this research can help you to prepare, recognize and better understand cultural differences.
Many organizations are considering to outsource parts of the development work. But they still want to work in an agile way. Outsourcing will for sure create distance between development teams, and to manage projects that involve outsourcing has proven to be difficult. Solutions described in this book can be used to implement agile in an outsourcing context. An example is the ambassador role; the book describes what is needed to fulfil this role and how can help to improve communication between sites. But it is also important to have multiple communication channels between sites, to lower the risk of miscommunication and missing important information.
Managers also need to stay in touch with the teams, and vice versa. This book calls this management by flying around (MBFA), a variant on management by walking around (MBWA). By having face-to-face contact at all sites, managers can assure that all teams share the same vision and are aware of the importance of what the project is doing and how their work contributes. There is no alternative as the book states, air travel is a must for managers to ensure successful delivery.
Feedback, though more difficult with distributed development, is still very important. Customer feedback helps the teams to understand and increase the delivery of business value. When customers are located in different sites, make sure that they can download the products, and have the means to quickly provide feedback to all the distributed teams. If possible, customers should be on site at product demos, where they can give face-to-face feedback to the teams.
Agile retrospectives help the teams to look back to understand and improve their way of working. In a distributed setting, there needs to be at least retrospectives per team, and project-wide retrospectives. The first one focuses on the developing and improving the team, while the second one focuses on communication and interworking between teams. The project-wide retrospectives can also help to establish and optimize processes that are used within the project. A wiki is often very useful to share information about the way of working between team, mostly because all team member can contribute in an easy way which keeps them involved.
“Agile software development with distributed teams” covers topics that are important to set-up and maintain effective collaboration between teams, ensuring that value can be delivered to the customers. The book provides profound information and practical solutions, which makes it a valuable tool for establishing and improving distributed agile software development ant management.