In application lifecycle management (ALM), close collaboration between all members of a team is critical. For geographically distributed teams – whether located in different buildings or on different continents – collaboration can be a big challenge. Yet some distributed teams have been able to overcome the barriers to collaboration and become highly effective. This article will describe some tools and techniques to improve collaboration on global teams for many aspects of the application development lifecycle.
ALM tools and tool usage
Co-located teams know the powerful simplicity of using a physical Scrum task board or Kanban board – cards on a wall – to visualize and track their work. How can a remote team best replicate the high visibility of a physical board? Fortunately, most Agile ALM tools offer a task board and/or Kanban board view. Figure 1 shows an example of a task board from Agilo For Scrum. Unlike a physical board, however, the electronic board isn’t as effective as an information radiator because it’s not always visible like a wall or whiteboard is. Unless you make it so, that is.
Tips on ALM tool usage
- Choose an ALM tool with a Scrum-style task board and/or Kanban board view to visualize the workflow of features and tasks.
- Institute a daily stand-up meeting and make the task/Kanban board the center of the daily collaborative conversation. Show the task board view at each location, either projected or displayed on a large screen.
- To simulate the omnipresence of a physical task board, keep the task board permanently displayed on a large screen monitor at each team location.
Figure 1: The Task Board view in Agilo For Scrum
Also known as project planning or mid-term planning, release planning refers to the high-level planning of a major application release, and typically happens every three to four months. These events are a perfect time to bring your scattered team together in one location for a few days. Sure, there is some cost involved, but there is also a return on that investment when team members form stronger working relationships and gain a much deeper understanding of the vision and requirements for the next major release. If this face time between distributed team members prevents just a handful of mistakes and delays from happening during development, it will likely more than pay for itself.
Making requirements unambiguous
Ambiguous and misinterpreted requirements are often a big problem in application lifecycle management. The chances of misinterpretation increase with distributed teams, making concerted efforts to reach clear understanding even more important. Agile teams typically rely on user stories to describe requirements. Stories consist of three parts: the Card, the Conversation and the Confirmation. The Conversation part is relatively easy for co-located teams in order to reach a clear, common understanding of customer needs. Distributed teams must make an extra effort to reach the same level of requirements understanding across the team.
- Don’t skip the real-time requirements discovery conversation just because the team is distributed. Agile teams must ensure that every team member has ample time to ask questions and get real-time answers on stories/requirements from the subject matter experts (often the Product Owner).
- Determine the Confirmation (acceptance tests) for each feature or story using Acceptance Test Driven Development (ATDD). In a nutshell, ATDD calls for defining unambiguous test cases for feature/story, preferably automated, at the beginning of feature/story development, rather than at the end. Automated tests cannot be misinterpreted, unlike requirements in text form.
- Make judicious use of requirements documentation. Agile methods tend to de-emphasize documentation, but with distributed teams, and especially with global teams with language and cultural differences, simple and lightweight documentation on requirements can really help, especially visual documentation and examples. Keep the documentation simple – a snapshot of a whiteboard diagram and bullet points may help capture the essence of the discovery conversation between team members.
Fast and frequent feedback
Fast feedback is the key principle behind Lean & Agile development. No matter how well you do at making requirements unambiguous, you want to quickly validate that each feature/story has been built correctly. Scrum’s sprint review (aka demo) offers that frequent opportunity for project stakeholders to validate working software and collaborate with the team to steer development in the right direction.
Tools for real-time collaboration
Co-located teams can easily gather around a whiteboard to have a rich and deep discussion about requirements, design, or implementation details. These real-time interactions are key to achieving a deep common understanding and establishing productive working relationships between team members. How can a distributed team come closest to replicating this collaborative environment?
- Prefer video chat over audio-only or text-only IM. Tools like Skype make video chat easy and inexpensive – or free!
- Invest a few dollars in high quality speakerphones for conference rooms, and headsets for individuals at their desks. These will greatly improve comprehension on calls, save time, and avoid misunderstandings.
- Tools such as Sococo provide a virtual team environment with phone, chat and screen sharing all integrated and easily accessible.
- Cacoo is a virtual white board: a brower-based tool allowing multiple users to simultaneously collaborate on a diagram online.
- Linoit takes sticky notes online! Agile teams are famous (infamous?) for their prolific use of sticky notes. Linoit lets distributed teams collaborate in real-time with virtual sticky notes.
Facilitating distributed meetings
We’ve all experienced the worst of remote meetings; technical difficulties dialing in, disembodied, nameless voices crackling through the phone line incomprehensibly, disengaged people reading email rather than participating in the conversation. Here are some tips to bring sanity back to distributed meetings.
- Appoint an active facilitator for every meeting. The facilitator’s role is to set up the meeting (on time!), establish guidelines to make the meeting efficient, and maintain effective communication throughout the duration of the meeting.
- As a team, establish ground rules for distributed meetings, and remind everyone of the agreed-to rules at the start of each meeting. Some examples of ground rules are:
- No multi-tasking during the meeting. No laptops open. Everyone stays engaged.
- Before speaking, announce your name for benefit of remote participants. “This is Sally. I want to say…”
- Write down a virtual seating chart at the start of the meeting with names of all local and remote participants, as described in Jean Tabaka’s book Collaboration Explained. Make it highly visible on the wall or whiteboard.
- Collect photos of remote team members and add them to the virtual seating chart, reminding everyone of the presence of remote participants.
- Prefer video conferencing to audio-only conferences. A good deal of communication is conveyed by body language and non-verbal means. Plus, being on camera keeps meeting participants more engaged – rather than web surfing.
- Avoid jargon and idioms. On a multi-national and multi-cultural team, jargon often doesn’t translate. “Hit a home run” does not mean anything to your colleague in China. Conversely, “Play the lute to an ox” probably doesn’t mean much to North American team members.
For a comprehensive resource on social media, see Social media: A guide to enhancing ALM with collaborative tools.