Around the start of the COVID-19 pandemic, I wrote about research into remote working in software development. At the time, some research approached the topic in an oblique way, insofar as remote working is a part of "global" and open source software development. Since 2020, however, studies of remote working in software development and other disciplines have exploded.
In the introduction to a special issue of Human Resource Development International on remote work, Jonny Gifford (2022) says that, out of changes prompted by the COVID-19 pandemic, "a rise in remote working and virtual teams looks to be the one that's most likely to be sustained permanently." He says that studies of productivity and well-being during the pandemic have shown varying results, with some studies and organisations having reported increases while others reported decreases. Communication and establishment of trust can be a challenge in virtual teams, though the relevant studies were undertaken up to a decade ago and communications technology has improved markedly since then. He also observes that remote working may raise equity issues, with some commentators fearing that remote workers will be overlooked for promotions, training and other career development opportunities, while other commentators fear that remote working may be a privilege available only to certain classes of worker.
Six months into the pandemic, John Meluso and colleagues (2020) argued for a "designerly" approach to virtual collaboration, in which collaboration practices are designed and tested for effectiveness rather than being the result of ad hoc decisions within organisations. They say that few academic reviews of the effectiveness of communication technology exist in this context, but propose several principles of collaboration and leadership based on the research that does exist:
- Embrace empathy. Make an effort to understand the situation of other team members, who might be working under quite different conditions.
- Build trust. This might be done by team-building activities and/or face-to-face activities.
- Balance time. Use "less-virtual" tools such as telephone and videoconferencing to avoid misunderstandings that can arise with "more-virtual" tools like e-mail; keep the size of meetings small; define clear roles and tasks.
- Communicate intentionally. Think carefully about the choice of communication channels and the techniques used to achieve communication goals.
- Re-establish shared reality. Establish routines through which team members can form expectations of how the team will operate.
- Reduce co-ordination costs. Smaller teams generally incur lower co-ordination costs, and larger projects can be divided amongst several teams by a shared leadership structure.
- Create psychological safety. "Psychological safety" refers to "a shared belief held by members of a team that the team is safe for interpersonal risk taking", which is achieved in a similar way to trust.
- Promote diversity. Team members should understand the perspectives of other team members, who may be from different cultures or backgrounds.
Software development under COVID-19
I found at least a dozen studies of software development during the pandemic, including a literature review published by Necmettin Ozkan and colleagues (2022). Here, I'll discuss only four studies published in 2022, which had the opportunity to follow up findings made in the early stages of the pandemic—Pernilla Ågren and colleagues (2022), who surveyed software developers from across the world; Paulo Anselmo da Mota Silveira Neto and colleagues (2022), who studied data extracted from code repositories and surveyed developers; Michael Neumman and colleagues (2022), who interviewed software developers at three large companies in Germany; and Longqi Yang and colleagues (2022), who studied work patterns at Microsoft.
Unsurprisingly, Ågren and colleagues report that remote working posed many challenges for communication but not so many for technical work such as programming and testing. Neumann and colleagues specifically note that development teams increased the formality of communication while working remotely, and reduced the level of social interaction, which had both positive and negative aspects (reduced disruptions and fewer meetings, versus longer and more closely-spaced meetings). Yang and colleagues report that workers at Microsoft become more "siloed" during the pandemic, in that workers reported fewer interactions with people outside their immediate work group.
Neto and colleagues extracted twelve main observations from their study, of which the most notable are that the pandemic didn't affect code contribution to the repositories they studied, and that the great majority of developers said that neither productivity nor quality had decreased while working at home. On the other hand, significant proportions of developers reported increased stress and sleep disruptions, as well as decreased mentoring provided to newcomers. Many developers reported no change in their happiness, but slightly more reported decreased happiness than increased happiness. (Of course many or all of these observations could be due to other effects of the pandemic rather than remote working as such.)
Both Ågren et al. and Neumann et al. recommend further research on building teams in remote environments, also noting specific challenges to inducting new team members in a remote environment and the psychological safety of team members. Neto and colleagues recommend research into social and human aspects of the pandemic more generally. Neumann and colleagues, who expect a greater level of "hybrid" working in the future, also suppose that future offices may be oriented towards collaboration rather than spaces for workstations. Yang and colleagues propose various methods for promoting "weak ties", such as "virtual drop-in spaces".
Global and open source software development
The foregoing recommendations are somewhat speculative, being inspired by observations made during the pandemic but yet to be studied in their own right. In the meantime, software developers do have substantial data on distributed teams from global and open source software development, of which several reviews have appeared in recent years.
Rafael Camara and colleagues (2020) reviewed 76 studies of "agile global software development", from which they extracted 48 practices with varying levels of prominence in the literature. The observe that, even though agile methods were originally developed for co-located development teams, many practices have subsequently been found to work for distributed teams. The practices appearing most commonly in the studies they reviewed are ones related to communication amongst the development team, such as daily scrum meetings (36 articles), multi-modal communication strategies (34 articles), planning meetings (24 articles), retrospectives (19 articles), and site visits (20 articles).
Maryam Kausar and colleagues (2021) extracted fifteen "patterns" from 212 published papers on agile development involving off-shore teams, reproduced below. In a workshop with eight developers and project managers who'd been involved in a distributed agile projects for several years, the great majority (6-8) reported finding each of these patterns useful for improving communications, with the exceptions being Follow the Sun (4 supporters) and Asynchronous Retrospective Meetings (5 supporters).
Asynchronous Retrospective Meetings | Distributed Scrum of Scrums | Local Stand Up Meeting |
Asynchronous Information Transfer | Follow the Sun | Onshore Review |
Central Code Repository | Global Scrum Board | Project Charter |
Collaborative Planning Poker | Local Pair Programming | Synchronous Communication |
Collective Project Planning | Local Sprint Planning Meeting | Visit Onshore-Offshore Team |
Finally, Bianca Napoleão and colleagues (2020) extracted a generic development process from 33 articles on open source software development published between 2000 and 2018. As they characterise it, open source developers iteratively identify some problem to be solved ("requirements elicitation"), select a developer to work on it, implement a solution, test it, review it, document it and finally release it. For the purposes of this article, I'm most interested in how each of these stages occurs without the developers sharing a physical space.
Napoleão and colleagues say that requirements elicitation typically occurs through community discussion via mailing lists, wikis, and the like, with the core developers identifying new features to be implemented in each iteration of the project. Once a requirement is identified, individual developers typically volunteer to work on it, though in some projects certain parts of the code are "owned" by particular developers.
The developer working on a particular issue may propose a solution to the community using the channels mentioned in the requirements elicitation step. After feedback, the developer writes the code and commits it to the project's repository. The submission would typically be reviewed by another developer (usually a core developer or code owner) prior to accepting the change. Napoleão and colleagues note various forms of testing but the process by which testing is performed is not very clear (possibly because different projects perform testing in different ways). Many projects use automated unit tests but Napoleão and colleagues also refer to tests being performed by other developers who may vote on whether or not the change should be accepted.
Compared to studies of agile software development, Napoleão and colleagues make no mention of daily scrum meetings or social interaction; communication instead occurs via asynchronous tools such as mailing lists, wikis, and issue tracking systems. Once code has been written, further communication occurs through code review and manual testing, which I take to be performed asynchronously (this has certainly been the case for small open source projects I've worked on myself).
Conclusion
I've frequently heard the COVID-19 pandemic referred to as "forced experiment" in remote working and distributed teams. In many respects, the experiment is yet young; even though the COVID-19 pandemic produced a lot of data on remote working, studies can't easily separate the effects of the pandemic itself with the effects of remote working. Nor do we know how working patterns and organisations might change in response to the forced experiment. The evidence from global and open source development, however, suggests that remote working can be effective in software development, even if much remains to be known about building virtual teams and what future offices might look like.
References
Pernilla Ågren, Eli Knoph and Richard Berntsson Svensson (2022). Agile Software Development One Year Into the COVID-19 Pandemic. Empirical Software Engineering 27, 2022, Article 121.
Rafael Camara, Annelyelthon Alves, Iury Monte and Marcelo Marinho (2020). Agile Global Software Development: A Systematic Literature Review. Proceedings of the XXXIV Brazilian Symposium on Software Engineering, October 2020, pages 31–40.
Jonny Gifford (2022). Remote Working: Unprecedented Increase and a Developing Research Agenda. Human Resource Development International 5(2), 2022, pages 105-113.
Maryam Kausar, M. Ishtiaq and Shariq Hussain (2021). Distributed Agile Patterns-Using Agile Practices to Solve Offshore Development Issues. IEEE Access, December 2021.
John Meluso, Susan Johnson and J. Bagrow (2020). Making Virtual Teams Work: Redesigning Virtual Collaboration for the Future. SocArXiv, 2020, pages 1-14.
Bianca M. Napoleão, Fabio Petrillo, and Sylvain Hallé (2020). Open Source Software Development Process: A Systematic Review. IEEE 24th International Enterprise Distributed Object Computing Conference, 5-8 October 2020, Eindhoven, the Netherlands.
Paulo Anselmo da Mota Silveira Neto, Umme Ayda Mannan, Eduardo Santana de Almeida, Nachiappan Nagappan, David Lo, Singh Kochhar, Cuiyun Gao and Iftekhar Ahmed (2022). A Deep Dive into the Impact of COVID-19 on Software Development. IEEE Transactions on Software Engineering 48(9), September 2022, pages 3342-3360.
Michael Neumann, Yevgen Bogdanov and Senol Sager (2022). The Covid 19 Pandemic and Its Effects on Agile Software Development. 5th International Conference on Software Engineering and Information Management, January 2022, pages 51–60.
Necmettin Ozkan, Oya Erdil and Mehmet Şahin Gök (2022). Agile Teams Working from Home During the Covid-19 Pandemic: A Literature Review on New Advantages and Challenges. International Conference on Lean and Agile Software Development 2022, pages 38-60.
Longqi Yang, David Holtz, Sonia Jaffe and Siddharth Suri (2022). The Future of Information Work. Communications of the ACM 65(7), July 2022, pages 27-29.