As the Agile Manifesto approaches its 20th anniversary, it’s a good time to reflect on the technological revolution that followed. It sparked a milestone moment in the software development industry, outlining new values and principles that could be built on and carried forth in the pursuit of more effective, documented, data-driven development. The manifesto wasn’t a rigid framework or methodology, but it did encapsulate a mindset that, two decades later, is still driving the industry.
In those twenty years, the Agile movement has become one of the cornerstones of digital engineering, and is the accepted standard for developing and delivering digital initiatives around the world. It focuses on cross-functional teams, smaller workgroups, flexible working, and above all a deep sense of trust and collaboration.
When the Agile Manifesto was published at the turn of the millennium, the world was a very different place and, like us, it’s hard to adapt. The 17 software development practitioners who authored the paper wrote with the underlying assumption that collaboration, trust and brainstorming worked best in a physical face-to-face environment. Today, the “new normal” that’s emerging in light of the COVID-19 pandemic is pushing us in the opposite direction.
Distributed work environments were already gaining traction prior to the pandemic, but now, for many businesses, it’s a matter of survival. My own company, Infostretch, has teams that are dispersed across three different continents and multiple offices, and when the pandemic hit we enabled 95% of our workforce to work from home within 48 hours. In 2020 and beyond, practicing agile is going to involve different office locations, home working, conflicting timezones and many more variables defined by geography. As a company, we have learned how to finetune our work processes, policies, behaviors, and habits to not only fit a distributed Agile model, but thrive within it and transform our working culture.
Here are ten hard-earned tips and tricks we’ve learned along the way, to ensure your organization succeeds in an agile, distributed environment:
1. Know your own environment
No two teams are the same. Each will consist of members located in different timezones and environments with their own set of unique environmental challenges to overcome. For that reason, it matters which roles are co-located and which ones are distributed. With each decision, examine the size and complexity of each team and project, and make a decision that will provide the most benefit with the least amount of disruption. For instance, how many locations and time zones are involved? Is the majority of the team co-located with only a few distributed workers, or is the distribution evenly spread?
2. Choose your teams wisely
There’s a lot to consider when it comes to constructing a new team – talent, skill, cost, availability – and that’s before you even consider the scope of the project and what’s involved. But creating the perfect match is possible if you take the time to assign roles carefully. For instance, features-based work is often easier to fit into a distributed working model, rather than more horizontal tasks. Take time to recognize which team members need to work more closely. That might mean product owners being co-located with the dev team, while some roles might need to be juggled or swapped to ensure efficient team working. Other, softer skills are also important, so aside from core technical expertise, consider the person’s motivation levels and if they can build trust or promote collaboration.
3. Carefully map out workflows
It’s crucial to have a complete understanding of how a project will run before deciding how your teams should be structured. Mapping out a project’s workflow also means you can map out activities, goals and the types of people you need on the team. It’s an opportunity to spot any obstacles that could prevent a team from working in an agile way and deal with them.
4. Enable frictionless communication
Systems of engagement that facilitate communication and collaboration between team members take on new importance when the work is complex and the teams distributed. While application lifecycle management tools can take care of logging a project’s progress, teams also need to be able to discuss, brainstorm and communicate easily. Collaboration technology comes in many forms (chat platforms, video conferencing, distributed source-code management, etc.). It’s worth experimenting until you find what works, or be guided by what the team already works with.
5. Don’t overcomplicate things
When there are entire oceans, time zones and cultural barriers separating your workforce, minor misunderstandings can turn into major issues. Clarity in communication therefore becomes paramount. In the distributed environment, nuanced comments or office politics can be lost in translation. Instead, prioritize transparency, because this is how you rapidly build trust in distributed teams.
6. Cultivate a team culture
Trust and respect are the foundations of a high-performing team. It’s a small matter of phrasing, but working as a team rather than with a team can significantly impact team dynamics. Treat team members equally and with consideration. For instance, something as small as thinking carefully when scheduling a call to find a timezone that works for everyone, can make all the difference.
7. Recruit with agility in mind
Not everybody is cut out for agile working. Therefore, you need to adapt your recruitment methods to identify employees that are highly motivated team players with excellent communication skills. Team cohesion is arguably more crucial in a distributed environment, as it can’t happen quite as naturally as face-to-face.
8. Know when to bring teams together
Consider in advance when it makes sense to bring team members together in the same location, and ensure you budget for it. We often work alongside our clients in their offices because it’s easier to get up to speed with all the small details – things that can easily be missed on Zoom or Slack. Sprints are also an obvious candidate for co-located working, especially at the early stages when team members really need to get to know one another and build trust.
9. Turn time zones to your advantage
If it isn’t practical to meet up, often due to distance, time zones or budget, use the fact that the team is geographically dispersed to your own advantage. Rather be a disruptive element, it could actually be your ticket to round-the-clock productivity. This is also good advice because, without sensible planning, time zones can actually hold up a team as members wait for co-workers in other time zones to start their day before they can progress their own work.
10. Team spirit
Last but not least, be sure to set aside “team time”. With distributed working of any kind – but especially in software development – there can be a tendency for team members to zone in on their own piece of the puzzle and lose sight of the whole. Agile working relies on cross-functional teams collaborating closely. To improve collaboration, hold regular get-togethers both in person (where possible) and virtually, that enable people to get to know each other. For specific projects, ensure time is set aside time to check-in with team members individually, to offer an opportunity to raise issues or ask questions. Not only does it increase trust and respect between teams, but it also improves outcomes by heading off potential issues before they blow up into problems.
I’m fortunate to have been practicing Agile since Infostretch launched more than 16 years ago. Hopefully, by sharing the knowledge I’ve gained over that time, this article can help other businesses as they embark on their own journeys toward embracing Agile methodology.