How to manage distributed agile teams to accelerate delivery and improve software quality? Let’s find out.
With the world turning upside down due to the pandemic, the meaning of pretty much everything has changed. Be it our perspective towards life, the decisions we make, the way we do our work, or the way we develop software – the entire world has undergone a massive change.
And the Software Development Industry is no different.
Having more than a decade of experience helping businesses develop valuable software products – I believe there is nothing that can beat the agile processes in delivering quality products on time.
However, today, when half of the world is working remotely, agile values and principles became contradictory for many. Several agile followers and entrepreneurs are thinking:
Well, implementing agile in a remote environment is not just a necessity but a profitable and unmatchable approach for businesses looking to create value ASAP.
We will find the answer to “Why” later in this blog. Let’s first set the path by defining what Distributed Agile Teams exactly mean.
A distributed agile team is a team operating from two or more geographical locations using the principles of agile methodology. Such teams lack a common or shared physical space and rely on digital technology to communicate and collaborate. The sole purpose of these teams is continuous and on-time delivery of software products that perform seamlessly and robustly.
Here are different types of teams and what a distributed team looks like:
Though agile principles are used widely for software development, their implementation in a distributed environment will bring a lot of challenges. Let’s talk about all of them and find out how Apptunix solves them for their clients overseas.
Being a leading software development company, we often serve clients that have an in-house team equipped with business analysts, designers, and other resources. However, they reach us for hiring specific skill sets or for outsourcing their development work.
Working with a team sitting in a different corner of the world with a different time zone, is a bit tedious and requires extra effort. Here are some of the challenges we face and how we tackle those to make sure the development proceeds seamlessly and the end-product meets all business needs.
We have built agile in our company culture. Also, the most-important agile principle favors individuals and interactions over tools and processes. But, there is no doubt in saying that communication is a tough point to catch when working remotely. There is nothing that can beat the essence of face-to-face communication and there is no problem that can’t be solved with interaction and insightful discussions.
While working remotely, it is really hard to predict the exact state of the project and the quality of the work happening which may lead to “several sources of truth” resulting in unpleasant surprises and misunderstandings. But, for a distributed agile team, a culture of shared goals and ownership is essential to project success.
Our leaders believe that two or more location-independent teams with a common vision, relaxed but professional reporting cycle and fair distribution of work are more effective than a co-located team lacking in these areas.
To develop such a culture, our experts encourage the following activities throughout the project:
All these meetings have different agendas and are carried using video conferencing tools. For example, daily scrum is a face-to-face meeting that lasts no more than 15 minutes and all team members talk about three things here – the tasks they are going to complete today, the tasks they completed yesterday, and if they have any quick questions or roadblocks to discuss with the product manager.
An obvious challenge of working remotely is team members not knowing the state of others’ work. These daily scrum meetings tackle it for us and to make sure the value of conducting these virtual meetings don’t get lost, we use digital whiteboards, screen sharing, and make notes of any problems or roadblocks.
We prefer using Jira as a project management tool and scrum masters run through a virtual sprint backlog which lets each team member give an update on how their work is progressing, ask questions related to any particular sprint, or raise any blockers.
The same approach should be applied to other meetings and scrum masters and project managers should make sure every one of the team members is present in these virtual meets to make sure everyone is on the same page.
Also Read: How an Outsourcing Company Can Help You Survive the Effects of Recession?
With this approach, we don’t even find it difficult to implement agile in large organizations where there are several partners, stakeholders, and investors involved in the delivery and integration of multiple technologies is required.
Here is a list of project management tools using which we work with geographically distributed agile teams effectively to deliver valuable products on time:
When working in a distributed environment, teams often lose focus on the long-term goals. To satisfy the immediate needs of sprint planning, they may write low-quality code which later on leads to bad software products.
We tackle this challenge by implementing pair programming and organizing regular code reviews.
Pair Programming: It is a technique used in software development, where two developers work on a single machine. Each programmer has its own keyboard and mouse. While one developer acts as a driver who writes code, the other serves as an observer. The task of the observer is to proofread the code being written, analyze it, and figure out any ways to improve it.
We prefer switching these roles often in order to create a balance between developers.
With pair programming, it is like having someone audit your code right away and routinely. It is a higher type of code audits. Two individuals must be there and comprehend the program being written. If one sees issues with the other’s code, it can be corrected immediately. This technique helps us build high-performing and bug-free apps in two ways.
3.No Code Ownership
In the software development process, the absence of collective code ownership leads to several problems. When code is owned by the whole team and something goes wrong, that’s when the blame game starts. In a distributed environment, it is a problem that needs to be solved for developing healthy software on-time.
Our team at Apptunix uses a distributed version control system to tackle the problem. It creates a local copy of the code repository in every developer’s machine which allows them to commit, branch, and merge the code locally. The server in use doesn’t require saving a physical file for each branch and it just requires the difference between each commit.
Our team’s preferred distributed version control system is Git which is also the most-popular worldwide. It allows developers to work independently and experiment freely. If you want to know the difference between a centralized and distributed version control system, have a look at the image below.
With each developer pushing code to their own repository, distributed version control systems help development teams follow strong hierarchies and workflows. It also helps in setting a proper code review process to make sure only quality and well-optimized code enters the main repository.
4.Different Time Zones
The main issue with distributed agile teams is people working from different corners of the world having varied time zones. In such a situation, the chances of a communication gap arising are very high because of which project quality will surely suffer.
Most of our clientele is from the USA, UK, and Middle-East. Because of the huge time difference, we have to follow a strict approach to manage timelines and deadlines for delivering a project. We use time overlaps for meetings and joint teamwork and our project managers tend to plan and prioritize everything in advance to make every minute count.
A bit of planning and positive pressure will help align everything in shape and focused on delivering ahead of time – a major agile principle.
Hiring experts from various geographical regions brings diverse talent to the pool that provides tons of benefits for an organization – from different software development approaches to cost-saving and management. However, at the same time, dealing with a distributed agile team requires an understanding of various cultures and social practices of different regions.
For instance, there are particular differences in the way of treating deadlines in various cultures. Engineers from countries like the USA or India provide serious respect to deadlines and focus on delivering their assignments on schedule. Unexpectedly, developers from other countries may have a relaxed approach to the deadlines.
When it comes to addressing cultural differences, team-building activities help. Human relationships are a major pillar that helps in shortening miles-long cultural differences.
We don’t treat our client’s team sitting miles away from us as a different family or competitors. Even if we can not depend on physical contacts, we insist on virtual meetings with their teams and that helps us keep the spirit high during unexpected times. Our mission is to develop long-term relationships with our clients and building those is the fuel that drives us as a business.
Working in the same room where developers can communicate and collaborate in-person is the key to all agile methodologies. However, in a remote environment, it is not possible.
So, how can distributed agile teams work? Here are some best practices to inculcate agile in a distributed environment:
1.Tailor Agile to Suit Your Business Needs
Agile Manifesto was published in 2001. It has been twenty years and a lot has changed in the world. So, we can not expect to stick by the same rules and drive success in today’s modern software development world.
Around 86% of 101,5 internationally surveyed software developers prefer Agile for their work – HYGGER.
While agile is still a very successful approach for building software – you can not swear to implement every one of its principles today. So, the key is to take out rules that don’t make sense anymore and tweak those that need to change as per your business needs.
For example, the agile manifesto prefers face-to-face conversations while building software. But, in today’s remote environment that is not possible. So, you need to educate your team members about the additional modes of communication and collaboration and focus on being open and available to each other.
Everyone in the team needs to understand the importance of commitment while working remotely and even top-level managers should support the team to drive agile in the environment.
If you want your team to be agile, you need to play the role of a mentor as well as a facilitator. This route may have some challenges but you will figure it out gradually as you understand the unique needs of your business.
2.Creating a Great Product and Sprint Backlog is Essential
Agile teams can’t deliver value until they have a high-quality product and sprint backlogs that describe what they want to build and how.
In the first place, agile teams must have a shared understanding of the product, its features, and how they are going to manage the product backlog. This is a mandatory step for remote as well as co-located agile teams.
Though in co-located teams it is a bit easy, the remote team often finds it challenging. The best way to tackle this challenge is to add additional time while sprint planning for reviewing the product vision and the roadmap to achieve the same.
Also, make sure you have consistently scheduled, compulsory backlog refinement discussions. Since it’s very easy to miss informal interactions, it is essential that teams actively participate in product and sprint backlog refinements.
3.Increase the level of documentation
Agile development focuses on working software over documentation, yet that doesn’t imply that documenting APIs, architecture, and code isn’t required.
Agile teams working remotely for a long time might need to talk about documentation norms and check whether more critical endeavors are needed. At times, documenting the code can supplant some of the in-person execution conversations around how a code module functions or how a developer is handling technical debts.
4.Invest in Self-Organizing Teams
Since remote software development involves its own challenges, distributed agile teams need to be strong, motivated, and intelligent. You need team members committed to your way of working, vision, and to each other. Therefore, you need to hire individuals very carefully.
Allowing people to decide to be a part of your team to work the agile way-is crucial. They must be willing to work and deliver the agile way, be active, and available whenever the project demands. Let people come forward to join the efforts and then bring them to your team to make their own rules and working agreements.
5.Keep the Morale of Team Members High
It is a best practice to distribute the responsibilities equitably between the team members of a distributed agile team- not just for distributed agile teams but for co-located teams as well.
But, in a distributed agile team, uneven distribution can have the worst outcomes.
When an over-burden developer postpones the delivery for other members, it can turn out to be a big problem for other developers. Simultaneously, people with too little work may turn out to be less motivated and feeling less worthy.
If your team includes both – in-house and remote developers – ensure the remote developers don’t end up in the situation of subordinates. They are not “helping” the administrative center, they are doing a lot of work to assist the common venture.
Distributed software development is becoming the new norm due to the various advantages it offers. With considerable efforts, a distributed agile team can be set up to work as per the agile standards guaranteeing better results and flexibility to change.
The key isn’t in following every agile principle, asking for everyday reports, or making strict rules. The key is in assembling an inspired team of people having the same mindset that might be in various parts of the world and have distinctive working habits and cultures.
That’s how we at Apptunix are dealing with remote software development projects successfully for over a decade now with people who belong from various corners of the world. Would like to drive agile transformation with our team of agile and scrum experts?
Get the weekly updates on the newest brand stories, business models and technology right in your inbox.
Nikhil Bansal is the Founder and CEO of Apptunix, a leading Software Development Company helping startups as well as brands in streamlining their business processes with intuitive and powerful mobile apps. After working in the iOS app development industry for more than 10 years, he is now well-equipped with excellent problem-solving and decision-making techniques.
C-127 Phase VIII Industrial Area, Mohali, India. 160071
Suite #304, 11200 Manchaca, Austin, Texas, US, 78748
#2044, Floor 20, Burjuman Business Tower, Dubai.