We can’t do agile – teams need to be co-located!,” we often hear from naysayers about adopting agile in companies with remote workers. We know that distributed teams – be they off-shore, on-shore, near-shore, in-shore, whatever-shore – are the way many businesses operate today. How can we, as agilists in our organizations (as ScrumMasters, Product Owners, consultants, trainers, etc.), resolve the challenges that distributed teams face? This talk will review some of the common issues that distributed teams face and we’ll talk through real-world, practical solutions that I’ve used with my teams; techniques you can take back to your teams immediately.
How many have teams that are fully co-located? How many people have teams that distributed, even partially? How many people have teams that are completely distributed?
Any team or group of people
Not just Scrum teams, but Agile advocates for co-location to best facilitate face-to-face conversations
Teams where one or more people are not co-located
Remote workers/WFH
On-shore
Near-shore
Off-shore
Some companies have workers that are all co-located in a single space. What I see more and more is teams that may be in the same office but are in different parts of the workplace – different parts of the same floor, different floors, or even different buildings in the same campus. The challenges for any team that doesn’t sit together are similar and those difficulties are compounded the farther apart the team members are. For most intents, a team member that’s 10 miles from the office is not much different than one that’s 10,000 miles away.
And let’s be clear. I’ve seen teams that are co-located operate less like a team than ones where everyone is at least a thousand miles away from anyone else.
Meeting invite should contain all information – how to join, is there a conference call-in number, etc.
Ice breaker – note the education studies about first 10 minutes setting the tone for the class
Video changes the whole tone of the meeting
Working agreements – fun fines for being tardy (e.g., sing a short song if you arrive late)
Ice breakers
Studies show if people don’t speak in the first 5-10 minutes they’ll be disengaged during meetings
Get everyone speaking at some point during the beginning of the meeting/call
Add something about the “ever give someone work then get an answer while you were sleeping that you answered while THEY were sleeping only to have them ask you ANOTHER question?”…
This is a huge issue. When we did the distributed team discussion at the ScrumMaster guild we actually punted on addressing this because it was too big to discuss in 90 minutes.
I worked with a company that had some developers in Lithuania who actually shifted their entire work day to align to ours. It was amazing and incredibly helpful – we were very lucky the team was willing to do it. If you can, it’s ideal. If you can’t, you’re in for some serious challenges.
Holidays are one of the biggest problems I’ve seen. You’ll need to know what holidays your remote team members will be observing. It will impact your team velocity/throughput.
Your last option is, of course, to create fully independent teams that share more of a timezone. This is sometimes what happens – and what some vendors prefer.
For all meetings, it’s really important the team be prepared before the meeting. Make sure you’re asking your team to review whatever is going to be discussed during the meeting in advance of the meeting.
Backlog refinement: One recommendation is to have the PO provide the top 5-10 items they’re going to discuss during refinement so your team can prepare. Ensure the backlog is groomed at least a day or two in advance.
Sprint Planning: It’s critical that everyone be involved. This may mean an early morning/late night for some of the team, but it’s worth it. I like to see teams do tasking during sprint planning, but with widely-distributed teams that might be difficult or nearly impossible. You can have the team do this separately, but make sure you get back together after planning to review the tasking as a team. It should be a pretty quick meeting, maybe even do it as your “after scrum” items.
Stand-up: It’s important to have people attend this meeting. Sometimes that means meeting at the end of the day (here’s what I did today, what I’m doing tomorrow). The key is to get everyone together for a little bit of time.
Demo/Review: Have your PO drive the demo/review with support from the team as needed. Make sure that your PO is well-positioned to present. SM and as much of team as possible should attend.
Retrospective: It’s critical that everyone be involved. This may mean an early morning/late night for some of the team, but it’s worth it.
Photos of team members
In open space areas
Use for profile pics in ALL applications
IM, version control, work item tracking (Rally, VersionOne, Jira, et al), email/Exchange servers, etc
Consider doing what Wordpress does for its teams, which is scheduling a team trip somewhere for a week close to one of the team members. Be it Paris, Rome, London, Cape Town, or Sydney, having the team together in a single location can work to bind the team into a cohesive whole. For many companies it’s not really feasible, but for some - and you’re lucky if you can – this can really help a team bond.
Let’s say the team is split between the coasts – two people in Eastern time zone and two in Pacific. How can they collaborate? What about pair programming? The things we encourage – knowledge sharing, developing “T” shaped people (broad but shallow knowledge in some areas, very deep knowledge in others)? What about testing?
When I started using agile we looked to Kent Beck’s XP methodology as our scaffolding but there were some things that weren’t going to fly (at the time) in our group. One them was pair programming. I did, however, encourage and use what I call “collaborative programming” for our team. I would often ask one of my team to come sit with me and look over things I was working on – not only to get a second set of eyes on it (which was good) but also to show them what I was doing and how so there was knowledge sharing (also good).
For pair or collaborative programming, we can use some of the remote desktop, WebEx (or similar), and screen sharing capabilities of our IM clients to collaborate and pair. You may need to invest in headsets for your team (or something similar), but creating the environment where they can and are encouraged to collaborate can be met with some simple software fixes.
IRC (Internet Relay Chat)
OpenSource, easily installed, bots to persist conversations
IRC bots that can record the conversations in the rooms
FlowDock
Integrated with Rally
Group chats and Private conversations
Slack
More open implementation than FlowDock
Group chats and Private conversations
Twitter integration
SharePoint/Wiki/Confluence
Basic document storage
Ability to reflect current state easily with history
Lync has individual and group IM, screen share, and persistent chat rooms
Continuous integration tools (Jenkins, Bamboo, etc) can often link into these, so you can get build and CI results posted directly to your team.
Focus on using tools that persist information so you can search through it later. It’s amazing what you may need to access after the fact.
Consider the vendor and people you’re working with
Some employees are more used to taking direction; note that even the military is moving from this model
Some vendors strongly encourage the above thought pattern
Self-direction and empowerment can be hard for some employees to grasp, even the “cave dwellers” (fresh water fish and salt water fish)
Using tools like Rally, Jira, VersionOne, or Team Foundation Server can let you track how your team is performing. Some of them will allow you to link actual source code to user stories and defects, which can be helpful.
Some organizations and teams are resistant. Check out Management 3.0 and Coaching Agile Teams for tips on overcoming that resistance.
Management usually fails to understand the impact; must educate them on what we need (video conferencing systems/capabilities, etc).
IT seems the main resistance to some of the technological solutions because they aren’t necessarily one-size-fits-all. Think about how you can engage them and help them while solving your problems. Video, firewalls, source code control, P2s, IM, etc.
Working with Finance sometimes seems like a Sisyphean effort. With remote teams, you’re going to need technology – hardware, software, video, etc – the same things you need your IT team to provide. If you have any say in the financials for your project, make sure you include those things while setting up your budgets. And make sure that the things you want to buy can be used/supported by your IT team. Buying a cool new Cisco video conferencing system that can’t make it beyond the firewalls doesn’t do anyone any good. Also – there can be challenges while trying to get things for vendor-supplied contractors. A lot of pushback can come in the “we’re not buying that for THEM” kinds of things (and pushback not just from finance but management too).
The main issue I’ve seen with HR is in the “employee” vs “contractor” spaces. Need to check on what can be done/not done within the legal and corporate guidelines while still building your teams and collaborating.
Collaboration Super Powers podcast covers a lot of the topics I’ve touched on here. Good insights into how some people are dealing with these problems.
ScatterSpoke is a retrospective tool for distributed teams.