What Is Distributed Software Development?
Distributed software development refers to planning, designing, building, testing, and managing software with decentralized teams located across different physical workspaces. These teams use internet-based collaboration tools and communication platforms to build software.
Distributed Development Teams
The distributed software development model requires teams working in decentralized locations to collaborate in a time- and location-agnostic fashion. A distributed software development team might reside in the same ZIP code, but never work in the same physical area.
The team coordinates work by using web-based forums, project management platforms, source code databases, and messaging and videoconferencing software.
Can Distributed Software Development Be Agile?
Distributed DevOps teams use Agile development principles and continuous software development practices, such as continuous integration, continuous delivery, and infrastructure automation to create software with globally dispersed teams.
The collaboration and transparency required for DevOps methodology — as well as the open-source software development that heavily influenced DevOps and agile development principle — make this environment a good fit for distributed software development.
Dave Mangot, Principal at Mangoteque and Global DevOps Team Leader at Helpful Engineering, leads DevOps transformations at companies like Salesforce, Cable & Wireless, and SolarWinds. He believes that using Agile development practices makes it less likely that you will experience transparency issues in distributed teams.
“The concepts of transparency are built into the fundamentals of the Agile development process. Whether it’s a daily standup or using an Agile board, transparency is the core,” says Mangot. He believes that once a distributed development team adopts remote-first culture, problems involving a lack of transparency — for instance, private conversations and agreements that lead to a siloed culture — disappear.
Virtual Standups and One-On-One Sessions
A lack of transparency and collaboration are common pitfalls with newly formed distributed development teams. Mangot offers some tips for effectively leveraging virtual communication to combat transparency issues, based on his experience with distributed software development teams.
“I’ve seen lots of people preach games, happy hours, and things like that — which are all great ideas — but forming social bonds over the course of daily work does not need to feel forced,” he says. He recommends allowing people the time to socialize during daily standup meetings, but keeping a structured cadence in place.
“The virtual standup needs to be respectful of those in attendance, just like in a regular standup. It should not be a meandering affair. If there are five minutes of chatter at the start, that is fine, and then get into the standup and allow folks to hang out afterward,” says Mangot.
“A good manager will always observe the team dynamics and identify potential problems before they become real problems,” he says. “Empowering distributed development teams to own the success of the team is very important. I often ask individuals how they think the team is doing. There are lots of problems that the team sees that you [as the manager] might not notice.”
Mangot believes holding consistent, productive one-on-one meetings is a sound strategy for measuring how the team views their workplace culture when they aren’t around other people in person.
“Never miss one-on-one meetings,” he says. “Those conversations are crucial to taking the pulse of the team. If you have a calendar conflict, never cancel the one-on-one — always reschedule it.”
Mangot recommends Lara Hogan's work on the power of one-on-one meetings for distributed development teams. Her company Wherewithall trains and coaches managers and provides free tools and resources for leveling up your one-on-one sessions.
Distributed Development Challenges
The DevOps model is not specific to distributed software development, but the principles and practices behind DevOps are useful concepts for managing common pitfalls of the distributed development model.
“There are no DevOps concepts that are at odds with distributed teams,” says Mangot.
DevOps replaces colocated, siloed engineering and operations teams with distributed, cross-functional teams. Managing this kind of team, composed of software engineers and operations professionals, requires strategy and execution.
“The biggest disadvantage to cross-functional teams is that they require a certain size of organization to work,” says Mangot. “At a very small company, all teams are, by definition, cross-functional. At a large organization, you have enough staff to populate teams, and that’s probably necessary to get anything done.”
Helpful Engineering organizes thousands of engineers into cross-functional teams by project, as well as SMEs and leaders that teams can approach for help. Mangot believes that midsize companies are usually unable to take advantage of the speed and agility enabled by cross-functional teams.
Mangot cites Google’s embrace of DevOps to highlight the popularity and effectiveness of DevOps concepts in the distributed development model. Google emphasizes the importance of a shared ownership model and the relationships between partner teams. The emphasis on open collaboration is a core tenet of DevOps and distributed development practices.
Strong collaboration between distributed development teams scales across large organizations like Google, but Mangot thinks distributed teams provide an outlet for growth that is essential for smaller teams as well.
“There are going to be obvious limitations around ‘two-pizza teams’,” says Mangot, using a term made famous by Amazon. “However, when prioritizing and distributing work, it’s important that we grow multiple team members along multiple axes, instead of having local pockets of knowledge. If we post and record our demos in a central location, we can get feedback from all over the world from our team members and other stakeholders.”
Advantages of Distributed Software Development
In 2009, MIT Sloan Management Review published a study on the performance of 80 distributed software development teams, including teams working in different cities, countries, or continents. The researchers found that, with the appropriate management processes in place, distributed teams (so-called virtual teams) can significantly outperform co-located teams, despite the associated challenges. The study also determined the following:
- The quality of “task-related processes” appeared to determine whether distributed teams became a “liability or an opportunity.”
- “Social processes” boosted the performance of the distributed software development teams and co-located development teams.
- “Socio-emotional processes” indirectly enhanced the distributed development team's performance by increasing “knowledge transfer and better resolution of team conflicts.” These processes were not a differentiating factor, but “facilitated more task-related processes.”
Distributed Development Best Practices
Best practices for distributed development teams include creating meaningful virtual interactions, having face-to-face onboarding and training, and using tools to measure and manage distributed development standards.
- Virtual Onboarding: Your recruiting process doesn’t end with the signed employment offer. Provide onboarding experiences that set up your new hires to succeed and demonstrate your team’s virtual collaboration abilities. Include face-to-face video meetings with the new hire’s manager and team. Create onboarding documentation that establishes your distributed development standards and workflow cadence, and include resources, such as a contact sheet with phone numbers for their team and the organization.
- Video Validation: Face-to-face meetings are productive culture-building activities for distributed development teams. Integrate more face-to-face virtual interactions with distributed employees, especially at the start of a project or employment. Incorporate video meetings for the first week of training and consider co-located, in-person training for the first 30 days of work, if possible. Mix up your sessions by including team-building activities designed to create more casual interactions and provide a platform for teams to get to know each other in a different setting. For examples of top team-building activities for remote teams, read this article.
- Measured Meritocracy: Distributed software development requires buy-in from everyone on the team, so create shared goals. Coordinate accurate and attainable timelines for distributed development teams and celebrate meeting development milestones. Distribute work equally, and measure production with metrics that determine if your distributed teams are meeting business needs.
- Eliminate the Grapevine: Be transparent and share data with the entire team using asynchronous, easy-to-access, and explicit communication channels. Incentivize collaboration and reward transparency when a project is off track or a problem is blocking a team. To learn more about how to effectively communicate with a remote team, read this article.
Social Standards: It’s crucial to foster social interaction and a culture of connection in distributed development teams. Be wise when choosing how you leverage social media and collaboration tools, and create standards for your team regarding platforms like Twitter, messaging chat software, and social network forums (such as a knowledge base comment section).
Distributed Development Collaboration Tools
Collaborative software and technology is integral to open-source development and the culture of creating software with teams dispersed across different organizations, locations, and time zones. The open-source software community helped catalyze the spread of collaborative software and technology, including cloud databases, streamlined programming languages, automation frameworks, testing tools, containers, and version control software, that are crucial to the distributed development model. Learn more about version control software by reading “The ABCs of Software Version Control.”
Cloud-based Agile project management platforms, issue-tracking tools, productivity applications, and videoconference software are effective implements for managing distributed development, alleviating project complexity, and taking advantage of a talented workforce regardless of location.
Mangot thinks collaboration tools are crucial to managing distributed development teams. He recommends a good messaging and chat platform, an Agile tracker or Scrum task board tool, and an on-demand videoconference solution.
“Work needs to be visible, and being able to jump in and take a difficult conversation out of the chat and into a real-life discussion without hassle is crucial,” he says.
To learn more about effective remote collaboration tools, read this article.
Collaboration Tools Help Scale Open-Source Pandemic Response
Helpful Engineering is a fully distributed, global team with thousands of diverse volunteer engineers publishing documentation in GitHub, which is an open-source version-control platform compatible with the distributed software development model. GitHub provides Helpful Engineering’s distributed development team with a tool to host code, documentation, and image files, so volunteers can easily collaborate in time- and location-agnostic cadence.
“We use GitHub primarily due to its familiarity in the open-source engineering community,” says Shayan Chowdhury, a software lead and project manager who volunteers at Helpful Engineering. “It’s practically a household name, not only for computer scientists, but also for community-driven hardware projects. It seemed fitting to keep our tools on the same platform.”
Chowdhury points out that Helpful Engineering is not asserting that GitHub is the only platform to use, and that many volunteers use GitLab, BitBucket, or other platforms to contribute to the project.
More than 17,000 people use Slack at Helpful Engineering, but the number of people consistently working on projects is much lower. Volunteers also use an Agile project tracking tool, Slack, and Zoom to organize and share information and coordinate development projects.
As a software lead, Chowdhury uses collaboration tools to manage distributed development tasks, including onboarding new members, diverting DevOps resources, and providing organization and direction for the software projects.
“Due to the sheer number of teams and projects, we use a top-down approach to regularly talk to the team leads to check up on their progress and see what tools we can provide to help bring their projects to life,” says Chowdhury.
Distributed Communication and Documentation
Coordinating the flow of information across dispersed teams is crucial to empowering distributed collaboration. Building software is a process, and it requires sharing ideas and resources. One of the biggest pitfalls of distributed software development is siloed knowledge and resources.
Mangot believes the best way to organize information and coordinate development teams across different time zones is to deploy a hybrid approach with accessible communication and written documentation.
“The number one practice I’ve found for organizing information is to make sure that it is available asynchronously,” he says. “The regular practices, using wikis or GitHub repositories, are fine, but distributed teams and synchronous information sharing are at odds. Don’t let information die in a Zoom call.”
Instead of relying solely on a synchronous, live knowledge transfer that requires every team member’s presence, Mangot recommends that distributed teams publish screenshots and recordings of demos and retrospectives. They can use applications like Slack or Teams to document conversations and publish meeting notes.
“It’s so important to plan engineering work,” he says. “If we come into work every day and work on whatever happens to be in front of us, you’re going to have a bad time, distributed team or not. When we write up technical specifications and plan our work, we get much better results. If you can’t coordinate a time for some work to be performed with more than a week’s notice, assuming that’s the minimum iteration size, you have bigger problems.”
Asynchronous communication promotes time-agnostic feedback that is documented, accessible, easy to track, and evergreen. In turn, this documentation becomes a valuable artifact and resource for future projects and new employees.
Communication Is a Currency for Distributed Volunteers
Chowdhury believes communication is the most important practice when building and managing a distributed software development project.
“Effective communication and feedback are the backbone of any community-driven project,” he says. “Each project’s visionaries, managers, developers, marketers, and users completely depend on each other. Since Helpful Engineering’s projects are volunteer-driven, people only devote time to a project if they agree with its direction, where back-and-forth communication is essential.”
Chowdhury says the most challenging aspect of his work with Helpful Engineering is keeping projects afloat.
“It takes a lot of proactivity right at the start from the project leads,” he says. “My software co-leads and everyone on the front end and DevOps teams need to continuously communicate and support each other to keep us all motivated on these projects. If you’re working on something that other people care about, that they continuously show support and need for, you’ll want to keep doing it.”
Learn more about leveraging different communication channels to manage distributed teams across different geo-locations and time zones in “Distributed Teams vs. Remote Teams.”
Outsourcing Distributed Development
Outsourcing is distinct from distributed development. The former does not exclusively refer to co-located software development teams; it also refers to leveraging specialized skill sets by partnering with solution providers that perform task-related processes more efficiently.
But also note that as a cost-saving strategy, outsourcing is less effective than leveraging a culturally diverse talent pool and the flexibility to scale projects across homogenous knowledge hubs and different time zones for 24/7 project coverage.
For example, a small startup might hire a recruiting firm specializing in HR-related tasks associated with finding, hiring, onboarding, and managing contractors with highly specified skill sets. In addition to freeing up the time and resources related to recruiting and hiring employees, this outsourced solution provider assumes more of the financial costs and risks.
The following can also present challenges to outsourcing software development tasks to distributed teams in different geo-locations:
- Managing cultural differences (for example, task-related goals and relationship-related goals)
- Coordinating workflow overlap and communicating with time delays
- Compromising on in-house collaboration on task-related development processes, such as code sharing and software testing
Become a Time Zone Master
Working across time zones adds new organizational challenges to day-to-day tasks. Without the right strategy, collaborating with distributed teams in different time zones can limit synchronous feedback and communication.
Distributed development teams often feel the need to be available 24/7 to match management's cadence or meet the demands of groups in specific geographic regions. As a manager, you can combat burnout by establishing core work and collaboration hours with each team member based on their time zone:
- Collect, share, and update these hours with everyone in your team agreement documentation — especially when onboarding and training new team members.
- Use a structured time overlap schedule to coordinate meetings and workflow across different time zones. Strive for the best possible schedule overlap that incorporates a significant percentage of your team based on availability.
- Tools like the hTime Global Clock and web-based time zone calculators help plan overlap schedules. Have a system for asynchronous collaboration to account for workflow and communication outside of the overlap window.
Adequate time overlap promotes efficiency — every minute of a meeting during overlap counts. The pressure to stay focused on these meetings and respect the different times of day attendees are meeting and working together builds a culture of respect. Culture impacts collaboration, and the challenges of distributing work across different time zones are inherently a matter of respecting cultural differences and managing time zone overlaps.
“Working with people in different time zones may seem like an issue, but more than anything, it’s an asset,” says Chowdhury. “First of all, you meet new people who can offer refreshing perspectives on how to get things done, in ways you may never have thought of.”
Chowdhury believes this type of collaboration complements the team by opening up discussions to think bigger and bolder without losing ground.
“More often than not, these kinds of discussions can be invaluable, making you reevaluate your assumptions and make more room for collaboration,” he says. “It allows people to take shifts on certain tasks, especially management. This not only eases the load of a single person or group in a time zone but enables parallel work and communication when people aren’t available due to time zones.”
Distributed Time Zone Meeting and Collaboration Tool
Use this template to plan your weekly one-on-one meetings or videoconferences. Customize the template to reflect your team’s availability by time zone and preferred working hours. This resource is designed to help you plan and manage your team’s live collaboration across different time zones, a critical task for managing distributed development workloads.
Remain Effective While Working Remotely with Real-Time Work Management in Smartsheet
Empower your people to go above and beyond with a flexible platform designed to match the needs of your team — and adapt as those needs change.
The Smartsheet platform makes it easy to plan, capture, manage, and report on work from anywhere, helping your team be more effective and get more done. Report on key metrics and get real-time visibility into work as it happens with roll-up reports, dashboards, and automated workflows built to keep your team connected and informed.
When teams have clarity into the work getting done, there’s no telling how much more they can accomplish in the same amount of time. Try Smartsheet for free, today.