Collaboration via aligned autonomy for commercial software teams

Date

2017-11-06

Authors

Kalliamvakou, Eirini

Journal Title

Journal ISSN

Volume Title

Publisher

Abstract

Modern software organizations produce increasingly complex and sophisticated products that build on the effort of multiple individuals and teams. This reality highlights the critical importance of collaboration and the support of its various facets, which are still central concerns for software engineering research and practice. Software organizations also aim to motivate their developers and teams and help them be productive. Knowledge work research highlights the importance of autonomy in work design for satisfaction and happiness. The now pervasive adoption of agile methods and advocacy of self-organization have made autonomy and its challenging practical application a mainstream focus for software engineering research and practice. Employee autonomy and effective collaboration are thus essential for software companies to motivate developers and help them deliver successful software products. Yet, essential as it might be for organizations to combine them, autonomy and collaboration seem conceptually and practically at odds with one another; is it possible for people or teams that are working together on something be autonomous? One can imagine teams finding it challenging to organize the development work of autonomous developers. Furthermore, on the organizational level it can be difficult to align autonomous agents towards a desirable company strategy. Finally, management may need to be revisited as a function when individuals or teams have autonomy in their work. Given the complex landscape that software teams are part of in today’s mod- ern organizations, we need to understand how they collaborate in the context of their environment. This dissertation builds on three substantial, diverse case studies based in industry, capturing various ways that several software organizations organize collaborative development work. In the first study I examined how 24 commercial software teams in di↵erent companies organize their development work through their use of GitHub. In the second study I probed how Atlassian scales the practices of its rapidly growing development teams and enacts a culture that keeps them aligned to the strategic goals. In the third study I explored the role of engineering managers at Microsoft and how they support software developers and teams to organize their own work and generate quality outcomes that meet organizational goals. The studies are primarily qualitative and I have used a variety of data collection methods including interviews, observations, documentation review, and surveys. Tension between autonomy and collaboration surfaced in the studies and it be- came the central challenge I investigate in this dissertation. By understanding the meaning of autonomy for the studied organizations, the definition and characteristics of autonomy evolved and, upon synthesis of the findings, I argue that autonomy is not incompatible with collaboration but rather that the two concepts build on each other. I articulate and propose a conceptual framework of collaboration via aligned autonomy for software companies in this dissertation. This represents a holistic view of organizations and includes four areas to consider when making autonomy the foundation of collaboration: team collaboration practices, scaling strategies, cultural values, and manager roles. The framework has implications for the study of collaborative software development by proposing to look beyond the combination of independence and coordination as the basis of collaboration. At the same time, the framework can guide commercial software teams and organizations on how to empower development teams, yet not compromise strategic vision.

Description

Keywords

Collaboration, Autonomy, Software engineering, Software organizations, Software teams

Citation