Thanks to incremental delivery, improved teamwork, and early error detection, Agile has become a default approach for many software development teams. It is especially favored by technology startups and emerging businesses that made a choice to distribute their teams across the globe. In a nutshell, the concept of Agile software development -including remote collaboration in cross-functional teams- is all about people and how they run processes.
If you are at the point when your software project will be carried out by team(s) comprised of co-located and remote team members, make sure they can efficiently and effectively work together wrangling coding, design, infrastructure, and ideas at any time, from any location. Agile is the exact right way to make that happen.
I work for DIGI117, an IT consulting company operating in Canada, Ukraine, and Mexico. Just as tens of thousands of software companies worldwide, we have successfully adopted Agile principles that help us manage geographically dispersed teams and deliver high-value MVPs for eCommerce, healthcare, and digital marketing businesses across North America and Europe. Based on those, I would like to present you three essentials of managing distributed teams in Agile development environments.
#1. Collaboration always comes first. Make sure your local and remote teams can efficiently communicate with each other and with the client
Agile development nurtures efficient teamwork and collaboration between virtual teams. The very first rule to follow here is that you have a local office -or at least a local representative for your company or your client- to facilitate recruitment and team-building and to share the corporate vision among your employees.
Such office will be a good starting point to recruit IT talents locally and augment the team as the project scales up. When we opened an office in Guadalajara last November, we needed to make our three teams located in Canada, Ukraine, and Mexico to work as smoothly and collaboratively as possible to deliver features in the roadmap on schedule.
Hold regular team meetings
To pull our three offices into a single project team, we have developed an agile strategy that helped nurture a feeling of community and trust between co-located and remote teams. We focused on scheduling regular meetings for the right time with regard to two time zones (ET and EEST) so that our Mexico and Canada teams could keep in sync with our remote team in Ukraine.
We had three types of meetings to keep our virtual teams agile and collaborative:
- Daily status and stand-up meetings (10-15 minutes, with a limited number of people whose presence is required)
- Regular group meetings (weekly or biweekly) as a way of offering encouragement
- One-on-one sessions for every member of the team to understand what motivates him/her to perform well, and to offer personal incentives
Team collaboration tools such as Zoom, Google Drive, and Asana will help your team members stay on track of every document and task throughout the project and communicate statuses and updates in real-time. You need to experiment with various pieces of software to find those that are the best choice for your mixed team.
The DIGI117 design team uses Figma to create and share product mockups. The development team uses Trello and Slack as we find these tools perfect for collaborative Kanban-based/visual task management. Our sales and PM teams prefer Skype and join.me for video conferencing with customers and Pipedrive for CRM and sales records.
#2. Establish smooth information flows and document management
Having everyone on the same page is crucial in Agile development environments, especially when it comes to team onboarding, task management, and status reporting. To set up collaborative information flows and spread the project knowledge across different teams efficiently, you need to have a document management process in place.
In this regard, you want remote team members to follow best practices of Agile software development, including these few documents (aka "artifacts"):
- Product vision, an outline of a product's core concept, features, and values
- Product backlog, a comprehensive list of features, improvements, user stories, and bug fixes planned for product releases
- Sprint-essential documents such as Sprint backlog and Sprint goals that clarify the work the team needs to complete in a given sprint
- Burndown chart visualizing the work left to do versus time
In addition to that, two tips below will help you establish collaborative information flows in your remote team environments:
- Use simple wikis and how-to tutorials to guide your co-located and remote teams for project definitions, onboarding processes, documents, etc. A good choice of document management software would be Google Drive, DropBox, and OneDrive. Simple and easy-to-use spreadsheets and text documents in Excel or Google Sheets are often the most efficient tools for startup teams.
- Keep everyone informed of changes and updates. There needs to be a change tracking system in place to notify all necessary parties when new updates come up. At DIGI117, we use a customized version of Redmine as a self-hosted ticket and change tracking system to keep a general project information, send instant updates to our dispersed teams, and allow for comments and discussion threads in tickets.
#3. Define success criteria
A definition of team success and how to measure it are two essential things to figure out when building and growing dispersed teams in Agile-driven software projects. What makes the team successful? In what terms?
Typically, an Agile development team can be considered successful depending on the number of new features they have delivered on time, and on budget. Teams get rewarded for optimized, bug-free lines of code that covers the capabilities outlined in the roadmap and resonating with the user stories.
These three components help us define the success of remote teams at DIGI117:
1. Contribute through continuous communication
Team members have to communicate a lot with each other to discuss tasks, issues, and ideas. They sometimes disagree on some points, yet by the end of the day everyone’s contribution is all that matters. Without regard to hierarchy, each person respects the thoughts and opinions of other team members and wants to come up with a solution, not destruction - this vision is the key to team success.
2. Build trust and friendship in the workplace
We often spend more time with teammates than our family and friends. It is vital to ensure that every team member feels comfortable in the workplace on a personal level. Have fun and develop friendships, make office parties, celebrate special events like birthdays and anniversaries. Remember that your team members should not feel like cogs in a machine.
3. Stay in sync as the project moves forward
As mentioned earlier, you have to pay special attention to team collaboration and visibility. Every team member must understand what exactly the team aims to achieve and what the current status is. In this regard, Agile planning discussions and playback meetings help keep everyone synced as the project moves toward its goal.
Distractions in the workplace
I saw many developers reaching the end of the day with only a small percentage of what they were supposed to do. Why? Numerous emails, daily meetings, coffee breaks, chats with teammates are the most common reasons for unproductive workdays. Minimizing distractions is a crucial issue that remote and co-located teams struggle with.
Below are several tactics that can help you minimize distractions in your teams:
- Schedule Agile meetings with the minimum amount of time and the minimum number of team members needed (up to 25-30 minutes and 5-8 people). Cancel meetings that are not essential.
- Don't try to use Agile meetings for introduction or overview purposes (for example, introduce a new member to the team or outline a new feature).
- Dedicate sufficient time for one single task. Start with a one- or two-hour block. Alternatively, try the Pomodoro Technique to juggle your tasks and breaks with a 25/5 ratio.
- Mute or turn off distractive applications on your computer. No email, no phone calls, no messengers.
- Stick to priorities - urgent and important tasks always come first.
Dmitry Bogdanov is a business development director at Digi117 IT consulting. He also takes the role of a product manager for in-house and client projects. He is a fan of emerging technologies like AI and IoT and believes that the future will be exciting thanks to good things that change this world today.
Photocredit: Campaign Creators