Academia.eduAcademia.edu
A grounded theory of organizational structures for development and infrastructure professionals in software-producing organizations Leonardo Alexandre Ferreira Leite Thesis presented to the Institute of Mathematics and Statistics of the University of São Paulo in partial fulfillment of the reqirements for the degree of Doctor of Science Program: Computer Science Advisor: Prof. Paulo Meirelles Coadvisor: Prof. Fabio Kon São Paulo May, 2022 A grounded theory of organizational structures for development and infrastructure professionals in software-producing organizations Leonardo Alexandre Ferreira Leite This version of the thesis includes the corrections and modifications suggested by the Examining Committee during the defense of the original version of the work, which took place on May 31, 2022. A copy of the original version is available at the Institute of Mathematics and Statistics of the University of São Paulo. Examining Committee: Prof. Fabio Kon (advisor) ś IME-USP Prof. Guilherme Travassos ś UFRJ Prof. Breno de França ś Unicamp Prof. Jessica Diaz ś UPM (Spain) Prof. Carolyn Seaman ś UMBC (USA) i Acknowledgements First, I would like to express how extremely grateful I’m to my advisors, Prof. Paulo Meirelles and Prof. Fabio Kon, for all the support and trust in this research effort. It has been a great pleasure working with them. Also, their intense and direct involvement in this project’s activities was vital for its success. In this sense, I would like to extend my sincere thanks to a few other scholars who have collaborated with us over these years: Dr. Dejan Milojicic, Prof. Carla Rocha, Prof. Gustavo Pinto, Dr. Claudia Melo, and (super) Nelson Lago. Their involvement was inspiring and motivating. I would also like to recognize the Professors who dedicated themselves to examining and providing valuable feedback on our work during the qualifying examination and the final defense (Prof. Rodrigo Bonifácio, Prof. Guilherme Travassos, Prof. Breno França, Prof. Jessica Diaz, and Prof. Carolyn Seaman). Second, I would like to say that earning this Ph.D. title resulted from a long journey. Thus, I remember with affection the Professors who were part of my academic journey, especially Prof. Lucia Filgueiras, Prof. João José Neto, and Prof. Marco Aurélio Gerosa. Likewise, I would also like to acknowledge some of my IME classmates (Melissa, Tallys, Dylon, Siqueira, Tatiane, Marcelo, Giuliano, Paula, Haydée, Erika, Jean, Vanessa, Fatemeh, Luana, Isaque, and Tássio) for their companionship and the moments of small talk in the lab, studying for tests, and eating dinner at the University restaurant. Those were special moments, and I’m sorry that the pandemic limited our time together. With regards to my job at Serpro (Brazilian Federal Service for Data Processing), I would like to thank my leaders and colleagues Roberta Monteiro and Daniel Cesar, who supported my academic activities by providing me the necessary work flexibility. I would also like to recognize them and my other colleagues for their interest in my research, especially Marcio Frayze and Julianno Martins (I promoted my research on łp de Podcast,ž their podcast on software architecture). Third, I would also like to express my deepest gratitude to my family for their support and incentive throughout my doctoral years, especially Lari (my wife), Bertília (my mother), ii Marco (my father), and Julia (my sister). Particularly, I would like to express my most profound appreciation and love to my wife, Lari, to whom I am forever thankful, especially considering the enormous amount of time I dedicated to this research. I would also like to mention the logistical support provided by Iranice (my mother-in-law). I also take the opportunity to tenderly remember Jaíra (my grandmother), who left us just before the beginning of this research, and to lovely welcome Dante, my son, who will be born very soon. I would be remiss in not mentioning all the family members, friends, and colleagues who (in person or virtually) attended my thesis defense. In particular, I’d like to acknowledge the family people and close friends who helped me practice for my defense presentation: Bertília (my mother), Leo (my step-father), Koga, Gui, and Tássio. And also, the other people who supported me in this preparation (e.g., Rafael Fernandes, Lara Vacaro, Prof. Alfredo Goldman, and Prof. Afonso Ferreira), thanks to them too. Special thank to Julia (my sister) for the support during the presentation. Last, I would like to mention the 75 amazing professionals who honored me with the chance to discuss their work environments and the colleagues who referred those interviewees to me. Their spirit of collaboration was the raw material for this thesis. To each interviewee, I say: ła piece of your soul lives on in these pages! Thank you so much again and again!!!ž I hope this same spirit of collaboration continues to foster the evolution of the communities involved in the great endeavor of software production. Resumo Leonardo Alexandre Ferreira Leite. Uma teoria fundamentada sobre estruturas organizacionais para profissionais de desenvolvimento e de infraestrutura em organizações produtoras de software. Tese (Doutorado). Instituto de Matemática e Estatística, Universidade de São Paulo, São Paulo, 2022. DevOps e entrega contínua têm impactado as estruturas organizacionais dos grupos de desenvolvimento e infraestrutura em organizações produtoras de software. Nossa pesquisa visa revelar as diferentes opções adotadas pela indústria de software para organizar tais grupos, entender por que diferentes organizações adotam estruturas distintas e descobrir como as organizações lidam com as desvantagens de cada estrutura. Ao entrevistar 68 qualificados profissionais de TI, cuidadosamente selecionados, e analisar essas conversas por meio de um processo de Teoria Fundamentada (Grounded Theory), identificamos condições, causas, razões para evitar, consequências e contingências relacionadas a cada estrutura descoberta (departamentos segregados, departamentos colaborativos, departamentos mediados por API e departamento único). Esta tese, então, propõe uma teoria para explicar estruturas organizacionais para profissionais de desenvolvimento e infraestrutura. Essa teoria pode apoiar profissionais e pesquisadores na compreensão e discussão do fenômeno DevOps e seus problemas relacionados, e também fornece informações valiosas para a tomada de decisões dos profissionais. Palavras-chave: DevOps. estruturas organizacionais. entrega contínua. times de software. engenharia de software. Teoria Fundamentada. Abstract Leonardo Alexandre Ferreira Leite. A grounded theory of organizational structures for development and infrastructure professionals in software-producing organizations. Thesis (Doctorate). Institute of Mathematics and Statistics, University of São Paulo, São Paulo, 2022. DevOps and continuous delivery have greatly impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research aims at revealing the different options adopted by the software industry to organize such groups, understanding why different organizations adopt distinct structures, and discovering how organizations handle the drawbacks of each structure. By interviewing 68 carefully-selected, skilled IT professionals and analyzing these conversations through a Grounded Theory process, we identified conditions, causes, reasons to avoid, consequences, and contingencies related to each discovered structure (segregated departments, collaborating departments, APImediated departments, and single department). We, then, offer a theory to explain organizational structures for development and infrastructure professionals. This theory can support practitioners and researchers in comprehending and discussing the DevOps phenomenon and its related issues; it also provides valuable input to practitioners’ decision-making. Keywords: DevOps. organizational structures. continuous delivery. software teams. software engineering. Grounded Theory. vii List of Figures 1.1 Research phases of this doctoral research . . . . . . . . . . . . . . . . . . 2.1 Publications about DevOps found in our survey by source types and publication year . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DevOps overall conceptual map . . . . . . . . . . . . . . . . . . . . . . . DevOps conceptual map: process . . . . . . . . . . . . . . . . . . . . . . DevOps conceptual map: people . . . . . . . . . . . . . . . . . . . . . . . DevOps conceptual map: delivery . . . . . . . . . . . . . . . . . . . . . . DevOps conceptual map: runtime . . . . . . . . . . . . . . . . . . . . . . According to Conway’s Law, the represented graph may refer, for example, to (i) services A and B using the underlying infrastructure C, or (ii) development teams A and B demanding the infrastructure group C. . . . 22 3.1 3.2 3.3 Steps and products of our research . . . . . . . . . . . . . . . . . . . . . . Conceptual framework nomenclature . . . . . . . . . . . . . . . . . . . . A fragment of our conceptual framework . . . . . . . . . . . . . . . . . . 34 37 38 4.1 4.2 Evidence of theoretical saturation . . . . . . . . . . . . . . . . . . . . . . High-level view of the first version of our taxonomy: the discovered organizational structures and their supplementary properties . . . . . . . . . High-level view of the fourth version of our taxonomy, published in the IST journal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Word cloud built from the chain of evidence of Phase 2 . . . . . . . . . . Observed transition flows . . . . . . . . . . . . . . . . . . . . . . . . . . . With siloed departments, operators and developers are each one in their own bubbles. They do not interact directly too much and communication flows slowly by bureaucratic means (ticket systems). . . . . . . . . . . . 45 2.2 2.3 2.4 2.5 2.6 2.7 4.3 4.4 4.5 4.6 3 12 12 13 14 15 16 48 49 49 59 60 viii 4.7 4.8 4.9 5.1 5.2 5.3 5.4 5.5 With classical DevOps, operators and developers in different departments seek to work together, even if not easy, by direct contact and close collaboration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The platform team provides automated services to be used, with little effort, by developers. The platform team and developers are open to hear and support each other. . . . . . . . . . . . . . . . . . . . . . . . . . . . . A cross-functional team contains both operators and developers. . . . . . Interleaving of data collection and analysis in Phase 3 . . . . . . . . . . . Metrics of theoretical saturation for the 6C analysis . . . . . . . . . . . . Metrics of theoretical saturation for the resonance analysis . . . . . . . . Word cloud built from the key points of Phase 3 . . . . . . . . . . . . . . High-level view of the 12𝑡ℎ version of our taxonomy, the last one produced by our refinement process . . . . . . . . . . . . . . . . . . . . . . . . . . 60 61 61 70 71 72 72 75 List of Tables 2.1 2.2 Major DevOps tools related to actors and DevOps concepts . . . . . . . . DevOps adoption approaches . . . . . . . . . . . . . . . . . . . . . . . . . 17 19 4.1 4.2 Number and description of participants and organizations . . . . . . . . Interview’s classification. In the second column, łtož indicates transitioning from one structure to another. . . . . . . . . . . . . . . . . . . . . . . . . Organizational structures and delivery performance observed in our interviews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Organizational structures and organization size observed in our interviews Summary of organizational structures ś operations responsibilities and interactions in each structure . . . . . . . . . . . . . . . . . . . . . . . . . 44 59 Description of participants and organizations . . . . . . . . . Summary of the actions took during our resonance analysis Taxonomy versioning history . . . . . . . . . . . . . . . . . Strong codes for segregated dev & infra departments . . . . 69 74 75 76 4.3 4.4 4.5 5.1 5.2 5.3 5.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 51 54 ix 5.5 5.6 5.7 5.8 5.9 Strong codes for collaborating dev & infra departments Strong codes for single dev & infra departments . . . . Strong codes for API-mediated dev & infra departments Amount of codes found per code class . . . . . . . . . . Strong covariance groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 77 78 79 79 6.1 Our treatments for the adopted quality criteria . . . . . . . . . . . . . . . 85 xi Contents 1 Introduction 1.1 Problem outline . . 1.2 Research questions 1.3 Research phases . . 1.4 Produced articles . 1.5 Contributions . . . 1.6 Thesis structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Background 2.1 DevOps . . . . . . . . . . . . . . 2.1.1 History . . . . . . . . . 2.1.2 Definitions . . . . . . . 2.1.3 Challenges . . . . . . . . 2.2 Delivery performance . . . . . . 2.3 The structures of organizations 2.4 Related work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Research design 3.1 Theories and taxonomies . . . . . . . . . . . . 3.2 Grounded Theory . . . . . . . . . . . . . . . . 3.3 Overview of the steps in our research process 3.4 Brainstorming sessions . . . . . . . . . . . . . 3.5 Conducting the interviews of Phase 2 . . . . . 3.6 Analyzing the interviews of Phase 2 . . . . . . 3.7 Review process of Phase 2 . . . . . . . . . . . 3.8 Conducting the interviews of Phase 3 . . . . . 3.9 Resonance analysis . . . . . . . . . . . . . . . 3.10 6C analysis . . . . . . . . . . . . . . . . . . . . 3.11 Review process of Phase 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 5 8 9 . . . . . . . 11 11 12 14 18 20 22 26 . . . . . . . . . . . 29 29 30 32 35 35 36 38 38 39 40 41 xii 3.12 Our approach to the related literature . . . . . . . . . . . . . . . . . . . . 4 A taxonomy for describing organizational structures 4.1 Sample . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Saturation . . . . . . . . . . . . . . . . . . . . . . . . 4.3 The taxonomy of organizational structures . . . . . . 4.3.1 Siloed departments . . . . . . . . . . . . . . . 4.3.2 Classical DevOps . . . . . . . . . . . . . . . . 4.3.3 Cross-functional teams . . . . . . . . . . . . . 4.3.4 Platform teams . . . . . . . . . . . . . . . . . 4.3.5 Shared supplementary properties . . . . . . . 4.3.6 Transitioning . . . . . . . . . . . . . . . . . . 4.3.7 Summary . . . . . . . . . . . . . . . . . . . . 4.4 Member check . . . . . . . . . . . . . . . . . . . . . . 4.5 Comparison to other taxonomies . . . . . . . . . . . . 41 . . . . . . . . . . . . 43 43 45 46 48 50 53 55 58 58 59 59 61 . . . . . . . 67 67 69 70 76 77 77 80 . . . . 83 84 84 86 87 7 Conclusion 7.1 Implications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Future work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Final words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 90 91 92 5 A theory for explaining organizational structures 5.1 Sample . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Saturation . . . . . . . . . . . . . . . . . . . . . . 5.3 Results on refining the structures . . . . . . . . . 5.4 Results on explaining the structures . . . . . . . . 5.4.1 Covariance analysis . . . . . . . . . . . . 5.5 Member check . . . . . . . . . . . . . . . . . . . . 5.6 Discussion . . . . . . . . . . . . . . . . . . . . . . 6 Quality criteria and limitations 6.1 Quality criteria . . . . . . . . . . . 6.2 Supplementary material . . . . . . 6.3 Generalizability . . . . . . . . . . 6.4 Limitations and threats to validity Appendixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii A Interview protocol for Phase 2 A.1 Purpose of the interviews . . A.2 Inputs for this protocol . . . A.3 Method . . . . . . . . . . . . A.4 Target population . . . . . . A.5 Guidelines and tips . . . . . A.6 Interview script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 93 93 94 94 94 97 B Interview questions for Phase 3 105 B.1 Research goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 B.2 Semi-structured script (for previously visited organizations) . . . . . . . 105 B.3 Semi-structured script (for new organizations) . . . . . . . . . . . . . . . 107 C Examples of strong codes concrete implications C.1 SC04 - Enough infra people to align with dev teams . . . . . . . . . . . . C.2 SC28 - Compatible with existing rigid structures (low impact on organogram) / Only a few people needed to form a platform team . . . . C.3 SC19 - Not suitable for applying corporate governance and standards . . C.4 SC11 - Discomfort/frustration/friction/inefficiency with blurred responsibilities (people don’t know what to do or what to expect from others) . . C.5 SC46 Decide how much devs must be exposed to the infra internals (some places more, some places less) . . . . . . . . . . . . . . . . . . . . . . . . 109 109 110 111 112 112 D Answers for the open questions of our feedback forms 115 D.1 Phase 2 feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 D.2 Phase 3 feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 References 121 1 Chapter 1 Introduction In this thesis, we offer a theory to explain organizational structures for development and infrastructure professionals. We describe, in the taxonomy format, the structures currently adopted by software-producing organizations. Moreover, we explain why different organizations have different structures and how companies handle each structure’s drawbacks. In other words, we present conditions, causes, reasons to avoid, consequences, and contingencies related to each structure. In this chapter, we initially explain the underlying problem motivating this research. We then present our research questions and how we organized our research in three phases around such questions. While introducing these research phases, we concisely indicate the employed research methods. We, then, highlight the articles and contributions produced by our research. Finally, we delineate how we arranged the chapters of this thesis. 1.1 Problem outline To remain competitive, many software-producing corporations seek to speed up their release processes [Sch+16b; HM11]. Organizations may adopt continuous delivery practices in their quest to accelerate time-to-market and improve customer satisfaction [Che15]. However, continuous delivery also comes with challenges, including profound impacts on various aspects of software engineering [Sch+16a]. With an automated deployment pipeline, one can, for example, question the role of an engineer responsible solely for new deployments. Since release activities involve many divisions of a company (e.g., development, operations, and business), adopting continuous delivery impacts an organization’s structure [Che15]. The lack of clear roles and obligations may induce lengthy negotiations and eventual stress between IT departments [NSP16]. Therefore, organizations moving toward continuous delivery have not only to upgrade their software tooling arsenal but also to find ways to better shape and integrate their IT teams. Given such recent transformations, there is a need for better understanding the organizational structures the software industry adopts for development and infrastructure employees. By organizational structure, we mean the differentiation (division of labor) and 2 1 | INTRODUCTION integration (interaction) [Oli12] of operations activities (application deployment, infrastructure setup, and service operation in run-time) between development and infrastructure groups. An acclaimed structure toward continuous delivery, advocated by Amazon, is organizing cross-functional teams to break the existing silos among development and infrastructure professionals [Gra06]. However, Davis and Daniels alert that part of the community erroneously thinks of silos and cross-functional teams as the only two options of existing structures [DD16]. Empirical software engineering studies have focused on identifying the different organizational structures adopted in the industry to arrange development and infrastructure professionals [NSP16; Sha+17; Lop+21; MB20]. However, the current literature does not reveal why different companies adopt different structures or how companies deal with the drawbacks of each structure. This lack of research is inconvenient due to at least two crucial reasons: (1) organizations wishing to adopt continuous delivery can be disoriented regarding how to design their human resources structure toward this goal; (2) once a structure is chosen, the organization might be unaware of the consequences of this choice. For example, adopting cross-functional teams can solve many problems but also brings new challenges, such as the difficulty in guaranteeing that each team in the organization masters the required technical skills. The lack of a consolidated view of how the industry handles the outlined problem is also unfortunate. Decision-makers in software companies are highly interested in knowing łwhat other companies are doingž and łwhy are they doing itž to support their decisions. 1.2 Research questions To mitigate the gap presented in the problem outline, in this thesis we address the following research questions: RQ1: What are the organizational structures adopted by software-producing organizations to structure operations activities (application deployment, infrastructure setup, and service operation in run-time) among development and infrastructure groups? RQ1.1: What are the properties of each of these organizational structures? RQ1.2: Are some organizational structures more conducive to continuous delivery than others? RQ2: Why do different software organizations adopt different organizational structures regarding development and infrastructure groups? RQ2.1: How do organizations handle the drawbacks of each organizational structure? We investigate these questions in the context of software-producing organizations 3 1.3 | RESEARCH PHASES responsible for deploying the software they produce. For brevity, henceforward, we refer to them simply as łorganizationsž or łcompanies.ž DevOps and continuous delivery are contextual factors that have impacted the software industry and are, therefore, part of the motivation for our research. Nevertheless, we clarify that the definitions and procedures of our research are not dependent on the notion of DevOps. We seek to understand the software production landscape regardless of whether companies claim to have adopted DevOps or not. 1.3 Research phases Our research questions, addressing the problem outlined above, were not a fruit of inspiration solely. Our initial interest in this research endeavor was the DevOps topic. Thus, initially, we conducted a comprehensive literature review on DevOps [Lei+19], which was the first phase of this doctoral research. We wanted mainly to understand the DevOps field, with its concepts and challenges, and find research opportunities before working on an original contribution. Such a literature review employed some techniques of Systematic Literature Reviews (SLR) that we selected based on the literature recommendations [KC07; BB06] and in our own previous experience in conducting an SLR [Lei+13]. We present some of the results of our review in Chapter 2 to introduce some basic concepts to this thesis and to delineate better the problem guiding this doctoral research. Figure 1.1 summarizes the phases of this doctoral research, which we explain in this section. Phase 1 Phase 3 Phase 2 RQ1 RQ1.1 RQ1.2 Understanding DevOps concepts and challenges RQ2 RQ2.1 2018 - 2019 Discovering DevOps organizational structures 2019 - 2021 Explaining DevOps organizational structures 2020 - 2022 P1 P2 P3 P4 P5 P6 Research produced Research study questions produced Paper motivated Figure 1.1: Research phases of this doctoral research In particular, one of the łDevOps challengesž found in our literature review concerned 4 1 | INTRODUCTION the challenge of splitting roles across teams in the DevOps paradigm. The most basic options would be (i) having developers and operations as different but cooperating groups or (ii) having in each team both developers and infrastructure specialists. However, how the industry is indeed tackling this issue, which options of organizing teams are available and being adopted, and which results come from different options were all questions not adequately addressed by the academic literature at that time. In particular, in our DevOps review, we found no work using an empirical process to reveal the existing structures across the IT industry. Based on this need, we defined RQ1 and its sub-questions. The main idea was to elaborate a taxonomy to describe the existing structures (RQ1.1) based on empirical data, thus initiating a theory to describe [Gre06]. To answer these questions, we conducted semi-structured interviews with 37 IT professionals, each one belonging to a different organization. We analyzed these interviews by following Grounded Theory [GS99], a methodology well-suited for generating theories. We explain this process in detail in Chapter 3. To describe the structures, we linked to each of them core and supplementary properties. Core properties are expected to be found in corporations with a given structure. Supplementary properties refine the explanation of a structure, but their association with organizations is not compulsory. The structures (the elements of the highest level in our taxonomy) we found, as a product of our research Phase 2, were: · Siloed departments, with highly bureaucratized interaction between development and infrastructure groups. · Classical DevOps, focusing on facilitated communication and collaboration between development and infrastructure groups. · Platform teams, in which the infrastructure team provides highly-automated infrastructure services to assist developers. · Cross-functional team, in which a team takes responsibility for both software development and infrastructure management. At the same time, at this point, we were eager to assess if a given structure could be somehow łbetterž than another. The dimension chosen for comparison was delivery performance (explained in Section 2.2), thus leading us to the RQ1.2 formulation. About this research question, a notable result was the evidence that platform teams seemed to lead to better outcomes in terms of delivery performance. We present the results of Phase 2 in Chapter 4. After having these preliminary results, it was clear to us that there are distinct organizational structures in the industry to organize development and infrastructure professionals. This situation led us to formulate RQ2: would there be legitimate reasons for different organizations to adopt different structures? Why do not all organizations adopt the łbestž structure? Our intuition was that there was no łbestž structure but different structures that were more suitable for different contexts. In this case, probably each structure would have its drawbacks. And if so, how would organizations handle such drawbacks (RQ2.1)? Pursuing such answers would lead us to extend our theory to be not only a theory to describe but also a theory to explain [Gre06] the examined phenomenon (the existence of 5 1.4 | PRODUCED ARTICLES distinct structures to organize development and infrastructure professionals). The search for such explanations was the core of our research Phase 3, which also followed a Grounded Theory process. In this phase, we conducted semi-structured interviews with 31 IT professionals working in 25 different companies, summing up 68 semi-structured interviews throughout our research. The research procedures in this phase are also presented in our chapter devoted to the research approach. Chapter 3 provides a complete view of our investigation methods. The explanations we offer about the structures, as the product of Phase 3, are provided in the format of conditions, causes, reasons to avoid, consequences, and contingencies related to each discovered structure (this format corresponds to one of the theoretical coding families provided by the Grounded Theory methodology). Phase 3 had also an additional goal: to interact with practitioners to somehow assess our taxonomy and improve it when necessary. During this process, we altered the taxonomy by adding, removing, and renaming its high-level elements (structures and supplementary properties). In particular, the structures were renamed as follows: · Siloed departments to segregated departments. · Classical DevOps to collaborating departments. · Platform teams to API-mediated departments. · Cross-functional team to single department. Therefore, as a final product of our research endeavor, we offer a theory to explain the organizational structures of development and infrastructure professionals in the context of contemporary software production. We present such final results in Chapter 5. 1.4 Produced articles Our literature review, conducted in the first research phase, is published in the ACM Computing Surveys journal as the article łA Survey of DevOps Concepts and Challenges.ž Paper 1 - published Leonardo Leite, Carla Rocha, Fabio Kon, Dejan Milojicic, Paulo Meirelles A Survey of DevOps Concepts and Challenges [Lei+19] ACM Computing Surveys, 52(6):127:1ś127:35, 2019 Official publication on https://dl.acm.org/doi/abs/10.1145/3359981. Version freely accessible on http://ime.usp.br/~leofl/devops/2019-12-04/devops-survey-published.html. 6 1 | INTRODUCTION In addition to the doctoral candidate and his advisors, other two researchers contributed to the survey, namely Prof. Carla Rocha (University of Brasília - UnB) and Dr. Dejan Milojicic (senior researcher at HP Labs in Palo Alto). The survey has being highly cited by the academic community, reaching, in April 2022, 156 citations according to Google Scholar and 4,346 downloads from the ACM Digital Library. While building the initial version of our taxonomy, after interviewing 27 IT practitioners, we published a brief overview of our preliminary results. The main goal, at that stage, was to gather internationally qualified feedback on our ongoing research. Such overview is presented in the paper łBuilding a Theory of Software Teams Organization in a Continuous Delivery Context,ž published as an extended abstract for the ICSE 2020 Poster Track session. Paper 2 - published Leonardo Leite, Gustavo Pinto, Fabio Kon, Paulo Meirelles Building a Theory of Software Teams Organization in a Continuous Delivery Context [Lei+20b] IEEE/ACM 42nd International Conference on Software Engineering (ICSE 2020) ś Poster Track Official publication on https://ieeexplore.ieee.org/abstract/document/9270342. Extended abstract, poster, and video available on http://ime.usp.br/~leofl/devops/2020-07-06/icse-poster-track.html. Considering the literature already studied in our DevOps Survey, the existence of the three first organizational structures (siloed departments, classical DevOps, and crossfunctional teams) was somehow expected. On the other hand, the emergence of łplatform teamsž as a distinctive structure was remarkable, mainly because we found evidence that such a structure presents better delivery performance results. To promote this emergent and relevant concept, we produced a paper for an ICSE workshop, entitled łPlatform Teams: An Organizational Structure for Continuous Delivery.ž Paper 3 - published Leonardo Leite, Gustavo Pinto, Fabio Kon, Paulo Meirelles Platform Teams: An Organizational Structure for Continuous Delivery [Lei+20a] 6th International Workshop on Rapid Continuous Software Engineering (RCoSE 2020), held in conjunction with the IEEE/ACM 42nd International Conference on Software Engineering (ICSE 2020) Official publication on https://dl.acm.org/doi/abs/10.1145/3387940.3391455. Version freely accessible on http://ime.usp.br/~leofl/devops/2020-03-17/platform-teams.html. 7 1.4 | PRODUCED ARTICLES Afterward, having conducted and analyzed 37 interviews, we further evolved our taxonomy. We published the full description of this version, including core and supplementary properties, in the Information and Software Technology journal. The paper is entitled łThe Organization of Software Teams in Quest for Continuous Delivery: a Grounded Theory Approach,ž and we present its results in Chapter 4. Paper 4 - published Leonardo Leite, Gustavo Pinto, Fabio Kon, Paulo Meirelles The Organization of Software Teams in Quest for Continuous Delivery: a Grounded Theory Approach [Lei+21] Information and Software Technology, 139, 2021 Official publication on https://www.sciencedirect.com/science/article/abs/pii/S0950584921001324. Version freely accessible on https://arxiv.org/abs/2008.08652. Besides the doctoral candidate and his advisors, Prof. Gustavo Pinto (Federal University of Pará - UFPA) also contributed to the initial formulation of our taxonomy, having coauthored Papers 2, 3, and 4. We described our initial plans to address RQ2, applying the Case Study methodology [Yin09], in an article accepted in a thesis workshop (WTDSoft). The article is entitled łUnderstanding context and forces for choosing organizational structures for continuous delivery.ž The content of this paper provided input for fruitful discussions with the qualifying examination board (Profs. Guilherme Travassos and Rodrigo Bonifácio). After such discussions, we concluded that the conduction of case studies was not a proper path to take. Paper 5 - published Leonardo Leite, Fabio Kon, Paulo Meirelles Understanding context and forces for choosing organizational structures for continuous delivery [LKM20] 10𝑡ℎ CBSoft’s Workshop on Theses and Dissertations (WTDSoft 2020) Available on https://sol.sbc.org.br/index.php/cbsoft_estendido/article/view/14609. The final results of our research focusing on answering RQ2, grounded on data from seven brainstorming sessions and 37 semi-structured interviews, are in the paper entitled łA theory of organizational structures for development and infrastructure professionals,ž submitted to the IEEE Transactions on Software Engineering journal. Chapter 5 reports 8 1 | INTRODUCTION its results. Paper 6 - submitted (under review) Leonardo Leite, Nelson Lago, Claudia Melo, Fabio Kon, Paulo Meirelles A theory of organizational structures for development and infrastructure professionals Submitted to the IEEE Transactions on Software Engineering (TSE) journal. Preprint available on https://www.techrxiv.org/articles/preprint/A_theory_of_organizational_structures_ for_development_and_infrastructure_professionals/19210347. In addition to the doctoral candidate and his advisors, Nelson Lago and Dr. Claudia Melo also contributed to the final development of our theory. Mr. Lago is currently the Technical Manager of the USP FLOSS Competence Center, working both as a researcher and IT operations manager. Dr. Melo, former professor at the University of Brasília (UnB) and head of technology for Latin America at ThoughtWorks, is now a Director of Software Engineering/Tech Org Design at Loft. 1.5 Contributions Our first contribution is to provide an empirically derived taxonomy to describe the structures currently adopted by the software industry to organize development and infrastructure professionals (answering RQ1). We provide a detailed presentation of each structure with core and supplementary properties (answering RQ1.1). Although there are other taxonomies in the literature, our taxonomy is valuable too because it is empirically derived (many of the others are not). It is also worthy because empirical studies in the sociological field (and, thus, in software engineering, too) are rarely definitive [Sir+11; Pin86; And83]: multiple studies must be carried out independently so that the community can reach a consensus. Our taxonomy brings the following key benefits: (i) it helps practitioners to differentiate collaborating departments from a single department, which were traditionally blended under the term DevOps [HM11; FJT16], and (ii) it highlights the API-mediated departments as a promising and emergent alternative for organizations ś our taxonomy was the first empirically derived taxonomy to present such a structure (other researchers working concurrently with us also found equivalent structures [Lop+21]). In this context, a valuable contribution we offer is providing empirical evidence that API-mediated departments seem to lead to better outcomes in terms of delivery performance (answering RQ1.2). Our second significant contribution is to provide an explanatory dimension for each of the structures presented in our taxonomy. We explicitly associated conditions, causes, 9 1.6 | THESIS STRUCTURE reasons to avoid, consequences, and contingencies related to each structure. In this way, practitioners can understand why different organizations adopt different structures (answering RQ2). They can also learn how organizations handle the drawbacks of each structure (answering RQ2.1) ś or, at least, be aware of such drawbacks. Other researchers presenting similar taxonomies did not attribute such level of explanation to their structures. In summary, this doctoral thesis contributes to the area by presenting a systematicallyderived theory of organizational structures, based on recent field observations and employing a well-accepted methodology. These contributions have implications for multiple stakeholders. By increasing the awareness of organizational structures in the community, practitioners can make more informed decisions on structure selection and drawback handling. Moreover, we hope our theory can lead scholars to a deeper comprehension of the software production phenomenon so they can update software engineering classes considering the reality of the industry abstracted under our theory. We support the validity of our findings in Chapter 6. We also provide more details on the relevance of the referred contributions in our conclusions (Chapter 7) by stating their implications for practice and research. 1.6 Thesis structure After this introduction, Chapter 2 presents some basic concepts for this thesis, including DevOps and delivery performance, which we learned in our research Phase 1. Chapter 2 also discusses works related to organizational structures in the general literature and in the software engineering and DevOps contexts. Chapter 3 details our research approach, evidencing its base methodology, Grounded Theory. We present our results and related discussions in Chapters 4 and 5, respectively, related to Phase 2 and 3. After that, we discuss our quality criteria and the limitations of this research in Chapter 6. Finally, Chapter 7 draws our conclusions. 11 Chapter 2 Background This chapter presents some of the fundamental concepts underlying our research effort, especially DevOps and delivery performance. In particular, we expand the research problem outlined in the introduction considering the literature on DevOps. We also present the literature on organizational structures. We highlight how these studies deal with the balance of specialization vs. integration of teams, which highly relates to our proposed taxonomy for organizing development and infrastructure professionals. To provide a broad perspective for the reader, we also introduce other views on organizational structures, especially the view of complex systems. We then debate on how part of this literature dismisses the concern with structures in favor of tackling cultural issues, concluding that such a view is controversial. Finally, we also explore the łspecific literaturež on organizational structures in the context of software production, that is our related work. 2.1 DevOps Seeking to understand DevOps, we initiated our research by conducting a literature review searching for papers with the keyword łDevOpsž. In this review, we thoroughly examined 50 scientific papers, which were carefully selected after we initially found almost 200 articles somehow related to DevOps. We noted that publications of papers on DevOps grew by a factor of four from 2014 to 2015, reaching a peak in 2016 (see Figure 2.1). We consider this high number of publications in the years preceding our study as an indication of how relevant such a theme has become to academia. By analyzing the 50 selected papers, we: devised conceptual maps organizing DevOps concepts into four categories: process, people, delivery, and runtime (see Figures 2.2, 2.3, 2.4, 2.5, and 2.6); linked these concepts to the engineer’s and manager’s perspectives; presented DevOps tools, classifying them and associating them to DevOps concepts (see Table 2.1); listed significant DevOps implications for engineers, managers, and researchers; and detected four fundamental DevOps challenges. Our literature review was published in the ACM Computing Surveys journal [Lei+19]. 12 2 | BACKGROUND Journal Magazine Conference Quantity 40 8 8 29 4 4 20 30 8 3 26 9 6 22 20 10 0 0 1 0 2006 2 0 1 2008 2010 1 1 1 2012 Year 3 0 3 1 0 6 2014 2016 2018 Figure 2.1: Publications about DevOps found in our survey by source types and publication year Figure 2.2: DevOps overall conceptual map We now present some topics related to DevOps, most of them taken from our survey, relevant to the rest of this thesis. Thus, we discuss the history of DevOps, our DevOps definition, and the found DevOps challenges. 2.1.1 History DevOps is an evolution of the agile movement [Chr16]. Agile Software Development advocates small release iterations with customer reviews. It assumes that a team can release software frequently in a production-like environment. However, pioneer Agile literature puts little emphasis on deployment-specific practices. No Extreme Programming (XP) practice, for example, is about deployment [BA04]. The same sparse attention to deployment is evident in traditional software engineering processes [KK03] and books [Pre05; Som11]. Consequently, the transition to production tends to be a stressful process in organizations, containing manual, error-prone activities, and, even, last-minute corrections [HF10]. DevOps proposes a complementary set of agile practices to enable the iterative delivery of software in short cycles effectively. 13 2.1 | DEVOPS requires Top-management sponsorship DevOps provides benefits and imposes obstacles to Risk and cost Change copes with extends Compliance Regulations reduces is based on advocates enables embraces Agile / Lean advocates Frequent and reliable release process Continuous improvement Product management over project management Short Feedback Cycle enables without fear enables can be introduced with the help of Innovation improves of Product quality Customer satisfaction to assess Small features Pilot teams Lead customer Measurement builds Trust relationships Figure 2.3: DevOps conceptual map: process From an organizational perspective, the DevOps movement promotes closer collaboration between developers and operators. The existence of distinct silos for operations and development is still common: operations staff are responsible for managing software modifications in production and for service levels [Woo16]; development teams, on the other hand, are accountable for continuously developing new features to meet business requirements. Each one of these departments has its independent processes, tools, and knowledge bases. The interface between them in the pre-DevOps era was usually a ticket system: development teams demanded the deployment of new software versions, and the operations staff manually managed those tickets. In such an arrangement, development teams continuously seek to push new versions into production, while operations staff attempt to block these changes to maintain software stability and other non-functional concerns. Theoretically, this structure provides higher stability for software in production. However, in practice, it also results in long delays between code updates and deployment, as well as ineffective problem-solving processes, in which organizational silos blame each other for production problems. Conflicts between developers and operators, significant deployment times, and the need for frequent and reliable releases led to inefficient execution of agile processes. In this context, developers and operators began collaborating within enterprises to address this gap. This movement was coined łDevOpsž in 2008 [Deb08]. In the Continuous Delivery book [HF10], Humble and Farley advocate for an automated deployment pipeline, in which any software version committed to the repository must be a 14 2 | BACKGROUND overcomes Collaboration and communication barriers Cross-functional "You build it, you run it" After-hours support for Devs Operators at agile events Deployment triggered by Devs Global community knowledge Knowledge, skills, and capabilities for DevOps must teach relies on can have different organizations, such as: requires certain Personal responsibility Failure as opportunity for improvement DevOps role may or may not have a Programming education NoOps SmartOps ChatOps SecDevOps have must be imposes challenges for Teams need Small and loosely coordinated originates variants as Culture of collaboration Experience shared across different types of achieve is a based on sharing breaks down Silos DevOps Knowledge Tools Processes Practices Autonomy Morale Confidence Less stress is about Aligning incentives Figure 2.4: DevOps conceptual map: people production-candidate version. After passing through stages, such as compilation and automated tests, the software is sent to production by the press of a button. This process is called Continuous Delivery. A variant is continuous deployment [Hum10], which automatically sends to production every version that passes through the pipeline. Many authors closely relate DevOps to continuous delivery and deployment [SBZ16; WAL15b; YK16; WAL15a]. Yasar, for example, calls the deployment pipeline a łDevOps platformž [YK16]. Besides automating the delivery process, DevOps initiatives have also focused on using automated runtime monitoring for improving software runtime properties, such as performance, scalability, availability, and resilience [Chr16; Bas+16; BHJ16; Roc13]. From this perspective, łSite Reliability Engineeringž [Bey+16] emerged as a new term related to DevOps work at runtime. 2.1.2 Definitions The first impact when researching DevOps is to perceive that even after a decade of discussions, this term still lacks a widely accepted definition. By consolidating the most 15 2.1 | DEVOPS are able to Roll back DevOps imposes challenges for enable Architecture Embedded systems IoT require it is not the same than Backwards compatibility with Microservices abstracts innovated on Versioned APIs with or without Complexity relies on Pre-production continuous maintenance copes with the sustainability of the Release engineering Versioning Build Management Static Analysis Testing Automation Continuous Integration Build once Artifact management Configuration Management Deployment pipeline uses a variety of enable Tools enables provide are normally Correcteness ensure Open source easies Automation requires support Continous Delivery Continous Deployment On-boarding require can work on uses Mainframe Firmware Mobile apps Virtualized Network Services or any doamin implemented by Frequent and reliable release process Feature toggle Figure 2.5: DevOps conceptual map: delivery cited definitions of DevOps, we crafted our definition, similar to the one proposed by Dyck et al. [DPL15]: DevOps is a collaborative and multidisciplinary effort within an organization to automate continuous delivery of new software versions, while guaranteeing their correctness and reliability. [Lei+19] There is a current trend in the industry of adopting DevOps as a role, the łDevOps engineerž [HCM17]. But our DevOps definition is according to the original spirit of the DevOps movement, which was about breaking down the silos (łDevOps is a collaborative and multidisciplinary effort within an organizationž). This spirit was portrayed, for example, by the novel The Phoenix Project [KBS18], authored by a prominent figure of the DevOps movement. Our definition is also in accordance with a shared view in the literature that closely relates DevOps to continuous delivery (łto automate continuous delivery of new software versionsž), evidenced by the title of the seminal paper on DevOps łWhy enterprises must adopt DevOps to enable continuous deliveryž [HM11]. Finally, 16 2 | BACKGROUND Security Stability provides opportunities and imposes challenges to Infrastructure as code Virtualization Containerization Cloud services Business metrics Resource metrics Alerting manages infrastructure with Post-production continuous maintenance provides builds through the code Continous runtime monitoring Application rollback Log management should ensure relies on Runtime experiments A/B testing Canary release performs simulates designs and performs DevOps Software crises copes with Chaos engineering copes with Performance Availability Scalability Resilience Reliability achieved with guarantees that Environments are similar Less human intervention Figure 2.6: DevOps conceptual map: runtime our definition is also aligned with more recent developments that face the fact that it is not enough to deliver faster, but also that reliability is paramount (łwhile guaranteeing their correctness and reliabilityž), such as the discussion presented in the Site Reliability Engineering book [Bey+16]. Other definitions in the DevOps context are relevant to this thesis. First, infrastructure refers to all of the hardware, software, networks, facilities, etc. that are required to build and operate IT services, according to the ITIL glossary [Fou19]. In our context, it is helpful to add, to this definition, the notion that infrastructure is a layer of the software stack that can be provided as a commodity [Ful09]. Although infrastructure must meet application non-functional requirements, it usually is provided regardless of the application domain, enabling organizations to offer it for different applications in a standardized manner. We adopted this careful definition to include in the infrastructure work not only physical machines but also virtualized machines and even deployment platforms, such as Kubernetes1 . Second, we are considering development teams (also called product teams) as responsible for developing business services. On the other hand, the infrastructure staff uniformly provides computational resources for diverse applications. This second definition aligns with Woods’ view about infrastructure engineers: the ones providing the infrastructure services the system relies on [Woo16]. 1 https://cloud.google.com/google/kubernetes 17 2.1 | DEVOPS Category Knowledge sharing Examples Rocket Chat GitLab wiki Redmine Trello Actors Goals Everyone Human collaboration Human collaboration Source code management Git SVN CVS ClearCase Dev Ops Build process Maven Gradle Rake JUnit Sonar Dev Continuous delivery Continuous Integration Jenkins GitLab CI Travis Nexus Dev Ops Continuous delivery Deployment automation Chef, Puppet Docker Heroku Open Stack Rancher Flyway Dev Ops Nagios Zabbix Prometheus Logstash Graylog Ops Dev Monitoring & Logging Continuous delivery Continuous delivery Reliability Reliability Concepts Culture of collaboration Sharing knowledge Breaking down silos Collaborate across departments Versioning Culture of collaboration Sharing knowledge Breaking down silos Collaborate across departments Release engineering Continuous delivery Automation Testing automation, Correctness Static analysis Frequent and reliable releases Release engineering Continuous integration Deployment pipeline Continuous delivery, Automation Artifact management Frequent and reliable releases Release engineering Configuration management Continuous delivery Infrastructure as code Virtualization, Containerization Cloud services, Automation You built it, you run it After-hours support for Devs Continuous runtime monitoring Performance, Availability, Scalability Resilience, Reliability, Automation Metrics, Alerting, Experiments Log management, Security Table 2.1: Major DevOps tools related to actors and DevOps concepts Third, in this work, we use the term operations to refer to the operations activities, such as application deployment, infrastructure setup, and service operation in run-time. We avoid the term operators or even operations staff. In some companies, there are workers dedicated to such tasks. As put by Woods: operations staff accept and operate new and changed software in production and are responsible for its service levels [Woo16]. However, in the pre-DevOps context, such tasks were usually attributed to the professionals in charge of providing the infrastructure. Our research seeks to understand how these activities were redistributed between development and infrastructure professionals with the DevOps advent. We, therefore, prefer to use the term infrastructure professionals instead. Still, in other industries, it is common to apply the term operator to menial workers who control 18 2 | BACKGROUND machines, so we would have engineers projecting machines and operators operating them. If the łmachinež built by software engineers is the software system, operators could be the system users. This use could be adequate to situations in which users are employees of the client (who demanded the system), as it would be the case for supermarket cashiers. Clearly, this use is not related to the łopsž in DevOps. 2.1.3 Challenges The four DevOps challenges we reported in our survey were: 1. How to re-design systems toward continuous delivery, especially considering the relation between DevOps practices and microservices architecture [BHJ16; Ebe+16]. 2. How to organize the relations between development and infrastructure professionals to adopt DevOps, especially considering that mutual support between devs and ops is a very different thing from cross-functional teams [NSP16; Gra06]. 3. How to assess the quality of DevOps practices in organizations, considering survey and system data and the pitfalls of any metric when used to promote or punish professionals [FK18; Bro18]. 4. How to qualify engineers for DevOps practice, discussing the laborious endeavor of professors preparing practical DevOps classes and evaluating students’ assignments [Chr16; Bai+18]. We selected the second listed challenge as our guide to this doctoral research2 . Based on this initial elaboration, we derived our research questions. Chapter 2.4 presents more works related to the problem of structuring development and infrastructure professionals within software-producing organizations. Subsequently, we reproduce the second challenge as published in the DevOps survey. How to deploy DevOps in an organization A hard question not yet fully answered by the literature is how ś perhaps whether ś an organization should be restructured to adopt DevOps. We believe the literature is incomplete and even contradictory regarding this subject. We discuss a few studies that have evaluated this matter. The seminal paper of Humble and Molesky about DevOps presents three scenarios. First, preserving the structures of development and operations departments, DevOps is led by human collaboration between developers and operators, with operators attending agile ceremonies and developers contributing to incident solving [HM11; Jaa18]. Alternatively, product teams, also called cross-functional teams, effectively incorporate operators. Finally, in a third scenario, one product team is composed of only operators offering support services (continuous integration, monitoring services) to the entire organization. 2 Based on our experience on Software Engineering and research, we considered the second challenge to be more manageable from an academic perspective, being more a sociological inquiry than an engineering endeavor. 19 2.1 | DEVOPS Similarly, Nybom et al. also present three distinct scenarios to the adoption of DevOps [NSP16]: i) collaboration between development and operations departments; ii) crossfunctional teams; and iii) creation of łDevOps teams.ž These approaches are summarized in Table 2.2 and discussed in detail in the following paragraphs. Collaborating departments Development and operations departments collaborate closely. It implies overlapping of developers and operators responsibilities. Downside: new responsibilities can be unclear for employees. Cross-functional team The product team is responsible for deploying and operating (You built it, you run it). Recommended by Amazon and Facebook. Downside: requires more skilled engineers. DevOps team Acts as a bridge between developers and operators. It is better accepted when it is a temporary strategy for cultural transformation. Downside: risk of creating a third silo. Table 2.2: DevOps adoption approaches In the first approach, developers’ responsibilities overlap with operators’ [NSP16; CSA15; SBZ16; DMC16]. A high risk for adopting this strategy occurs when new responsibilities do not become evident in the organization [NSP16; CSA15], which could lead to frictions between developers and operators [Che15]. This is especially true when delivery automation is not prioritized [NSP16]. Cross-functional teams resemble the łwhole teamž practice from XP [BA04], and seems to prevail in literature [FFB13; Gra06; Cuk13; BHJ16]. This structure appeals to łT-shapedž professionals, who have expertise in few fields and basic skills in multiple correlated areas [Deb11; Gue91]. In this model, at least one team member must master operations skills. From this perspective, the so-called łDevOps engineerž [HCM17], also called the łfull stack engineerž [HCM17], is known as a developer with operations skills. One could wonder whether it makes sense to talk about collaborations between developers and operators in a cross-functional team context. Adopting cross-functional teams may just be a matter of moving operators to product teams. However, this is not trivial, considering that large organizations usually have only a small pool of operators for several development teams [NSP16]. Therefore, companies must hire people with both development and operations skills or train some of their developers in operations skills. Nevertheless, pressuring developers to learn operations can be ineffective, as they are already overwhelmed with other skills they need to learn. Transforming development teams into product teams has still another major cultural shift, as developers become responsible for 24/7 service support [SBZ16; Deb11]. This is true even when services should be designed to remain available without human interaction [Ham07]. An extra challenge for cross-functional teams is guaranteeing that specialists interact with their peer groups to share novelties in the field [Deb11]. Spotify, for example, achieves this through inter-team łguilds,ž which are communities of common interest within the organization [Kni14]. 20 2 | BACKGROUND Assigning a łDevOps teamž as a bridge between developers and operators [NSP16] has become a trend [Vel+14]. However, it is not clear what precisely łDevOps teamsž are, and how they differ from regular operations teams [NSP16; Vel+14]. This approach is criticized by Humble, who considers that potentially creating a new silo is not the best policy to handle the DevOps principle of breaking down walls between silos [Hum12]. Skelton and Pais present some variations, called łDevOps topologies,ž and also DevOps anti-patterns [SP13]. They argue that, although the DevOps team silo is an anti-pattern, it is acceptable when it is temporary and focused on sharing development practices to operations staff and operations concerns to developers. Siqueira et al. report how a DevOps team with senior developers and rotating roles among members was a key decision to construct and maintain a continuous delivery process [Siq+18]. There is yet the strategy adopted by Google, called Site Reliability Engineering (SRE) [Bey+16], which involves the evolution of the operations engineer role. In addition to product teams, Google has SRE teams responsible for product reliability engineering, which includes performance, availability, monitoring, and emergency response. SRE teams have an upper limit of using 50 percent of their time on operational tasks because they must allocate at least 50 percent of their time increasing product reliability through engineering and development activities. One should also question the impact of deployment automation on operators’ roles. Chen reported that, after continuous delivery adoption, operations engineers only needed to click a button to release new versions [Che15]. One should question the role of an engineer in such a context. Moreover, if software updates are adequately broken down into small increments, and delivery automation turns deployment in a łnon-eventž [HM11], practices such as łdevelopment and operations teams should celebrate successful releases togetherž [HM11] can be perceived as contradictory. Therefore, if operations provide support services (continuous integration, monitoring) [HM11] and product reliability is appropriately designed, product teams can easily deploy and operate their services. Thus, one can even replace operations with thirdparty cloud services, as done by Cukier [Cuk13], and achieve an organizational structure known as łNoOpsž. Some blog posts promote NoOps concepts, but the literature has not yet covered this subject. One possible definition is: łNoOps (no operations) is the concept that an IT environment can become so automated and abstracted from the underlying infrastructure that there is no need for a dedicated team to manage software in-housež3 [Rou15]. Cross-functional teams can embrace NoOps, with a particular focus on employing cloud technology that automates much of the operational work, rather than reallocating operators or teaching developers all the operational work. 2.2 Delivery performance Delivery performance combines three metrics: frequency of deployment, time from commit to production, and mean time to recovery [For+20]. These metrics have become 3 Although, according to this very definition, it would be more suitable for NoOps to mean łno operatorsž rather than łno operations.ž 21 2.2 | DELIVERY PERFORMANCE very popular for measuring IT-performance and DevOps adoption [Sal+21]. Moreover, delivery performance correlates to the organizational capability of achieving both commercial goals (profitability, productivity, and market share) and noncommercial goals (effectiveness, efficiency, and customer satisfaction) [FHK18]. We used this construct as an indication of how successful an organization has been in adopting continuous delivery. Based on a survey with 27,000 responses, Forsgren et al. [FHK18] applied cluster analysis to these metrics and discovered three groups: High performers were characterized as those with multiple deployments per day, commits that take less than 1 hour to reach production, and incidents repaired in less than 1 hour. Medium performers deployed once per week to once per month, had a time from commit to production between one week and one month, and took less than one day to repair incidents. Low performers presented the same characteristics of medium performers for deployment frequency and time from commit to production, but took between one day and one week to repair incidents. In our research, we are interested in distinguishing between high and non-high performers, not in identifying medium or lower performers. However, the above clusters present a problem, because there is a gap in the values used to identify the high and the medium performers clusters. We circumvented this problem by considering an organization as a high performer if (i) it is within the boundaries limiting the cluster of high performers defined above, or (ii) it violates no more than one high-performance threshold by no more than one point in the scale adopted for the metric. The scales for each metric are: · Frequency of deployment scale: multiple deploys per day; between once per day and once per week; between once per week and once per month; between once per month and once every six months; fewer than once every six months. · Time from commit to production scale: less than one hour; less than one day; between one day and one week; between one week and one month; between one month and six months; more than six months. · Mean time to recovery scale: less than one hour; less than one day; between one day and one week; between one week and one month; between one month and six months; more than six months. During our interviews of Phase 2, we asked interviewees about these metrics in their organizations, so we could classify their contexts as being of high performance or not. Here, context relates to the primary deployable units [Sha+19] with which the practitioner worked in recent times. Forsgren et al. initially considered also change failure rate to compose IT performance [Vel+14]. However, statistical tests considered it less significant than the other three presented metrics. Nonetheless, researchers still used this fourth metric [FHK18; Sal+21]. Therefore, although we did not employ this metric for high-performance classification, we considered it to broaden our perception of practitioners’ situations. The scale for this metric is: · Change failure rate scale: 0% - 1%; 1% - 15%; 15% - 30%; 30% - 50%; More than 50%. Thus, for the interviews we conducted (described in Section 3.5), by assessing the presented metrics for services maintained by the participants, we perceived how con- 22 2 | BACKGROUND tinuously they could deliver new software versions while guaranteeing reliability. That is, how successful they have been in adopting continuous delivery, a crucial target of DevOps. 2.3 The structures of organizations Based on several studies [SF95; Don99; Hal84], Oliveira summarizes the basic elements of organizational structures as differentiation (division of labor) and integration (coordination) [Oli12]. Such definition aligns well with how Conway’s Law compares graphs abstracting system structures (subsystems’ interconnections) and the structures within an organization (communication paths among groups of people) [Con68]. Figure 2.7 illustrates this concept. Therefore, łorganizational structurež (or just łstructurež in this thesis) can be understood as łdifferentiation and integration patternsž. A B C Figure 2.7: According to Conway’s Law, the represented graph may refer, for example, to (i) services A and B using the underlying infrastructure C, or (ii) development teams A and B demanding the infrastructure group C. Organizations and their structures have been extensively studied in the management and administration fields. The studies of organizational structures deal with the disposition of groups (e.g., departments) in a firm and the existing relations among them [Oli12]. The roots of thinking on how the division of labor affects the productive forces of work in industrial settings can be traced back to Adam Smith [Smi14]. Later, Frederick Taylor reinforced the notion of maximum division of labor as the path to attain productivity gains [Oli12; Win14]. In this way, Taylor founded a management school advocating rational administrative procedures, clear channels of authority, centralized command and control, and interchangeability of employees [YH98]. Taylorism also relates to the Weberian bureaucratic theory: managers must avoid favoritism, nepotism, and intuition [YH98]. Taylorism also led to the emergence of Fordism, which focused on the mass production of standardized goods through the assembly-line [Jes92]. This view of classical management laid the basis for profoundly segregating development and operations in the software industry. Despite the outstanding popularity of Tayloristic approaches until the 60s, the use of top-down enforced rules and standards is effective only in stable environments (e.g., assemble lines) [YH98]. Moreover, Taylorism worked with the assumption that global optimization comes from local optimizations [YH98], which is disputed4 . Also, some 4 Theory of constraints alerts that local optimizations lead to global optimizations only when applied to the bottlenecks of the process [GC14]. 23 2.3 | THE STRUCTURES OF ORGANIZATIONS industries felt tensions in segregating departments. During the Boeing 777 construction, for example, the formerly isolated departments of design and manufacture were reconciled in the łworking togetherž system, which promoted the free flow of information between departments and even suppliers [Sab96]. The łworking togetherž aptitude aligns with the DevOps movement’s impetus in making development and infrastructure staffs collaborate among them [AH09]. Yeatts and Hyten claim that in uncertain or unstable environments, employees need to make unique decisions quickly, in such a way that rules and standards are of little value [YH98]. In such a context, they advocate that better performance is achieved with more informal and decentralized organizational designs. They, then, propose the adoption of self-managed work teams (SMWT), which relates to the cross-functional teams strategy adopted by Amazon [Gra06]. Such a position defies the view of maximum division of labor as the supreme efficiency enabler. Yeatts and Hyten define a self-managed work team as ła group of employees responsible for managing and performing technical tasks that result in a product or service being delivered to an internal or external customer.ž These teams would have the following properties: · Having typically from 5 to 15 employees. · Being responsible for all the technical aspects of work. · Rotating management and technical responsibilities among themselves periodically. · Not being short-term purpose groups. · Providing group members with autonomy, responsibility, meaningful tasks, and the opportunity to pursue different skills (what can satisfy in different degrees diverse employees). By examining the sectors of manufacturing, public service, and health care, Yeatts and Hyten found that SMWTs promote higher performance at less cost, and produce more innovation and creativity. The rationale is that decisions are more effective because team members taking decisions are the most knowledgeable persons about the work. However, the authors acknowledge that it is hard to prove such propositions through a quantitative analysis due to the difficulty in isolating factors. For example, some models predict self-reported performance well but not actual performance. Besides maximum division of labor versus SMWTs, it is also possible for each employee to report to both a product manager and a functional manager. This structure is called matrix; it provides dual authority, likely to cause confusion and conflict [Gal08]. Fayol corroborates this vision, stating that duality of command would be a perpetual source of conflicts, very grave sometimes [Fay13]. Galbraith also presents a more sophisticated structure, the łfront-back structure,ž aiming at the achievement of global scale [Gal08]. In this structure, part of the organization (the front half) focuses on customers, while the other (the back half) focuses on products, providing services to the front half. Another alternative to Fordism and maximum division of labor is the Toyota Production System (TPS) [Ohn88]. In this system, mass production is restrained by a just-in-time philosophy. Quality becomes a shared responsibility among all employees, not only a specialization: the production line must be stopped to fix problems. This philosophy has 24 2 | BACKGROUND influenced the ideas of lean software development, which focus on principles derived from TPS, such as reducing waste and bottlenecks [PP06]. It is also possible to analyze an organizational structure around other dimensions beyond the division of labor and integration. Researchers have proposed several classifications for organizational structures over the years. Mintzberg, for example, proposes a structure classification around three dimensions: prime coordinating mechanism, key part of the organization, and type of decentralization [Lun12]. In this way, his proposed structures are: Simple structure, with direct supervision, strategic apex as key part, and both vertical and horizontal centralization. Machine bureaucracy, with standardization of work processes, technostructure as key part, and limited horizontal decentralization. Professional bureaucracy, with standardization of skills, operating core as key part, and both vertical and horizontal decentralization. Divisionalized form, with standardization of outputs, middle line as key part, and limited vertical decentralization. Adhocracy, with mutual adjustment, support staff as key part, and selective decentralization. There are also other organizational studies that are more concerned with the dynamics of organizational changes than with the understanding of structures at a certain point in time [Sen+99; KC12; MR04]. Such studies are anchored in systems thinking (or complex thinking), related to complex systems, which is a dynamic view of organizations based on biological metaphors [Mor11]. Complex systems consider the interplay between growth processes and limiting processes [Sen+99]. Senge et al., for example, identify growth processes (łbecause it matters,ž łbecause my colleagues take it seriously,ž and łbecause it worksž), and strategies to limit these processes (e.g., łdon’t push so hard for growthž) [Sen+99]. Researchers also represent complex systems as networks of factors that mutually affect each other through reinforcing and balancing feedback loops [Pen+18]. Moreover, complex systems encompass leverage points, in which small changes in one aspect can provoke significant system-wide changes [Pen+18]. In other words, while classical management focuses on the division of labor among working groups, complex thinking focuses on the integration of such groups (łhow things connect are more important than what they arež [Sin20]). Assuming that organizations are complex systems has implications. Sosa et al. found a strong tendency for design interfaces and team interactions to be aligned [SER04], corroborating Conway’s Law. Nonetheless, in complex systems, they perceived such a match is not perfect. Another implication is that central processes of organizations must focus on change, such as Toyota’s katas, which are work patterns or routines focusing on continuous improvement and adaptation [Rot09]. In our work, complex thinking is not central. Nonetheless, we consider organizations as heterogeneously encompassing different structures, and such structures to vary over time (łtransitionsž). Also, the causes and conditions we study for each structure are implied in the forces operating such 25 2.3 | THE STRUCTURES OF ORGANIZATIONS transitions. Authors tackling complex systems have also published books to support managers in carrying organizational changes in their companies [Sen+99; KC12; MR04; Pfl14]. They, for example, list elements necessary to successful transformations (e.g., support from the CEO and reducing barriers within the organization [Sen+99]). Kotter and Cohen provide eight steps toward change: łincrease urgency,ž łbuild the guiding team,ž łget the vision right,ž łcommunicate for buy-in,ž łempower action,ž łcreate short-term wins,ž łdon’t let up,ž and łmake change stick.ž They also reveal core patterns associated with successful change: see, feel5 , and change. Manns and Rising defend that change is best introduced bottom-up with support at appropriate points from management, both local and at a higher level [MR04]. Such proposition resonates with our empirical findings (see Section 5.4). They also see change and innovation as a process, rather than an event, composed of stages: knowledge, persuasion, decision, implementation, and confirmation. A significant part of the refereed business books [Sen+99; KC12; MR04] sees actions over people’s culture, feelings, and emotions as more important than actions over structures. Senge et al. state that łit is not enough to change strategies, structures, and systems, unless the thinking that produced those strategies, structures, and systems also changesž [Sen+99] (at least one of our interviewees thought in this way too ś see Section 4.3.1). Kotter and Cohen reported: łthe central issue is never strategy, structure, culture, or systems (although these elements can be very important). The core of the matter is always about changing the behavior of peoplež [KC12], which is contradictory since they define culture as a group of norms of behavior and shared values. Manns and Rising relate culture and people to the speed up or slow down of innovation-decision processes [MR04]. Nonetheless, this centrality on culture is disputable. Consider Pflaeging’ view [Pfl14]: łCulture is not a success factor, but an effect of success or failure. (...) That is why it also cannot be influenced directly. (...) Culture is observable but not controllable. (...) A company cannot choose its culture, it has exactly the culture it deserves. Culture is something like the restless memory of an organization. (...) It endows something like a common "style" which all can rely on. (...) Culture, in this sense, is autonomous. Culture neither is a barrier to change, nor does it encourage change. It can provide hints to what an organization must learn. To change culture is impossible, but culture observation is valuable. (...) Culture allows us to indirectly observe the quality of change efforts: change trickles through into the culture.ž Such a view is somewhat corroborated by other stands, including historical materialism, for which the mode of production (and we can include its structures) of a society conditions the superstructure of this society (which includes culture) [Mar20]. Forsgren et al., for example, find out that practices of lean product development and lean management promote a performance-oriented culture [FHK18]. Therefore, we consider it relevant to study the forms of production of a society, regardless of their interplay with culture and psychological factors (that do exist and are also relevant). Pflaeging also has a proposal for structuring the production in complex organizations 5 Other theorists also question the pure rational model of decision making (i.e., the homo economicus) [MS93]. 26 2 | BACKGROUND toward high-performance [Pfl14]. He advocates a drastic change in the management approach to a non-management approach, organizing the company in a value-creating network of self-managed teams that interact as peers. He also proposes broad participation of employees in decision-making, roles rather than positions for employees, emergent leadership, and assessment of team performance rather than individual performance6 . Davis and Daniels call this stand holacracy, in which decisions are made by self-organizing teams, not by a traditional management hierarchy [DD16]. Davis and Daniels also alert to the risks of holacracy, in which career development is less clear, and people without the necessary management skills end up unofficially filling power vacuums. In this section, the reader was able to perceive that the general literature on organizations and their structures is vast and rich. However, one could also note that studies in this literature are not consensual about many dimensions. This legitimates studies in specific areas, such as in software production. Thus, in the next section, we explore the specific literature in the context of software production. Finally, we hope the issues discussed in this section have provided the reader with a broader perspective to interpret the propositions of this thesis. 2.4 Related work Organizations and their structures have also been studied in the software engineering context. Seaman and Basili consider an organizational structure to be a network of relationships of different types (e.g., collaborating and reporting) among developers in a company [SB98]. They investigate the association between organizational attributes and developers’ communication efforts in code inspection meetings. Herbsleb and Roberts study how developers can optimally coordinate decision-making by considering the interplay among multiple decisions [HR06]. Nagappan et al. provide eight metrics to quantify organizational complexity, seeking to associate such metrics with software quality [NMB08]. However, these earlier works focus on development activities, without considering infrastructure or operations concerns. In Section 2.1.3, we already discussed the quandary brought by the DevOps movement regarding how to structure the working groups of development and infrastructure. Researchers and practitioners have proposed taxonomies [Ral19] for the interactions between development and infrastructure professionals [SP13; SP19; NSP16; MBK18; Sha+17; Lop+21; MB20; Kim+16]. However, most of them do not focus on the conception of their taxonomies and instead take them as a starting point for their work. Nonetheless, Shahin et al. [Sha+17] systematically conducted interviews and surveys, and found four types of team structures: i) separate Dev and Ops teams with higher collaboration, ii) separate Dev and Ops teams with a facilitator in the middle; iii) small Ops team and more responsibilities for the Dev team, and iv) no visible Ops team. Independently from Shahin et al., we created a taxonomy of structures to organize development and infrastructure professionals, which mostly coincides with that of Shahin 6 While advocating cross-functional teams, Donnellon also favors team evaluation over individual evaluation, toward a more collaborative way of working [Don93]. 27 2.4 | RELATED WORK et al. In particular, a significant difference between our taxonomy and theirs is that we identified the platform teams, a pattern recently advocated by practitioners [SP19; BSK20]. Thus, we identified the following structures: · Segregated departments, with highly bureaucratized cooperation between development and infrastructure groups. · Collaborating departments, focusing on facilitated communication and collaboration between development and infrastructure groups. · API-mediated departments, in which the infrastructure team (the platform team) provides highly-automated infrastructure services to assist developers. · Single departments, in which teams take responsibility for both software development and infrastructure management. We provide a complete description of each structure in Section 4.3, presenting them as a grounded theory [GS99] in the taxonomy form (i.e., as a classification system) [Ral19]. We observed that professionals may be organized differently for different deployable units [Sha+19] and that an organization can be in a transitional state from one structure to another. We also found evidence that API-mediated departments promote better delivery performance [For+20]. Lopez-Fernandez et al. developed a taxonomy concurrently with ours [Lop+21]. Although they organize their taxonomy differently from ours, both results present essential common elements, encompassing the ideas of collaborating departments, crossfunctional teams, and the provisioning of platforms. Lopez-Fernandez et al. [Lop+21] acknowledge the common points among the works of Shahin et al. [Sha+17], ours, and theirs, highlighting different insights brought by them and stressing how these models can be appreciated in conjunction, providing data and methods triangulation. More on the differences between our taxonomy and those of other researchers are in Section 4.5. However, the above-related works present taxonomies to describe structures. They do not explain why different companies adopt different organizational structures, which is also a research goal of us. Nonetheless, Erich et al. [EAD17] authored an earlier article closer to this goal, in which they seek to provide an explanation for DevOps. For six interviewed organizations, they explored: why and how to adopt DevOps, and the consequences (problems and results) of adopting it. They also explored organizational structures (e.g., discussing DevOps teams and the distribution of responsibilities). Still, their analysis targets specific organizations, with no theory building. In other words, they do not provide a taxonomy of DevOps structures, but simply describe the DevOps structures of six organizations. Moreover, causes and consequences are related to the łDevOps adoptionž category, not to different structures, as we do in Section 5.4. 29 Chapter 3 Research design This thesis presents a theory based on data collected from semi-structured interviews conducted in real-world organizations. By analyzing the data extracted from the interviews, we built a theory integrating concepts organized around a taxonomy. In this chapter, we: disclose our understanding of theory and taxonomy; explain our base methodology ś Grounded Theory (GT) [GS99]; and present the steps of our research design. We also make explicit how we conducted the literature review throughout our research process. 3.1 Theories and taxonomies We present our theory by structuring its concepts around a taxonomy. Broadly speaking, a theory is a system of ideas for explaining a phenomenon [Ral19], or knowledge accumulated in a systematic manner [Gre06]. Taxonomies, on the other hand, are classifications, i.e., collections of classes, wherein each class is an abstraction that describes a set of properties shared by the instances of the class1 [Ral19]. A taxonomy is a classification system that groups similar instances to increase users’ cognitive efficiency, enabling them to reason about classes instead of individual instances [Ral19]. If a taxonomy provides an explanation, it can be considered a theory for understanding: a system of ideas for making sense of what exists or is happening in a domain [Ral19]. While applying łtaxonomyž to denote a theoretical formulation, we employ łclassificationž in a broader sense, including classification proposals without theoretical formulation. We can categorize our study as a field study [SF18], a category of knowledge-seeking studies, in opposition to solution-seeking studies [SF18]. In this way, it is essential to note that although our theory is intended to be used by practitioners in practical settings, as is the goal of a grounded theory, the theory itself provides an explanation of the world, i.e., a guide for reasoning, not a straightforward guide for action. This aligns with Ralph, who says a theory should explain, not prescribe [Ral19]. 1 The scientific literature as a whole does not employ the concepts of taxonomy, typology, and classification in a unified and consistent manner [DG94; McK82]. In our research, we follow Ralph’s considerations [Ral19], provided in the software engineering context. 30 3 | RESEARCH DESIGN One could see a knowledge-seeking theory as of little practical relevance. However, Gregor defies such a view. He states that accumulated knowledge in theories enlightens professional practice [Gre06] ś łnothing is so practical as a good theoryž [Lew45]. Gregor still ensures that all types of theories can have social or political implications: łthe mere act of classifying people or things into groups and giving them names (e.g., black versus white) can give rise to stereotypical thinking and have political and social consequences.ž We provide more practical implications of our theory in the conclusion of this thesis (Chapter 7). Gregor also provides a taxonomy of theory types in information systems research [Gre06]. The types are: I - analysis (description), II - explanation, III - prediction, IV - explanation and prediction, and V - design and action. In this framework, we fit our theory in type II, a theory to explain a specific phenomenon. We also fit our effort of Phase 2 as initially building only a theory do describe (type I) some existing patterns in the world. Still, Glaser and Strauss classify theories into substantive and formal theories [GS99]. Substantive theories are grounded in research on one particular substantive area (e.g., work, juvenile delinquency, medical education, mental health), and they might apply to that specific area only. A formal theory is more abstract than a substantive one, it is developed for a formal, or conceptual, area of sociological inquiry (e.g., stigma, deviant behavior, formal organization, socialization, status congruence, authority and power, reward systems, or social mobility). An example of a substantive theory is: łHow doctors and nurses give medical attention to dying patients according to the patient’s social value.ž A corresponding formal theory could be łHow professional services are distributed according to the social value of clients.ž Our theory is a substantive one, i.e., we constraint our theoretical formulations to the context in which the involved researchers are experts, the software field. In particular, Glaser and Strauss claim that substantive theories can have important general implications and relevance, laying the foundations for developing subsequent formal theories. For our research context, building a formal theory would mean fully integrating our findings to more general theories on the study of organizations, usually published in the fields of administration and management. Although we do not covet such an accomplishment, we do not ignore these other works. In Section 2.3, we provided an overview of this general literature about structures in organizations. In this way, the reader can, at least, appreciate our work considering a broader picture. 3.2 Grounded Theory To build a theory, one must initially embrace some scientific approach geared to theory production. The rise of modern science was sustained by the mathematical and experimental pillars, being experiments strongly conjoined with statistical methods [Rad09]. In the mid-1970s, even sociological sciences, in which strict experimental control is often unfeasible, focused on experimental work [Rad09]. On the other hand, by the time, qualitative research was being seen as lacking scientific rigor, and emphasis was on theory 31 3.2 | GROUNDED THEORY verification [Hod21]. However, especially in social sciences, there was a gap: how to produce theories to be tested by the established scientific methods? Grounded Theory (GT) is a methodology originated in social sciences to support researchers to build theories based typically on qualitative data in a disciplined manner. With its systematic and rigorous procedures, the introduction of GT re-established the value of qualitative research in sociology, arguing for theory development as a fundamental research objective [Hod21]. The term łgroundedž means a grounded theory is backed (grounded) by data. Generating a theory from data means that most hypotheses and concepts are systematically worked out in relation to the data during the course of the research ś generating a theory involves a research process [GS99]. Software engineering encompasses several social and human concerns, as it is, for example, the issue of organizational structures in corporations. In this way, the use of GT in the software engineering field has become commonplace [SRF16; Lop+21; MB20; Jov+17; WNA15; HN17; San+16; FJT16; LPB19]. A grounded theory must fit the data, have relevance to the field, and be modifiable [GS99]. Its primary advantage is to encourage deep immersion in the data, which may protect researchers from missing instances or oversimplifying and over-rationalizing processes [Ral19]. GT is also adequate for our purposes since it is well-suited for questions like łwhat is going on here?ž [SRF16]. In our case, we want to know what is going on in software-producing organizations. Since there are multiple GT variants, it is important to state which one to adopt. In our work, we base our approach on the seminal book The Discovery of Grounded Theory from Glaser and Strauss [GS99], which describes what is known as the łclassical Grounded Theoryž [SRF16]. Historically, this is the first GT variant, and it is epistemologically2 more influenced by the views of objectivism3 and positivism4 ; in this case, theory is discovered from data [SRF16]. While a theory itself must emerge from data, classical GT do not disallow pre-established research questions5 . There are other GT variants, including ones based on interpretivism6 and constructivism7 , in which knowledge and truth are created, not discovered [Sch98]. However, debates among scholars make no variant universally endorsed [SRF16; Cha08]. More recentlty, Hoda proposed a new GT variant, the Socio-Technical Grounded Theory (STGT), tailored for use in software engineering and information systems research [Hod21]. However, STGT was not available when we elaborated our research design. 2 Epistemology refers to what can be treated as knowledge and how that knowledge is gained, in a research context [Hod21]. 3 For objectivism, there is a single, correct description of reality [SRF16]. 4 At least in our context, positivism refers to a definite, assured, and certain nature of reality that can be studied through direct observations, and it excludes traditional metaphysics and theology [Hod21]. 5 Examples of questions guiding sociological inquiries in the GT context: łDoes the incest taboo exist in all societies?ž, łAre almost all nurses women?ž [GS99]. 6 Interpretivism assumes no universal truth or reality exists, systems exhibit emergent behaviors not reducible to their component parts, and that typical quantitative methods are insufficient for understanding social phenomena [SRF16]. 7 For constructivism, reality is socially constructed and researchers’ and participants’ presence and interactions construct the reality that is studied [Hod21]. 32 3 | RESEARCH DESIGN The constant comparative method is the core method for producing a grounded theory. It relies on rigorous analysis of qualitative data, and it is accomplished with coding, a process of condensing original data into a few words with conceptual relevance, which give emergence to theoretical concepts. Glaser and Strauss do not prescribe a precise coding format [GS99], sufficing that the researcher annotates concepts and adheres to the following rules: (i) when noting a concept, compare its occurrence with previous occurrences of the same or similar concepts and (ii) while coding, if conflicts and reflections over theoretical notions arise, write a memo on the ideas. A memo is an unstructured note reflecting the researcher’s thoughts at a specific point in time. Besides the rigorous analysis of qualitative data, GT also relies on the researcher’s theoretical sensitivity; i.e., their capacity to have theoretical insight into a substantive area. Our theoretical sensitivity comes from direct experience in the IT industry8 and our previous works on DevOps and software engineering [Siq+18; CK18; Wen+20]. Moreover, we sharpened our sensitivity by conducting our survey on the DevOps literature [Lei+19]. This acquired theoretical sensitivity explains our capacity to pose the research questions of this doctoral research. In GT, data collection and analysis co-mingle and build on each other, so the emerging theory guides which data to sample next, considering gaps and questions suggested in prior analysis. This processÐcalled theoretical samplingÐavoids the usual statistical notions of verificational methods, such as significant sample. Instead, researchers must establish the theoretical purpose of the sample, defining multiple comparison groups, maximizing variation among groups to identify similarities, and minimizing variation to determine differences. Ideally, the researcher should continue the analysis until theoretical saturation is achieved, which means that new data no longer meaningly impact the theory. Nonetheless, as an ever-evolving entity, rather than a finished product, new data can always be analyzed to alter or expand a grounded theory. Accordingly, practitioners could (and potentially will) adjust the theory when applying it to their concrete scenarios [GS99]. 3.3 Overview of the steps in our research process To better structure the presentation of our research steps, here we borrow the nomenclature defined by Hoda for the Socio-Technical Grounded Theory (STGT) [Hod21]: Basic stage: encompasses Basic Data Collection and Analysis (DCA), which involves lean literature review, study preparation and piloting, and iterations of basic data collection and analysis. Initial theoretical concepts start to emerge. Advanced stage: encompasses theory development, involving targeted literature review if necessary, and selecting the emergent or the structured mode of theory development. 8 The doctoral candidate is also a professional software developer. 33 3.3 | OVERVIEW OF THE STEPS IN OUR RESEARCH PROCESS Emergent mode: enables the emergence of theory through the iterative targeted data collection and analysis, ending with theoretical saturation and resulting in a mature and integrated theory. Structured mode: enables the structured development of theory through structured data collection and analysis, ending with theoretical saturation and resulting in a mature and structured theory. Lean literature review (LLR): a lightweight and high-level review performed early in the study, during the basic stage, to identify research gaps and motivate the need for a study. Targeted literature review (TLR): an in-depth review of literature targeting relevance to the emerging concepts, performed periodically during the advanced stage. With this frame, Figure 3.1 presents the steps of our research. In Phase 1, we conducted an initial literature review to identify research gaps. This was a łlean reviewž regarding the goal of this thesis (understanding the organization of development and infrastructure professionals in the software industry), but a broad and solid review regarding the topic of the review itself, which was łDevOpsž. We presented the results of this review, published in a journal (Paper 1), in Section 2.1. The primary output of Phase 1 was the research questions of this thesis. In Phase 2, the basic stage continued with brainstorming sessions with DevOps specialists. We then fine-tuned our research questions and gathered input to build our research protocol. This stage also yielded some relevant concepts, such as platform teams. We explain these brainstorming sessions in Section 3.4. With a well-defined protocol, we then initiated the advanced stage, geared to theory generation. We iteratively applied GT recommended analysis selection and procedures, especially open coding, to produce concepts in our theoretical framework. By using such concepts and comparing interview data (using the comparison sheet), we integrated such concepts into a taxonomy. We then gathered some feedback from the study participants. In this way, we produced our taxonomy, published in a journal (Paper 4). We expound how we planned to conduct interviews and to analyze data, including the review process, for Phase 2 in Sections 3.5, 3.6, and 3.7. Chapter 4 unfolds the results of the planned actions: the process of participants selection, the achievement of saturation, the produced taxonomy, and the gathered feedback. In Phase 3, we continued our theory development, now in structured mode and using a theoretical coding template (6C) recommended in the context of GT. We also performed a structured analysis of resonance, labeling interview excerpts as showing support or confusion about our taxonomy. After another round of participants’ feedback, we finished our theory formulation (refined based on resonance analysis and structured in the 6C template), which we submitted to publication in a journal (Paper 6). We expound how we planned to conduct interviews and to analyze data, including the review process, for Phase 3 in Sections 3.8, 3.9, 3.10, and 3.11. Chapter 5 unfolds the results of the planned actions: the process of participants selection, the achievement of saturation, the consolidated theory, and the gathered feedback. 34 3 | RESEARCH DESIGN Figure 3.1: Steps and products of our research 35 3.4 | BRAINSTORMING SESSIONS Finally, in Section 3.12, we clarify the timing and role of our literature reviews. 3.4 Brainstorming sessions After drafting our research questions, we conducted łbrainstorming sessionsž with seven specialists, experienced with DevOps. Some of them have witnessed DevOps transformations in large organizations, while others have actively shaped such transformations in large and small companies (such as a senior consultant and a serial entrepreneur we know). The base script for these sessions aimed to elicit feedback on our research questions and spark discussion about concerns raised by our survey on the DevOps literature [Lei+19]. The conversations were essential for us to fine-tune our research questions and research approach. These sessions also helped us to target better the script for the following semistructured interviews toward concerns learned from these experts. Therefore, the concrete outputs of this phase were: the research questions presented in this text and the interview script, which we finished just after the brainstorming sessions. We did not apply the analysis procedures detailed in Section 3.6 for these preliminary conversations, considering they were not intended to provide answers for our research questions. Nevertheless, we did not dismiss the theoretical insights provided by them. For example, the notion of a platform team began to take shape in the brainstorming sessions and, thus, influenced subsequent analysis. After these brainstorming sessions, we started the semi-structured interviews. 3.5 Conducting the interviews of Phase 2 Since our initial goal was to discover existing organizational structures, and not to verify a preconceived set of structures in the field, it would be unsuitable to use only closed questions; instead, we conducted semi-structured interviews. Semi-structured interviews mix closed and open-ended questions, often accompanied by łwhyž and łhowž questions; the interview can deviate from the planned questions, allowing for discussion of unforeseen issues [Ada10], which fits the purpose of theory generation. With semi-structured interviews, we could also focus on different topics in different conversations, according to the relevance of each theme for each context. Before starting the interviews, we built an interview protocol (Appendix A) to guide the process based on our previous experience with interviews [CK18], on other relevant works [HN17; Ada10], and on the guidelines offered by a website for journalists, called ijnet9 . The interview protocol contained the questions that guided the interviews, which mainly were derived from the brainstorming sessions and our survey of the DevOps litera9 https://ijnet.org/en 36 3 | RESEARCH DESIGN ture [Lei+19], and hence also grounded in data10 . The themes addressed by the interview questions of Phase 2 included: (1) interviewee company and role; (2) responsibility for deployment, building new environments, non-functional requirements, configuring and tracking monitoring, and incident handling, especially after-hours; (3) delivery performance (using the metrics and scales defined in Section 2.2); (4) future improvements in the organization; (5) effectiveness of inter-team communication; (6) inter-team alignment for the success of the projects; (7) description of DevOps team or DevOps role, if existing; and (8) the policy for sharing specialized people (e.g., security and database experts) among different teams. The interview protocol was not a static document. As we conducted interviews, we changed how we asked some questions, focused more on some questions and less on others, and created new questions to explore rising hypotheses. We provide some indications about the evolution of the questions in the interview protocol itself. 3.6 Analyzing the interviews of Phase 2 We followed the core Grounded Theory principles of constant comparative method and coding, which are intended to discipline the creative generation of theory. During this process, we created two artifacts for each interview: transcripts and codes. We also created two global artifacts: a comparison sheet and a conceptual framework. Finally, by analyzing, comparing, and using all these artifacts, we elaborated our taxonomy. Transcripts. We listened to each audio record and transcribed it in the language of the interview (Portuguese or English). We did not transcribe the full interview. Instead, we excluded minor details and meaningless noise [GA08]. For instance, we transcribed the following part of a conversation: łIf you break the SLA, there are consequences. You have to improve things; you can’t go back to feature development until SLA has recovered. Any problem in final service: developer is paged. If it’s infrastructure-related, developers call the infrastructure team. And we solve together. We try to help anyway, because at the end of the day if users can’t use the system, we all suffer.ž Example of part of the conversation not transcribed: łActually if you haven’t read The Phoenix Project [KBS18], read The Goal [GC14] first. You’ll see what I mean. . . because you ill get the foundations first and then the way it is being implemented in the third millennium.ž This was helpful advice that, indeed, we followed. Nevertheless, in this case, it was enough to take note of the suggested material. Codes. After transcribing an interview, we then derived the coding by condensing the interviewers’ transcripts into a few words (the essence of the interview in relation to our research questions). Each interview has its list of coding, representing the particular reality 10 GT also considers the library as a source of data. 37 3.6 | ANALYZING THE INTERVIEWS OF PHASE 2 of that interviewee. The above fragment of transcription, for example, led to the following coding: Developers → own the availability of their services Broken SLA → blocks feature development Broken SLA → page developers Broken SLA → if needed, call infra Even for interviews in Portuguese, we produced the codes in English (at least starting from the seventh interview). Our supplementary material presents more examples of the coding we performed11 . The comparison sheet. To support the constant comparison of different interviews and codings, we summarized the main characteristics of each interview in a spreadsheet. We filled the cells with concise statements, with rows representing interviews and columns including the following characteristics: interview number, organizational structure, supplementary properties, delivery performance, observation, continuous delivery, microservices, cloud, other teams, non-functional requirements (NFRs), monitoring / on-call, alignment, communication, bottleneck, responsibility conflicts, database, security, specialists sharing, and DevOps team/role. Conceptual framework. From the constant comparison of codes of different interviews emerged theoretical concepts. These concepts and their relations form the unified conceptual framework, which comprises the shared understanding among researchers about the analyzed data [MH13]. Our conceptual framework is not a representation of our theory or taxonomy, but rather an intermediary artifact used to consolidate, in a single place, the concepts yielded by the coding process, working as the source of concepts to the shaping of our theory. We maintained a visual representation of our conceptual framework as the research evolved. In such visual representation, as illustrated by Figure 3.2, rectangles represent concepts abstracted from data, while rounded boxes represent properties of these concepts (i.e., an attribute or a characteristic of a concept). Figure 3.3 provides as example a fragment of our conceptual framework. We provide all the versions of our conceptual framework in the supplementary material (see Section 6.2). Concept 1 relation among concepts Conceptual property Concept 2 Figure 3.2: Conceptual framework nomenclature As we evolved the conceptual framework and filled our comparison sheet, we developed our taxonomy by classifying each interview by its organizational structure and 11 The supplementary material to this thesis provides extra material reporting our thorough chain of evidence and enabling the replication of our procedures. See Section 6.2. 38 3 | RESEARCH DESIGN self-serviced for / provides autonomy for demand new features for Product teams Infrastructure services use decoupled from / not bottleneck for / can help and collaborate with offers Platform team On call for infrastructure services. Product teams on call for final services. Figure 3.3: A fragment of our conceptual framework its supplementary properties. The classification process was based on the concepts provided by the framework and on the analysis of similarities and differences between the interviews, summarized in the comparison sheet. As we evolved our understanding with new interviews, we revisited the classification of previous interviews to refine our taxonomy. For example, after the emergence of a supplementary property, we checked whether we could classify previous interviews with the new property. We present the taxonomy emerged from this process in Section 4.3. 3.7 Review process of Phase 2 After some interviews, the doctoral candidate developed the first version of the coding lists, the comparison sheet, the conceptual framework, and the taxonomy. Based on the transcriptions, other two researchers thoroughly reviewed these artifacts, triggering discussions that affected their evolution. When making a decision that could impact our taxonomy, we involved a fourth researcher. One example of how we evolved and enhanced our taxonomy is how we developed the supplementary properties after twenty interviews. Additional rounds of analysis, discussions, and theory elaboration were undertaken. We went through this internal review process to reduce the bias of a single researcher performing analysis with preconceived ideas. 3.8 Conducting the interviews of Phase 3 In the conducted semi-structured interviews of Phase 3, after presenting our taxonomy to the interviewee, we approached: which organizational structure was adopted in the context of the interviewee according to their opinion; why that structure was chosen over the others; whether a different structure would be more suitable for the interviewee’s 39 3.9 | RESONANCE ANALYSIS context; what were the perceived (or expected) disadvantages of the discussed structures; and what were the strategies to handle such disadvantages. During interviews, we followed Adams’s guidelines [Ada10]. We provide our complete script with the rationale of each question in Appendix B. 3.9 Resonance analysis The interviews of Phase 2 provided us with enough data to build the first versions of our taxonomy of organizational structures. In such conversations, we employed secondlevel questions [Yin09] to avoid exposing the emerging structures to interviewees. After this, we performed a brief and limited member check [Gub81] through online surveys. The following and necessary step was to observe the use of our taxonomy in practice, verifying whether it achieves the goal of a classification (support reasoning by increasing users’ cognitive efficiency [Ral19]) and serves as a grounded theory (being applicable by practitioners [GS99]). To answer RQ2 and RQ2.1, we set up a favorable context to apply and refine our taxonomy ś we had to use its concepts during interviews of Phase 3. We refer to the taxonomy refinement process as resonance analysis, where łresonancež alludes to the degree to which findings are understandable to participants [Ral19]. By assessing resonance in the Grounded Theory context, we do not aim to determine whether the taxonomy is łvalidž or not. Under GT principles, when faced with new conflicting evidence (e.g., a taxonomy misuse), we adapted and evolved our theory, strengthening it. We note that social theories are rarely confirmed but are instead corroborated, confronted, or evolved by new studies [Sir+11; Pin86; And83]. Steinmacher et al., for example, gathered qualitative data to refine their grounded theory with additions, deletions, and reorganizations in their model [Ste+16]. Similarly, our process guided us on managing such operations in our taxonomy: adding, deleting, reorganizing, and renaming its high-level elements. For each interview, we coded relevant excerpts as: · providing support to our theory, when the interviewee employs the terms of the taxonomy to discuss reality or possibilities in a precise and confident way; or · displaying confusion about our theory, when the interviewee employs a term from the taxonomy in a different way than we would expect, or there is difficulty in selecting a term to describe its reality or possibilities. For each excerpt coded as confusion, we defined an action to handle the situation or justified our choice of not taking any action. In consequence, the taxonomy evolved with new versions. We did not wait for interviews to be over to apply such actions; we interleaved collection, analysis, and actions, following GT principles. In this way, we conducted the last interviews based on the latest taxonomy version. The procedures of our resonance analysis combine aspects of directed content analysis (coding by using predefined categories) and summative content analysis (counting codes and assessing the contexts for confusions) [HS05]. We present the results of the resonance analysis in Section 5.3. 40 3 | RESEARCH DESIGN 3.10 6C analysis Glaser proposed 18 theoretical coding families to guide researchers in labeling data at the conceptual level [Gla78]. These families were intended to sensitize these professionals to the many ways through which a concept could be examined. The łbread and butterž coding family for sociologists are what he labels łThe Six C’s: causes, contexts, contingencies, consequences, covariances, and conditionsž [Sal15]. Some GT studies on software engineering use this practice [HNM11; vv13; Jov+17]. Glaser states that theoretical codes are vital because they potentiate a theory’s explanatory power and increase its completeness and relevance, resulting in a grounded theory with a greater scope and parsimony [Gla05]. Hernandez explains that łwithout theoretical codes, the substantive codes become mere themes to describe (rather than explain) a substantive area; the descriptive thematic approach is characteristic of qualitative research methods such as phenomenology or ethnography but not Classic GTž [Her09]. Indeed, in this doctoral research, we present not just a łtheory for analyzing,ž but a łtheory for explainingž [Gre06]. As it happened with Hoda et al. [HNM11], when comparing theoretical coding families, it became evident that the 6C coding family is the most suited for our research goals. We understand that our research questions can be answered in the 6C format since, for a given context and certain conditions, there are causes that lead organizations to take actions expecting specific consequences ś although contingencies may emerge as well. Moreover, there may be a covariance of such causes, consequences, and contingencies in specific contexts and conditions. Thus, we transcribed each interview, highlighted key points from the interviews (the excerpts with potential theoretical interest), extracted codes from the key points, and associated them with 6C labels. Usually, theoretical coding associates codes with the core category of the study. In our case, the four organizational structures of our taxonomy are our core categories. As the coding process advanced, we merged and abstracted different codes, as it is common to open coding too. Hence, a code may have different sources (interviews). We provide the key points and the extracted codes as supplementary material (see Section 6.2). Although the original 6C labels provide a robust analysis framework, there is no reason to force relevant codes to fit into them. Therefore, as we perceived a need during analysis, and as agreed in review sessions, we adapted the labels ś such flexibility agrees with Glaser’s ideas [Her09]. Thus, the employed definitions of the labels used during our 6C analysis were: · Characterization: identifying structures’ characteristics, i.e., aspects that enable relating companies to structures. · Conditions: environmental conditions that are necessary to implement a structure (i.e., prerequisites). · Causes: reasons/motivations/opportunities that led the organization to adopt a particular structure and not another. 41 3.11 | REVIEW PROCESS OF PHASE 3 · Avoidance reasons: reasons/motivations that led the organization not to adopt a particular structure. · Consequences: outcomes that happen or are expected to happen after an organization adopts a structure, including unexpected issues. · Contingencies: strategies to overcome a structure’s drawbacks12 . We did not analyze context and covariance interview-by-interview. The context of our interviews corresponds to our sample (see Section 5.1). We performed the covariance analysis after the last interview. We used characterization codes to link interviews and their codes to structures. Nevertheless, as they largely overlap with our taxonomy’s core categories, we do not explicitly report them here. It is troublesome to differentiate facts from interviewees’ opinions. We mitigated this issue by reporting only codes supported by at least three interviews. The rationale is that an idea supported by three persons, thus in at least two companies, is worthy of consideration to some degree. We call the conditions, causes, avoidance reasons, consequences, and contingencies supported by at least three interviews as strong codes. We present the results of the 6C analysis in Section 5.4. 3.11 Review process of Phase 3 The doctoral candidate conducted the initial analysis of each interview. Periodically, other two researchers joined for review sessions in which we held discussions until reaching a consensus. While the doctoral candidate is also a software developer, it is relevant to note that one of the review researchers is also an experienced infrastructure professional. Receiving insight from this type of professional for a DevOps-related study was a recommendation given by an interviewee of Phase 2, aiming to soften possible biases given the doctoral candidate’s metier. We held 14 review sessions, from January to October 2021, with most of them taking around two hours. 3.12 Our approach to the related literature A key component of Grounded Theory is limiting the exposure to the literature at the beginning of the research [SRF16]. This advice diverges from recommendations of other methodologies, such as Case Study [Yin09]. The goal is to prevent researchers from testing existing theories or thinking in terms of established concepts [SRF16]. As put by Glaser and Strauss: łcovering all the literature before commencing research increases the probability of brutally destroying one’s potentialities as a theoristž [GS99]. Nonetheless, it is not feasible to acquire theoretical sensitivity and formulate opportune research questions with no literature exposure at all. Therefore, we had to manage literature 12 One of the meanings of łcontingencyž in the Cambridge Dictionary is łan arrangement for dealing with something that might possibly happen or cause problems in the futurež (https://dictionary.cambridge.org/ dictionary/english/contingency). 42 3 | RESEARCH DESIGN exposure in this doctoral research carefully. We started, in Phase 1, with a literature review on DevOps (Chapter 2) in which we studied a few papers unfolding our research questions concerning organizational structures. After reading this bare minimum to formulate our research questions, we did not look for more readings on organizational structures. The main idea was to avoid making our open coding process biased with concepts elaborated in other works. Such care makes the findings in our research much more significant, such when we discovered the concept of platform teams. However, with the results of our DevOps survey, we already had some relevant concepts at hand. As much as possible, we tried not to consider these concepts during our open coding process. An example of a promising concept found in our survey was the łDevOps team,ž which one could expect to emerge as a structure of our taxonomy. The fact that this did not happen is evidence that we, fortunately, did not drive our analysis by the initial concepts yielded by our DevOps survey. At the end of Phase 2, we started to look for similar works (i.e., other works proposing taxonomies for organizing development and infrastructure professionals in softwareproducing companies). We then elaborated a detailed comparison between our taxonomy and these other studies, which we present in Section 4.5. While conducting Phase 3, we continued to track similar works that could appear. Nevertheless, we also broadened the scope of our target literature review at this stage. We started to look for works discussing more generally on organizational structures, not only in the software production context. Such works, the łgeneral literature,ž are usually published in the management and administration fields. The objective of these readings was to provide perspective on our substantive theory. We did not aim to integrate such general theories with ours. Such integration would lead us to the work of formulating a formal theory [GS99], which is out of the scope of this doctoral research. However, ignoring this research landscape would not be suitable. Therefore, we present this general literature in Section 2.3. 43 Chapter 4 A taxonomy for describing organizational structures In this chapter, we present the outputs of our research Phase 2. First, we explain our approach to the participant selection and the resulting sample (Section 4.1). Then, we explain our saturation criteria to stop selecting new participants (Section 4.2). After that, and most importantly, we present the first versions of our taxonomy for organizing development and infrastructure professionals (Section 4.3). We also present the result of our member check process (Section 4.4) and the comparison between our taxonomy and other similar works (Section 4.5). 4.1 Sample We sent out about 90 interview invitations using a convenience approach: the first invitations were close contacts in our research group’s network. We also contacted participants suggested by our interviewees and colleagues. The only requirement was that the participant should work in an industrial context that has adopted continuous delivery or has implemented efforts toward it. Some invited participants did not reply, and some demonstrated interest in participating, but could not make time for it. Ultimately, we interviewed 37 IT professionals (≈ 41%). Following ethical procedures [Str19], we anonymized all the interviewees and their organizations. We recorded the interviews for later analysis, keeping the audio records under restricted access. We conducted the interviews from April 2019 to May 2020. Nine interviews were conducted in person1 , five of which took place at the interviewee’s company, and 28 were held online. The sessions took from 24 to 107 minutes (median of 48 minutes). We employed several strategies to foster diversity and enhance comparison possibilities in our sample, as recommended by GT guidelines [SRF16]. We aimed to include a broad range of organization and interviewee profiles, as perceivable in Table 4.1. For instance, 1 These in-person interviews were before the COVID-19 pandemic. 44 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES we selected organizations of different sizes2 : small (30%), medium (32%), and large (38%); of different types: private (90%), governmental (5%), and others (5%); and from different sectors and countries. We included male (73%) and female (27%) professionals, and also chose interviewees with different roles. Role 17: Developer 7: Development manager 5: External consultant 3: Infrastructure manager 2: Infrastructure engineer 1: Executive manager 1: Enabler team member 1: Designer Gender 27: Male 10: Female Time since graduation 15: More than 10 years 13: From 5 to 10 years 9: Less than 5 years Degree 22: Undergraduate 13: Masters 2: PhD Team location 21: Brazil 5: USA 4: Globally distributed 2: Germany 2: Portugal 1: France 1: Canada 1: Italy Number of employees in the organization 14: More than 1000 12: From 200 to 1000 11: Less than 200 Organization type 33: Private for profit 2: Governmental 1: Private nonprofit 1: International organization Table 4.1: Number and description of participants and organizations Table 4.1 describes the participants, presenting only an aggregated profile of participants to cope with anonymization [Str19; San+16]. Location refers to that of the interviewee’s team; we had four participants working remotely for globally distributed teams. When describing roles, enabler team indicates a specialized technical team that supports developers, but without owning any services. For interviews with consultants, the number of employees refers to the size of the companies hiring the consultancy companies (and not to the consultants’ employers). The interviewees worked in the following business domains: IoT, finance, defense, public administration, justice, real estate, maps, education, Internet, big data, research, insurance, cloud, games, e-commerce, telecommunication, fashion, international relations, mobility, office automation, software consulting, inventory management, vehicular automation, team management, and support to software development. Five of the interviewed companies were unicorns (startups with a valuation over U$1 billion), and two of them were tech giants (among the top 4 IT companies in the world). We also selected participants with theoretical purposes in mind, thus applying theoretical sampling [GS99]. We interviewed participants who work in scenarios where it 2 We employed 200 and 1,000 as size thresholds because they are used in information publicly available on LinkedIn. 45 4.2 | SATURATION is particularly challenging to achieve continuous delivery (e.g., IoT, games, or defense systems), aiming to understand the limits and eventual corner cases. After the twentieth interview, we more actively sought people: in a cross-functional team, in (or interacting with) a platform team, with no (or few) automated tests, with monolithic systems, and labeled as łfull-stack engineersž. We adopted these criteria due to hypotheses not wellsupported by our chain of evidence at that time. To support our findings, we included excerpts from these conversations in our chain of evidence (see Section 6.2) and in this thesis. The excerpts are formatted in italics and within quotes. Excerpts and other accounts refer to interviews using tokens in the format łIN ž. Thus, łI2ž refers to the second interview, interviewee, or interviewee’s organization. Brainstorming sessions are indicated as łBN ž. Such excerpts and citations are intended to make readers łfeel they were also in the field,ž a GT recommendation [GS99]. 4.2 Saturation We consider the size of our conceptual framework as a proxy for how much we have learned so far about our research topic. We define the size of the conceptual framework as the number of elements in the diagram representing it, by counting the number of concepts, conceptual properties, and links. Consider Figure 4.1-(a): the 𝑥 axis represents the number of interviews, while the 𝑦 axis represents the number of elements in our conceptual framework. In this figure, we see that the last 15 interviews (40% of them) increased the size of our conceptual framework by only 9%. Moreover, the last three interviews did not increase the size of the conceptual framework to any degree. This suggests more interviews would provide only a negligible gain for our framework. a) Conceptual framework growth 325 b) Taxonomy high-level view growth 9 300 Number of elements in the conceptual framework 8 7 Number of elements in the taxnomy 275 6 250 5 225 4 200 3 175 2 150 1 5 10 15 20 25 Number of interviews 30 35 Number of organizational structures Number of supplementary properties 0 5 10 15 20 25 Number of interviews 30 Figure 4.1: Evidence of theoretical saturation In addition to measuring the size of the conceptual framework, an intermediary artifact, we also measured the growth of the taxonomy itself. Figure 4.1-(b) shows that in the first five interviews we discovered our four organizational structures. It also shows that by 35 46 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES interview 22, we already had all but one of the supplementary properties. The last discovered supplementary property is an exceptional case, and it was applied only for one interview. Therefore, the decreasing growth of the taxonomy suggests that the last interviews contributed a lot less to shaping our theory. By conjoining these two observations of Figure 4.1, we claim to have reached enough of saturation for our purposes. 4.3 The taxonomy of organizational structures In this section, we answer our research questions RQ1, RQ1.1, and RQ1.2 by presenting our taxonomy of the organization of development and infrastructure teams, including the organizational structures we identified, alongside their core and supplementary properties. Core properties are expected to be found in corporations with a given structure. When applicable, we use core properties to discuss delivery performance. Supplementary properties refine the explanation of a structure, but their association with organizations is noncompulsory. For each interview, we classified the organizational structure observed. As the differentiation and integration patterns between development and infrastructure may vary for each deployable unit [Sha+19], it is not possible to assign a single structure to an organization. So the classification is applied according to the interviewee’s context. Moreover, we observed in some cases a process of gradually adopting new structural patterns while abdicating from old ones; we classified this as a transition from one structure to another. Figure 4.2 presents the high-level view of the first version of our taxonomy. We evolved this first version until a fourth version (Figure 4.3), which was published [Lei+21] (we clarify such an evolution in Section 5.3). This diagram encompasses discovered organizational structures, the primary elements of our taxonomy, alongside the supplementary properties, which qualify the elements pointed out by the arrows. The circles group supplementary properties that can be equally applied for a given element. Table 4.2 shows the classification (organizational structure and supplementary properties) applied for each interview, alongside the achieved delivery performance, and the number of employees in the corresponding organization. Our comprehensive chain of evidence (see Section 6.2) indicates how much of our findings are backed by the data we collected. The chain of evidence links each organizational structure and supplementary property to supporting coding, memos, and excerpts. Such linkage is critical for the credibility of qualitative research findings [Yin09; Ral19; Gub81]. Figure 4.4 features a word cloud built from the chain of evidence, thus providing an overview of the topics discussed during the interviews. We now present each one of the organizational structures and their core and supplementary properties. 47 4.3 | THE TAXONOMY OF ORGANIZATIONAL STRUCTURES Interview Organizational structure Supplementary properties Delivery performance Organization size I1 I2 I3 I4 Cross-functional Classical DevOps Cross-functional Platform team with dedicated infra professionals High High Not-high High [200, 1000] [200, 1000] < 200 > 1,000 I5 I6 I7 Not-high Not-high Not-high > 1,000 [200, 1000] [200, 1000] with a customized private platform Not-high > 1,000 I9 Siloed departments Classical DevOps Siloed departments to Classical DevOps Siloed departments to Platform team Platform team cloud façade with enabler team High [200, 1000] I10 I11 I12 Siloed departments Classical DevOps Platform team Not-high Not-high High < 200 [200, 1000] [200, 1000] I13 I14 Siloed departments Classical DevOps to Platform team Siloed departments to Classical DevOps Cross-functional to platform team Not-high Not-high > 1,000 [200, 1000] Not-high [200, 1000] Not-high > 1,000 with an in-house open source platform High Not-high Not-high High [200, 1000] > 1,000 < 200 > 1,000 with developers having infra background High < 200 with a platform with a customized private platform Not-high > 1,000 Not-high High < 200 [200, 1000] Not-high < 200 Not-high > 1,000 Not-high Not-high High Not-high < 200 [200, 1000] < 200 > 1,000 Not-high > 1,000 Not-high High Not-high Not-high Not-high Not-high < 200 > 1,000 < 200 < 200 > 1,000 > 1,000 I8 I15 I16 I17 I18 I19 I20 I21 I22 I23 I24 I25 I26 Classical DevOps Classical DevOps Siloed departments Siloed departments to Platform team Classical DevOps to Cross-functional Classical DevOps Siloed departments Siloed departments to cross-functional Cross-functional I27 I28 I29 I30 Siloed departments to Classical DevOps Cross-functional Cross-functional Classical DevOps Siloed departments I31 Classical DevOps I32 I33 I34 I35 I36 I37 Cross-funcional Platform team Classical DevOps Cross-functional Classical DevOps Siloed departments without infra background cloud façade with enabler team with enabler team with a customized private platform with enabler team cloud façade with dedicated infra professionals with a customized private platform with enabler team with enabler team with enabler team with dedicated infra professionals with developers having infra background with a platform cloud façade with dedicated infra professionals with dedicated infra professionals with enabler team with a platform with an in-house open source platform infra as development collaborator with enabler team without infra background cloud façade with dedicated infra professionals Table 4.2: Interview’s classification. In the second column, łtož indicates transitioning from one structure to another. 48 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES infra as development collaborator Siloed departments Classical DevOps with enabler team Cross-functional teams Platform team with infra expert(s) with full-stack engineer(s) with no infra experts cloud façade with a platform with a platform of its own Organizational structure supplementary property with an in-house open-source platform Figure 4.2: High-level view of the first version of our taxonomy: the discovered organizational structures and their supplementary properties 4.3.1 Siloed departments With siloed departments, developers and the infrastructure staff are segregated from each other, with little direct communication among them. The core problem of this structure, as vividly portrayed in the novel łThe Phoenix Projectž [KBS18] and witnessed by interviewee I19, are the frictions between silos since developers want to deliver as much as possible, whereas operations target stability, blocking deliveries. The DevOps movement was born in 2008 [Deb08] to handle such problems. We found seven organizations adhering to this structure, and six others transitioning out of this structure. Core properties While supplementary properties did not emerge for this structure, we found seven core properties for corporations with siloed departments. → Developers and operators have well-defined and differentiated roles; as stated by I20: łthe wall was very clear: after committing, our work [as developers] was done.ž Therefore, there are no conflicts concerning attributions. Well-defined roles and pipelines can decrease the need for inter-departmental direct collaboration (I10). → Each department is guided by its own interests, looking for local optimization rather than global optimization, a problematic pattern exposed by Goldratt and Cox over 30 years ago [GC14]. Participant I26 told us about conflicts involving many departments: łthere is a big war there... the security, governance, and audit groups must still be convinced that the tool [Docker / Kubernetes] is good. All the world uses it... but they do not understand... I get sick with this.ž 49 4.3 | THE TAXONOMY OF ORGANIZATIONAL STRUCTURES enabler team Classical DevOps Siloed departments Platform team Cross-functional teams dedicated infrastructure professionals infra as development collaborator developers with infra background no infra background with a platform cloud façade supplementary property(ies) supplementary property(ies) can qualify customized private platform in-house open-source platform Organizational structure can qualify structures qualified as supplementary property(ies) Figure 4.3: High-level view of the fourth version of our taxonomy, published in the IST journal application care cloud code communication configuration create database deploy developers deployment devs engineer infrastructure environment interact infra help guy interviewee devops knowledge kubernets manage monitoring nfr people ops platform problems production provides operations paas performance pipeline responsibility team security servers services sre load support system rancher takes tests things work Figure 4.4: Word cloud built from the chain of evidence of Phase 2 → Developers have minimal awareness of what happens in production (I26). So monitoring and handling incidents are mostly done by the infrastructure team (I5). → Developers often neglect non-functional requirements (NFRs), especially security (I5). In I30, conflicts between developers and the security group arise from disagreement on technical decisions. In other cases, developers have little contact with the security group (I26). → Limited DevOps initiatives, centered on adopting tools, do not improve communication and collaboration among teams (I30) or spread awareness about automated tests (I5, I15). In I30, a łDevOps teamž maintaining the deployment pipeline behaves as another silo, sometimes bottlenecking the delivery, thus fulfilling Humble’s forethought 50 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES about DevOps teams [Hum12]. Moreover, developers łinfiltratedž infrastructure teams to skip enterprise workflows. As I15 mentioned: łWhen this group was established for working with DevOps, the easy part was the outside guy [external consultant], who knew Azure and all the tools. This was not the problem, the problem was cultural, because all the hierarchies, powers, and necessities were maintained.ž Interviewee I30 claimed that łit’s a matter of silos of power... I have power, I’m important, I can deny you something... so you must have a network, be friend of people, friend of the [ruling] party... to the friends everything, to the enemies: the death.ž → Organizations are less likely to achieve high delivery performance as developers need bureaucratic approval to deploy applications and evolve the database schema (I5, I30). Table 4.3 shows that only two of 13 siloed organizations presented high delivery performance, and these two were already transitioning to other structures. This finding resonates with interviewee I5’s thought łWill developers have an agile mindset? If not, it is worthless.ž However, we observed cases in which low delivery performance was not a problem. In I13, applications are short-lived research experiments, not requiring frequent updates. In I10, regular releases of content (new phases of a game) usually do not require code changes since i) designers produce content with well-established support tools and ii) correction patches are hardly necessary due to comprehensive testing. Network isolation policies may also hinder frequent deployment (B1, I7). → We observed a lack of proper test automation in many siloed organizations (I5, I15, I23, I26). In I26, developers automate only unit tests. Organization I15 was leaving test automation only for QA people, which is not suitable for TDD or unit tests. Although siloed organizations are not the only ones that lack test automation (I3, I32, I35), in this structure developers can even ignore its value (I5, I37) and label a peer as łincompetentž because he is łtaking too much time with testsž (I23). We notice that some of the observed scenarios were more challenging for test automation, such as games. Key characteristics of siloed departments: limited collaboration among departments and barriers for continuous deployment. 4.3.2 Classical DevOps The classical DevOps structure focuses on collaboration between developers and the infrastructure team. This mindset does not imply the absence of conflicts among these groups, but łwhat matters is the quality of conflicts and how to deal with themž (I34). We named this structure łClassical DevOpsž because we understand that a collaborative culture is the core DevOps concern [LPB19; DD16], concurring to our DevOps definition: ła collaborative and multidisciplinary effort within an organization to automate continuous delivery of new software versions, while guaranteeing their correctness and reliabilityž [Lei+19]. We classified ten organizations into this structure. We also observed three organizations transitioning to this structure and three transitioning out of this structure. 51 4.3 | THE TAXONOMY OF ORGANIZATIONAL STRUCTURES Organizational structure Delivery performance Number of interviews Siloed departments Classical DevOps Classical DevOps Cross-functional Cross-functional Platform team Siloed departments to Classical DevOps Siloed departments to Cross-functional Siloed departments to Platform team Siloed departments to Platform team Classical DevOps to Cross-functional Classical DevOps to Platform team Cross-functional to Platform team Not-high High Not-high High Not-high High Not-high 7 3 7 1 6 4 3 High 1 High 1 Not-high 1 High 1 Not-high 1 Not-high 1 Table 4.3: Organizational structures and delivery performance observed in our interviews Core properties The nine core properties observed for organizations adopting classical DevOps are as follows: → We observed that, in classical DevOps settings, many practices foster a culture of collaboration. We saw the sharing of database management: infrastructure staff creates and fine tunes the database, whereas developers write queries and manage the database schema (I17). We heard about open communication between developers and the infrastructure team (I2, I6, I17, I22, I31, I36), even before the product deployment in some cases. Participant I6 mentioned that developers more concerned with architectural and NFR issues, the łguardians,ž have close contact with the infrastructure team. Participant I2 highlighted that: łDevelopment and infrastructure teams participate in the same chat; it even looks like everyone is part of the same team.ž Developers also support the product in its initial production (I31). In short, development and infrastructure teams are łpartner teams that are helping each otherž (I36). → Roles remain well-defined, and despite the collaboration on some activities, there are usually no conflicts over who is responsible for each task3 . 3 We later removed this core property in Phase 3 (see Section 5.3). 52 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES → Developers feel relieved when they can rely on the infrastructure team since łin the product team you don’t have time to worry about so many thingsž (I17). Participant I31 claimed that his previous job in a cross-functional team had a much more stressful environment than his current position in a development team in a classical DevOps environment. On the other hand, stress can persist at high levels for the infrastructure team (I34), especially łif the application is ill-designed and has low performancež (I36). In other words, łoperations people are the first ones to get f***edž (I36). → In this structure, the project’s success depends on the alignment of different departments, which is not trivial to achieve. In B3, different teams understood the organization’s goals and the consequences of not solving problems, like wrongly computing amounts in the order of millions of dollars. Moreover, I7 described that alignment emerges when employees focus on problem-solving rather than role attributions. → Development and infrastructure teams share NFR responsibilities (I17). For example, in I2, both were very concerned with low latency, a primary requirement for their application. → Usually, the infrastructure staff is the front line of tracking monitoring and incident handling (I2, I11, I29, I31, I36). However, if needed, developers are summoned and collaborate (I17, I34). In I34, monitoring alerts are directed to the infrastructure team but copied to developers. However, in some cases developers never work after-hours (I2). In I22, usually, only development leaders are called after-hours. → Some observed organizations rebranded their infrastructure teams as DevOps or SRE [Bey+16] teams (I2, I6, I14, I17). Although there is some debate about the difference between DevOps/SRE departments and traditional operations departments [Vel+14], in our observations, these DevOps/SRE teams are just infrastructure teams, but more inclined to adopt automation and to cooperate with developers when compared to infrastructure teams in the siloed structure. This need for embracing automation imposes some pressure on some infrastructure professionals to learn new skills, especially in large organizations (I36). Participant I29, a consultant, declared that łmany infrastructure professionals are lazy for embracing cloud computingž. → Humble expects a culture of collaboration between developers and the infrastructure staff to prescind from a łDevOps teamž [Hum12]. We understand this criticism applies to DevOps teams with dedicated members, like we saw in I30, since they behave as new silos. However, we found in I36 a well-running DevOps team working as a committee for strategic decisions Ð a forum for the leadership of different departments. We also found DevOps groups working as guilds (I4, I8), supporting knowledge exchange among different departments [Kni14]. → Collaboration and delivery automation, critical values of the DevOps movement, are not enough to achieve high delivery performance. Of 10 classical DevOps organizations not transitioning from or to other structures, only three presented high delivery performance (Table 4.3). One possible reason is the lack of proper test automation (I22, I36)[SB20], which is a hard goal to achieve since nearly all developers must master it. Another limitation for delivery performance is the adoption of release windows (I11, 53 4.3 | THE TAXONOMY OF ORGANIZATIONAL STRUCTURES I31, I14, I36), which seek to mitigate deployment risk by restricting software delivery to periodic time slots. Such strategy seeks to lessen the negative impact of any deployment problem. Release windows are adopted by considering either the massive number of users (I31) or the system’s financial criticality (I36). Release windows may also result from fragile architectures (I37) or the monolith architectural style (I11) since any deployment has an increased risk of affecting the whole system. Nonetheless, this is a controversial theme: while some developers dislike release windows because it blocks deliveries (I24), others understand it as necessary (I31, I36). Supplementary properties For classical DevOps organizations, we found infra as development collaborator as the only supplementary property: the infrastructure staff contributes to the application code to optimize the system’s performance, reliability, stability, and availability. Although this aptitude requires advanced coding skills from infrastructure professionals, it is a suitable strategy for maintaining large-scale systems, like the ones owned by I31. Key characteristic of classical DevOps: intense collaboration between developers and the infrastructure team. 4.3.3 Cross-functional teams In our context, a cross-functional team takes responsibility for both software development and infrastructure management. This structure aligns with the Amazon motto łYou built it, you run itž [Gra06] and with the łautonomous squadsž at Spotify [Kni14]. This gives more freedom to the team, along with a great deal of responsibility. As interviewee I1 described: łit’s like each team is a different mini-company, having the freedom to manage its own budget and infrastructure.ž That said, we found seven organizations with this structure, two organizations transitioning to this structure, and one transitioning out of it. Core properties The four core properties found for cross-functional teams are as follows: → Independence among teams may lead to misalignment. Lack of communication and standardization among cross-functional teams within a single organization may lead to duplicated efforts (I28). However, this is not always a problem (I1). In a scenario with too many products, organization I35 promotes alignment among the single crossfunction team and the customer needs by making developers knowledgeable about the business. → It is hard to ensure a team has all the necessary skills. For instance, we interviewed two cross-functional teams with no infrastructure expertise (I3, I32). Participant I27 recognizes that łthere is a lack of knowledgež on infrastructure, deployment automation, 54 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES and monitoring. A possible reason for such adversity is that, as I29 taught us, it is hard to hire infrastructure specialists and senior developers. → We expected cross-functional teams to provide too much idle time for specialists, as opposed to centralized pools of specialization. However, we find no evidence of idleness for specialists. From I16, we heard quite the opposite: the infrastructure specialists were too busy to be shared with other teams. Having the infrastructure specialists coding features in their spare time avoids such idleness (I35). → Most of the cross-functional teams we interviewed were in small organizations (Table 4.4), likely because there is no sense in creating multiple teams in too small organizations. Organizational structure Organization Number of size interviews Siloed departments Siloed departments Classical DevOps Classical DevOps Classical DevOps Cross-functional Cross-functional Platform team Platform team Siloed departments to Classical DevOps Siloed departments to Classical DevOps Siloed departments to Cross-functional Siloed departments to Platform team Classical DevOps to Cross-functional Classical DevOps to Platform team Cross-functional to Platform team < 200 > 1,000 < 200 [200, 1000] > 1,000 < 200 [200, 1000] [200, 1000] > 1,000 [200, 1000] 3 4 2 4 4 5 2 2 2 2 > 1,000 1 [200, 1000] 1 > 1,000 2 < 200 1 [200, 1000] 1 > 1,000 1 Table 4.4: Organizational structures and organization size observed in our interviews Supplementary properties Dedicated infra professionals. The team has specialized people dedicated to infrastructure tasks. In I1, one employee specializes in physical infrastructure, and another is 55 4.3 | THE TAXONOMY OF ORGANIZATIONAL STRUCTURES łthe DevOpsž, taking care of the deployment pipeline and monitoring. In this circumstance, the infrastructure specialists become the front-line for tackling incidents and monitoring (I28, I35). Developers with infra background. The team has developers knowledgeable in infrastructure management; these professionals are also called full-stack engineers or even DevOps engineers (I25). Participant I25 is a full-stack engineer and claimed to łknow all the involved technologies: front-end, back-end, and infrastructure; so I’m the person able to link all of them and to firefight when needed.ž Participant I29, a consultant, is skeptical regarding full-stack engineers and stated that łthese people are not up to the task.ž He complained that developers are usually unaware of how to fine tune the application, such as configuring database connections. Indeed, we heard of problems with database connections in a microservice context elsewhere (I27). No infra background. Product teams manage the infrastructure without the corresponding expertise. We saw this pattern in two places. One was a very small company and had just released their application, having only a few users (I32) and being uncertain about hiring specialized people soon. Interviewee I3 understands that operations work (e.g., spotting errors during firmware updates in IoT devices and starting Amazon VMs for new clients) is too menial for software engineers, taking too much of their expensive time. So the organization was planning the creation of an operations sector composed of a cheaper workforce (considering the complexity of IoT deployment requires dedicated staff). Interviewee I19 argued that such an arrangement could not sustain growth in his company in the past: łas we grew up, we saw we couldn’t do everything if we wanted our product to be improved quickly... we can’t do all the maintenance, monitoring, etc. So we really need an external team to manage that.ž Key characteristic of cross-functional teams: self-sufficient teams in charge for both development and infrastructure management. 4.3.4 Platform teams Platform teams are infrastructure teams that provide highly automated infrastructure services that can be self-serviced by developers for application deployment. The infrastructure team is no longer a łsupport teamž; it behaves like a product team, with the łplatformž as its product and developers as internal customers. In this setting, infrastructure specialists need coding skills; product teams have to operate their business services; and the platform handles much of the non-functional concerns. We found four organizations fully embracing this model and four others in the process of adopting it. We also observed the platform team pattern in three of the brainstorming sessions. Core properties The core properties of platform teams are as follows: → Product teams are fully accountable for the non-functional requirements 56 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES of their services. They become the first ones called when there is an incident, which is escalated to the infrastructure people only if the problem is related to an infrastructure service (I8, I9, I12, I33). This situation differs from the classical DevOps scenario, in which usually the infrastructure staff is the first to take care of any incident, summoning developers only if needed. → Although the product team becomes fully responsible for NFRs of its services, it is not a significant burden that developers try to refuse (I33). The platform itself handles many NFR concerns, such as load balancing, auto-scaling, throttling, and high-speed communications among data-centers (I4, I8, I16, I33). As participant I33 told us, łyou don’t need to worry about how things work, they just work.ž Moreover, we observed infrastructure people willingly supporting developers for the sake of services availability, performance, and security (I9, I14). → Product teams become decoupled from the members of the platform team. Usually, the communication among these teams happens when developers and infrastructure people gather to solve incidents (I8, I9); when infrastructure people provide consulting for developers to master non-functional concerns (I9); or when developers demand new capabilities from the platform (I8, I12). In this way, the decoupling between the platform and product teams does not imply the absence of collaboration between these groups. → The infrastructure team is no longer requested for operational tasks. The operational tasks are automated by the platform. Therefore, one cannot merely call platform-team members łoperators,ž since they also engineer the infrastructure solution. We remark that, in other industries, łoperatorž is a title attributed to menial workers. → The platform avoids the need for product teams to have infrastructure specialists, as it would be the case for cross-functional teams. Participant I33 expressed wanting to understand better what happens łunder the hoodž of the platform, which indicates how well the platform relieves the team from mastering infrastructure concerns. On the other hand, since developers are responsible for the deployment, they must have some basic knowledge about the infrastructure and the platform itself, differently from a siloed structure (łthrow over the wallž aptitude). → The platform may not be enough to deal with particular requirements, which happens when a given project is so different, regarding non-functional concerns, from other projects within the organization. Participant I16 stated that łif a lot of people do similar functionality, over time usually it gets integrated to the platform... but each team will have something very specialized...ž to explain the presence of infrastructure staff within the team, even with the usage of a platform, considering the massive number of virtual machines to be managed. → If the organization develops a new platform to deal with its specificities, it will require development skills from the infrastructure team. Nevertheless, even without developing a new platform, the infrastructure team must have a łdev mindsetž to produce scripts and use infrastructure-as-code [Mor16] to automate the delivery path (I14). One strategy we observed to meet this need was to hire previous developers for the 57 4.3 | THE TAXONOMY OF ORGANIZATIONAL STRUCTURES infrastructure team (I14). → All four organizations that have fully embraced the platform team structure are high performers, while no other structure provided such a level of success (Table 4.3). An explanation for such a relation is that this structure decouples the infrastructure and product teams, which prevents the infrastructure team from bottlenecking the delivery path. As stated by I20: łNow developers have autonomy for going from zero to production without having to wait for anyone.ž This structure also contributes to service reliability by letting product teams handle non-functional requirements and incidents. Therefore, we claim that having a platform team is a promising way to achieve high delivery performance. As stated by B5, łthe idea is to facilitate the life of development teams: they get these [monitoring] dashboards for free, without effort.ž → In Table 4.4, no organization with platform teams had less than 200 employees. Since assembling a platform team requires dedicated staff with specialized knowledge, it makes sense that such a structure is not suitable for small companies. Supplementary properties The description of a platform can be refined by applying one of the following supplementary properties: Cloud façade. The platform ultimately deploys applications on public clouds, such as Amazon WS, Google Cloud, or Microsoft Azure. Although these clouds allow easier deployment when compared to managing physical servers, they still offer dozens of services and a multitude of configurations. The in-house platform standardizes the usage of public cloud vendors within the organization, so developers do not need to understand many details about the cloud (I4, I14, I33); i.e., it łenhances the usability of the [cloud] infrastructurež (I16). We also observed a small company with a łplatform mindsetž but without the resources to build a platform of its own (I14). So the infrastructure team prepares Terraform4 templates encompassing good practices, so developers would need only to provide a few data fields for deployment. Customized private platform. The platform is built on top of internal physical servers (B1, I1, I8, I12, I20), hiding infrastructure complexities from developers, such as the use and even the existence of Kubernetes5 , an open-source platform used for managing the lifecycle of Docker containers. In-house open-source platform. The platform is an open-source software deployed on-premise. Organization I20 uses Rancher6 , a graphical interface for developers to interact with Kubernetes. 4 https://terraform.io 5 https://kubernetes.io 6 https://rancher.com 58 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES Key characteristic of platform teams: infrastructure team provides a platform with highly-automated infrastructure services to empower product teams. 4.3.5 Shared supplementary properties This section presents the found supplementary properties that are not linked to one organizational structure only. These properties are relevant since they are shared among multiple organizational structures, as depicted in Figure 4.3. Enabler team. An enabler team provides consulting and tools for product teams but does not own any service. Consulting can be on performance (I18) or security (I9, I16, I31), for example. Tools provided by enabler teams include the deployment pipeline (I4, I30), high-availability mechanisms (I11), monitoring tools (I12), and security tools (I17). We found them in every organizational structure. We learned the term łenabler teamž during our interview with I11. With a platform. The organization possesses a platform that can provide deployment automation, but do not follow the patterns of human interaction and collaboration described by the core properties of platform teams. Participant I25 developed an łautonomous IaaC for integration and deployment with Google Cloud,ž which provides platform capabilities to other developers of the team. However, since in this context there is a single cross-functional team, it cannot be called a łplatform team.ž We classified organization I30 as a siloed structure, even with a platform team, since developers and the platform team have a conflicted relationship. The supplementary properties of platform teams can also be applied to organizations with a platform. 4.3.6 Transitioning Organizations are not static. We identified nine of them transitioning from one structure to another. Considering the transition flows in Figure 4.5, we perceive that i) no organization is transitioning to siloed departments, ii) most of the transitions are from siloed departments, and iii) no organization is transitioning out of the platform team. These empirical observations agree with our theoretical considerations about the problems of siloed structures and the promises of platform teams. Nonetheless, transitioning organizational structures is a hard endeavor, as confirmed by some interviewees. Although his organization did an excellent job transitioning to a platform structure and achieving high-delivery performance, interviewee I20 claims that the łold worldž still coexists with the łnew onež. In the same way, as reported by Nybom et al. [NSP16], there are some responsibility conflicts and łdissident forcesž: some operations personnel do not like developers with administrative powers, while some developers do not want such powers. The interviewee I20 declared that łit’s not yet everybody together.ž Similarly, interviewee I21 stated that łThere are two worlds... one was born in the cloud, and it’s nice that it influences the legacy system to become more robust. There are many worlds we wish to bring together. However, we need to rewrite even the culture; we must reset everything.ž 59 4.4 | MEMBER CHECK Classical DevOps 3 1 1 Siloed departments Cross-functional teams 1 1 2 Platform team Organizational structure 1 n Organizational structure 2 n is the number of observed organizations transitioning from structure 1 to structure 2 Figure 4.5: Observed transition flows 4.3.7 Summary We close the description of our taxonomy by highlighting the key differences among its organizational structures. Table 4.5 summarizes, for each structure, (i) the differentiation between development and infrastructure groups regarding operations activities (deployment, infrastructure setup, and service operation in run-time); and (ii) how these groups interact (integration). Organizational structure Siloed departments Classical DevOps Cross-functional teams Platform teams Development differentiation Just builds the application package Participates/collaborates in some operations activities Responsible for all operations activities Responsible for all operations activities with the platform support Infrastructure differentiation Responsible for all operations activities Responsible for all operations activities Does not exist Integration Limited collaboration among the groups Intense collaboration among the groups Ð Provides the platform, automating much of the operations activities Interaction happens in specific situations, not on a daily basis Table 4.5: Summary of organizational structures ś operations responsibilities and interactions in each structure 4.4 Member check Grounded Theory aims to formulate a theory that has relevance for practitioners, so it is crucial to also investigate whether findings make sense to them [Ral19]. Moreover, practitioners can help to identify taxonomy errors, such as inclusion and exclusion errors [Ral19]. Therefore, we collected feedback on our taxonomy from the study participants, using an online survey (available in the supplementary material ś see Section 6.2). We sent to each one of the 37 interviewees the feedback form asking whether the 60 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES interviewee agreed with the chosen classification (organizational structure and supplementary properties) for its context using the following Likert scale [Jos+15]: strongly agree, weakly agree, I do not know, weakly disagree, strongly disagree. In case of disagreement, there were free text fields for explanation. We also asked the interviewees whether they perceived our taxonomy as comprehensive and whether they would add or remove any elements. Finally, we also left a free field for general comments. We report the answers to our open questions in Appendix D. We sent the form in four batches of twenty, five, five, and seven emails spread across the last five months of our interviewing period; we used the feedback incrementally to refine our taxonomy. We also attached to the emails a digest describing our taxonomy. It briefly introduced each organizational structure, each core property, and each supplementary property. We provide this digest as supplementary material. Figures 4.6, 4.7, 4.8, and 4.9 are the figures we used in the digest to convey the structures to the participants; we exhibited them here with the same captions used in the digest. #</> Figure 4.6: With siloed departments, operators and developers are each one in their own bubbles. They do not interact directly too much and communication flows slowly by bureaucratic means (ticket systems). #</> Figure 4.7: With classical DevOps, operators and developers in different departments seek to work together, even if not easy, by direct contact and close collaboration. We received 11 answers. Nine participants strongly agreed with the received classification regarding the organizational structure, while two of them weakly agreed with it. No one disagreed. Five participants strongly agreed with the received classification regarding the supplementary properties, while one of them weakly agreed with it. Regarding our model’s comprehensiveness, seven participants strongly agreed with it, three of them weakly agreed with it, and one of them did not know. This result suggests resonance of 61 4.5 | COMPARISON TO OTHER TAXONOMIES #</> #</> Figure 4.8: The platform team provides automated services to be used, with little effort, by developers. The platform team and developers are open to hear and support each other. #</> Figure 4.9: A cross-functional team contains both operators and developers. the participants with our theory, which refers to the degree to which findings make sense to participants. The free-text answers from participants were valuable in refining the taxonomy. We conceived the supplementary properties from the analysis of the first round of feedback. One interviewee’s comments helped us improve our taxonomy digest (we refined a figure to express better the idea of platform team). Moreover, some participants raised concerns about how different parts of the organization act under different patterns, and how this evolves. We considered such concerns since our classification is not for the whole organization, but for the interviewee’s context at a point in time. 4.5 Comparison to other taxonomies In this section, we discuss the existing literature [HM11; Kim+16; NSP16; MBK18; SP13; SP19; Sha+17] by comparing their classifications of inter-team relations to our taxonomy. In one of the foundational writings on DevOps [HM11], Humble and Molesky start by criticizing the siloed department structure and management by project. They then follow by advocating cross-functional teams and management by product. However, they also suggest practices for strengthening collaboration between development and operations, 62 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES which makes sense in the classical DevOps structure. Such practices include operators attending agile ceremonies and developers contributing to incident solving. Humble and Molesky also envision operation groups offering support services (e.g., continuous integration) and infrastructure as a service to product teams, which relates in our taxonomy to enabler teams and the platform team structure. In the The DevOps Handbook [Kim+16], its authors describe three primary types of organizational structures: functional-oriented, optimizing for expertise, division of labor, and cost; market-oriented, optimizing for responding quickly to customer needs; and matrixoriented, attempting to combine functional and market orientation. In the sequence, they campaign for companies embedding ops in service teams (cross-functional teams) or using automated self-service platforms (platform teams). The rationale is to avoid handoffs caused by the segregation of development and operations. However, they acknowledge the existence of admired companies retaining functional orientation of operations. In such cases, mitigations include high-trust culture, slack in the system, encouraging employees to be generalists, keeping team sizes small, and curtailing the scope of each team’s domain. In this way, they expect to reduce communication and coordination needs so that operations are not a constraint for product teams. Nybom et al. present three distinct approaches to DevOps adoption [NSP16]: (i) assigning development and operations responsibilities to all engineers; (ii) composing cross-functional teams of developers and operators; and (iii) creating a DevOps team to bridge development and operations. However, the article is about a case study matching the first approach only; developers undertook operational tasks, and collaboration was promoted between the development and operations departments. According to our taxonomy, such a scenario was an attempt to migrate from siloed departments to classical DevOps. However, despite some perceived benefits, new sources of friction emerged between the departments, and several employees disagreed with the adopted approach. We associate these sub-optimal results to the reported lack of automation investments, which suggests that trying any DevOps adoption without aiming for continuous delivery is not promising. The 2018 State of DevOps Report surveyed respondents about the organizational structures used in their DevOps journeys [MBK18], offering a closed set of alternatives: cross-functional teams responsible for specific services or applications, dedicated DevOps teams, centralized IT teams with multiple application development teams, site reliability engineering teams, and service teams providing DevOps capabilities (e.g., building test environments, monitoring). However, the text does not further describe such options. Thus, associating our structures to the options presented by the survey would be an error-prone activity. Skelton and Pais present nine łDevOps topologiesž and seven anti-patterns [SP13], as the most informal of our comparison sources ś a blog post. The presentation of each topology and anti-pattern is short, lacking details about how corporations apply them. We now present the correspondences between the DevOps topologies (T) / anti-patterns (AP) and our taxonomy. Dev and ops silos (AP) corresponds to our siloed departments structure. Dev don’t need ops (AP) corresponds to our cross-functional teams with no infra background. In some organizations adopting classical DevOps, we saw the rebranding of the infrastructure team to SRE or DevOps (I2, I6, I31), but this situation did not entirely match rebranded sysadmin (AP) since there were cultural changes in the 63 4.5 | COMPARISON TO OTHER TAXONOMIES observed cases. Ops embedded in dev team (AP)7 corresponds to our cross-functional teams with dedicated infra professionals, although we saw positive results with this configuration in I1. In a siloed organization (I30), we also observed the DevOps team silo (AP). Dev and ops collaboration (T) corresponds to our classical DevOps structure. Ops as infrastructure-as-a-service (platform) (T) corresponds to our platform teams. We consider SRE team (T) to match our classical DevOps structures with infra as development collaborator, although the topology description does not include this SRE activity of coding the application to improve its non-functional requirements [Bey+16]. The Team Topologies book [SP19], from the same authors of the DevOps topologies, presents four dynamic patterns of teams for software-producing corporations: streamaligned teams, delivering software in a business-aligned constant flow; complicated subsystem teams, with highly specialized people working on a complicated problem; enabler teams, providing consulting for stream-aligned teams in a specific technical or product domain; and platform teams, providing internal services for self-service by stream-aligned teams, abstracting infrastructure and increasing autonomy for stream-aligned teams. The stream-aligned team corresponds to what we call a product team or development team. The complicated sub-system team is not considered in our taxonomy since it is related to splitting work within development only. The enabler team proposed by Skelton and Pais is very close to what we also call an enabler team (e.g., interviewee I18 was in an enabler team providing consulting on performance for product teams); however, Skelton and Pais advocate that such consulting must be time-bounded, which is an aspect absent from our observed enabler teams. Finally, the platform team proposed by Skelton and Pais includes our notion of platform team; however, our concept is restricted to the services related to the execution environment of applications, i.e., while we considered teams providing pipeline services as enabler teams, Skelton and Pais would consider them as platform teams. Another significant difference between team topologies and our work is that the book seeks to present things how they should be, while we try to summarize thing how they are. In this sense, although we acknowledge the existence of the classical DevOps structure, it is not included in the team topologies, since the authors discourage the handover it causes. We also note that the terms łplatform teamž and łenabler teamž emerged from our interviewees, without the Teams Topologies book’s influence. Most of the discussed work so far [NSP16; HM11; MBK18; SP13] presents sets of organizational structures without an empirical elaboration of how such sets were conceived. The Team Topologies book suggests that the proposed topologies emerged from field observations; but even so, it lacks a scientific methodology. In this way, Shahin et al. [Sha+17] present a closer work to ours, with a set of structures based on field data and scientific guidelines. Shahin et al. [Sha+17] conducted semi-structured interviews in 19 organizations and surveyed 93 practitioners to empirically investigate how development and operation teams 7 It is interesting to note that while Ops embedded in dev team is an anti-pattern for Skelton and Pais [SP13], it is advocated by other authors [Kim+16; SB20]. Skelton and Pais’ rationale is that łthe value of Ops is diminished because it’s treated as an annoyance for Devs (as Ops is managed by a single Dev team manager with other priorities).ž 64 4 | A TAXONOMY FOR DESCRIBING ORGANIZATIONAL STRUCTURES are organized in the software industry toward adopting continuous delivery practices. They found four types of team structures: i) separate Dev and Ops teams with higher collaboration, ii) separate Dev and Ops teams with a facilitator(s) in the middle; iii) small Ops team with more responsibilities for Dev team, and iv) no visible Ops team. Structures i and iii map to classical DevOps in our taxonomy. Structure ii corresponds to the adoption of a DevOps team as a bridge between development and operations. One of our interviewees reported that such a pattern occurred in the past in his organization (I4) and we also observed the DevOps team as a committee bringing together development and operations leadership in another organization (I36); therefore, DevOps teams serving as bridges are likely no longer common. Finally, structure iv maps to cross-functional teams. Shahin et al. did not identify the platform teams structure, the most promising alternative we found in relation to delivery performance. Moreover, their work does not present the notion of transitioning between structures. Shahin et al. [Sha+17] also explored the size of the companies adopting each structure. They found that structure i is mainly adopted by large corporations, while structure iv was observed mainly in small ones. These findings are corroborated by our data in Table 4.4: classical DevOps was less observed in small organizations, while cross-functional teams were not prevalent in large organizations. In other paper, Shahin and Babar recommend adding operation specialists to the teams [SB20], which favors cross-functional teams with dedicated infra professionals. Lopez-Fernandez et al. also developed a taxonomy of DevOps Team Structures [Lop+21]. They employed Grounded Theory considering: industrial workshops8 , observations at organizations, and chiefly 31 semi-structured interviews in software-intensive companies. They analyzed six variables in the interviewed companies: shared ownership, leadership from management, organizational silo, cultural silo, collaboration frequency, and autonomy. Based in such analysis, they derived four patterns of DevOps Team Structures: Pattern A: Interdepartmental Dev & Ops collaboration, Pattern B: Interdepartmental Dev-Ops team, Pattern C: Boosted cross-functional DevOps team, and Pattern D: Full cross-functional DevOps team. Pattern A relates to our classical DevOps structure, while Pattern D corresponds to cross-functional teams. Pattern B is a matrix structure (employee reports to both a product and a functional manager), and Pattern C is a transitory pattern, in which DevOps experts support a team until it reaches Pattern D. These researchers [Lop+21] also found that horizontal teams usually support product teams that follow the above-described patterns. Pattern A and Pattern B are usually supported by platform teams (in the same sense of our platform teams). They observed cases in which the platform is provided by a DevOps chapter, gathering DevOps experts of various product teams. Also, Patterns C and D are supported by a DevOps Center of Excellence (which we classify as an enabler team). Moreover, they concluded that companies implementing Patterns C and D (that they considered more mature) achieve better software delivery performance (measured with lead time, mean time to recovery, and delivery frequency). However, they did not consider horizontal teams in their analysis of delivery performance, thus achieving a conclusion that contrasts with ours (we concluded that platform teams are a significant driver for high delivery performance). 8 https://www.youtube.com/watch?v=rDHv3dK_Am8 65 4.5 | COMPARISON TO OTHER TAXONOMIES Finally, we note that Lopez-Fernandez et al. developed their work simultaneously to the production of this doctoral research. They acknowledge that by 2018, little work had empirically analyzed team structures in companies adopting DevOps. They also acknowledge that the work of theirs, ours, and that of Shahin et al. [Sha+17] bring common elements and different insights, concluding that łit is important to take into account that the aforementioned works of research are contemporary and have been carried out in different parts of the world, so that a triangulation of studies could be later analyzed in a systematic study.ž 67 Chapter 5 A theory for explaining organizational structures In this chapter, we present the outputs of our research Phase 3. First, we explain our approach to the participant selection and the resulting sample (Section 5.1). Then, we explain our saturation criteria to stop selecting new participants (Section 5.2). Later, and most importantly, we present the results of the refinement process (Section 5.3) and the results of framing our theory under the 6C format (Section 5.4). We also present the result of our member check process (Section 5.5) and a discussion on the results (Section 5.6), which links our findings to our research questions. In particular, through the refinement process, we renamed the structures like this: siloed departments to segregated departments, classical DevOps to collaborating departments, platform teams to API-mediated departments, and cross-functional team to single department. Beginning in this chapter, we employ this evolved terminology. 5.1 Sample To understand łwhy different organizations adopt different structuresž (RQ1), it is crucial to analyze organizations adopting different structures. Therefore, we selected companies already visited by us in Phase 2 to make sure that we would get a good coverage of all the different structures. Since company size is expected to be a relevant factor regarding our research question (as discussed in Section 4.5), we also aimed to select organizations of different sizes. Then, to accomplish our selection goal, we: · Considered transitional situations as distinctive structures (e.g., collaborating departments is one structure, while transitioning from collaborating to APImediated departments is another one). · Grouped the visited organizations by structure and size (small, medium, large). 68 5 | A THEORY FOR EXPLAINING ORGANIZATIONAL STRUCTURES · Discarded the groups (structure and size) with only one member (less relevant groups). · Aimed to visit one company from each remaining group. Such a selection strategy left us with the goal of revisiting 11 organizations within the following groups: large collaborating departments, medium collaborating departments, small collaborating departments, medium single departments, small single departments, large API-mediated departments, medium API-mediated departments, large segregated departments, small segregated departments, medium segregated departments transitioning to collaborating departments, and large segregated departments transitioning to API-mediated departments. Considering our need for increasing generalizability, we also visited new organizations. Since it was not possible to know in advance what a company’s structure would be, we selected them taking into account only their sizes. We did not preestablish a target on the number of new organizations to be visited ś interviews continued until we reached saturation (see Section 5.2). As a form of triangulation, we also sought to interview a developer and an infrastructure professional from each organization, whenever it was applicable and possible. Within Phase 3, one can see our sample as following a purposive strategy, in which selection follows some logic or strategy [BR20; Pat14], possibly occurring before analysis. This deviates from the GT prescription of theoretical sample, in which selection criteria are driven by data analysis [GS99]. However, considering our research process as a whole, our selection process for Phase 3 fits theoretical sample since it is dependent on the concepts and findings emerged in Phase 2. Nonetheless, we note that having access to IT professionals willing to expose organizations’ internal affairs cannot be guaranteed in advance. Therefore, although the above strategy guided our selection, we could not strictly stick to it. In this way, Table 5.1 presents the 31 carried interviews in Phase 3, which extend the previous 37 interviews to the total of 68 interviews analyzed in our research. For each interview/interviewee, we also assigned an identifier (e.g., I38) to reference in this text. We conducted these interviews from May 2020 to October 2021, and they took from 20 to 63 minutes (median of 35 minutes). The interviewees worked in the following business domains: education, healthcare, logistics, telecommunications, public administration, development support, hiring, marketplace, travel, manufacturing, finances, mobility, games, defense, networking, semiconductors, IoT, and cloud computing. One interviewed company was a tech giant, while three were unicorns. Although we did not plan to balance the structures among new companies, in the end, our sample was reasonably balanced. From the 17 new companies, four presented the collaborating departments structure, six showed the single department structure, and seven had the API-mediated structure. For this count, we considered a company transitioning from structure X to Y as in Y. In particular, all the interviewed companies with segregated departments were already transitioning to some other structure. Figure 5.1 shows how we interleaved data collection (interviews) with data analysis 69 5.2 | SATURATION Revisit Organizational structure Number of employees in the organization Reference codes and roles of interviewees Interviewee location No No Yes Single depart. Segregated to collaborating depart. Segregated to API-mediated depart. > 1000 > 1000 > 1000 USA Brazil Brazil Yes Collaborating depart. [200, 1000] No No Yes No Yes API-mediated depart. Single depart. API-mediated depart. Single depart. API-mediated depart. [200, 1000] < 200 > 1000 < 200 [200, 1000] No Yes No Collaborating depart. Segregated to collaborating depart. Collaborating depart. [200, 1000] [200, 1000] > 1000 No Yes No No Yes No No No API-mediated depart. Segregated to API-mediated depart. API-mediated depart. Single depart. Single depart. Collaborating to API-mediated depart. Collaborating depart. API-mediated depart. [200, 1000] > 1000 > 1000 > 1000 [200, 1000] < 200 < 200 [200, 1000] No No No Single to API-mediated depart. Single depart. Collaborating to single depart. < 200 < 200 [200, 1000] No Yes Segregated to API-mediated depart. Collaborating depart. > 1000 > 1000 I38) Developer I39) Developer I40) Developer I41) Infrastructure manager I42) Infrastructure manager I43) Infrastructure engineer I44) Development manager I45) Developer I46) Development manager I47) Development manager I48) Infrastructure manager I49) Development manager I50) Developer I51) Infrastructure engineer I52) Infrastructure manager I54) Development manager I53) Infrastructure manager I55) Infrastructure manager I56) Consultant I57) Infrastructure engineer I58) Infrastructure manager I59) Infrastructure manager I60) Developer I61) Infrastructure manager I62) Infrastructure manager I63) Development manager I64) CTO I65) Developer I67) Infrastructure engineer I66) Architecture manager I68) Development manager USA Brazil Brazil Brazil Brazil Spain Brazil Brazil Brazil Brazil Brazil Brazil Brazil Brazil Brazil Brazil Brazil USA USA Brazil Brazil Brazil Table 5.1: Description of participants and organizations (6C and resonance analysis), as advocated by Grounded Theory. 5.2 Saturation At each analysis snapshot (an interview analysis or a review session), we tracked a few metrics to identify theoretical saturation [GS99]. For the 6C analysis, we defined the following metrics: number of codes, number of strong codes, and conceptual density. The number of codes indicates the total łamount of learningž we had in each interview. Although we can always learn something new from new people, we expect diminishing returns in this metric as we approach theoretical saturation. Strong codes are supported by at least three interviews, excluding characterization codes. We also expected this metric to initially grow with new interviews and then stabilize when reaching saturation. Each code has a support number, that is, the number of sources supporting that code. The conceptual density is the sum of support numbers divided by the total number of codes. The idea is that a high density indicates that codes are supported by multiple interviews, pointing to robust results. The expectation was that the value of this metric should only grow. 70 5 | A THEORY FOR EXPLAINING ORGANIZATIONAL STRUCTURES Interviews 6C and resonance analysis 6C analysis reviews Resonance analysis reviews 2020-05 2020-07 2020-09 2020-11 2021-01 2021-03 2021-05 2021-07 2021-09 2021-11 Time Figure 5.1: Interleaving of data collection and analysis in Phase 3 As observable in Figure 5.2, along with the interviews, the metrics followed the expected trends, indicating enough theoretical saturation. In detail, we note that the decreases in the number of codes (L1) are related to the review sessions, in which we deleted codes we judged to be inadequate, besides merging other ones, forming more abstract codes. For the resonance analysis, we defined two metrics: support level and taxonomy changes. The support level is the difference between the number of support codes and the number of confusion codes. A high support level indicates a good resonance of the taxonomy with participants. This metric should ideally only grow. Taxonomy changes is the number of changes in the high-level view of our taxonomy: addition, renaming, and removal of elements. We derived these changes from observed confusions in the interviews or even neutral comments pointing to potential improvements. We expected an initial increase in the number of changes (after all, updating the taxonomy based on practitioners’ views was in our process), followed by stabilization, indicating that the previous modifications subsequently caused fewer confusions among the interviewees. As observable in Figure 5.3, the metrics again followed the expected trends, indicating enough theoretical saturation. We clarify that the metrics used here were intuitively conceived by us, given the lack of metrics to detect theoretical saturation in Grounded Theory studies [HNM11; vv13; WNA15]. 5.3 Results on refining the structures After the 37 semi-structured interviews of Phase 2, following GT guidelines, we concluded the elaboration of what we considered our first taxonomy version. Figure 4.2 illustrates it. After that, we gathered feedback from participants through online surveys and started the interviews of Phase 3. To ask feedback, we shared with the participants a taxonomy digest, containing Figure 4.2. Based on this referred feedback and on the first two interviews of Phase 3, we elaborated more on our taxonomy until its fourth version (Figure 4.3), which figured in our journal publication [Lei+21]. After that, while interviewing more 31 participants, we conducted our resonance analysis process, in which we coded key points as support or confusion fragments. Key 71 5.3 | RESULTS ON REFINING THE STRUCTURES a) Number of codes L1) All codes - should stabilize L2) Strong codes - should grow limited by L1 250 Number of codes 200 150 100 50 0 5 10 15 20 25 30 35 30 35 Number of analysis snapshots b) Conceptual density 2.2 Should grow forever Global density of sources per concepts 2.0 1.8 1.6 1.4 1.2 1.0 5 10 15 20 25 Number of analysis snapshots Figure 5.2: Metrics of theoretical saturation for the 6C analysis points are interview excerpts that we considered of theoretical interest for the coding activities. Figure 5.4 features a word cloud built from the key points, thus providing some view of the discussed topics during the interviews. When comparing this word cloud to the word cloud produced for Phase 2 (Figure 4.4), we note that some main themes persist (e.g., development, infrastructure, team, platform, and people), while some disappear or decrease (e.g., DevOps, monitoring, problems, and production), and others emerge (e.g., think and company). Interestingly, we can relate the łDevOpsž disappearance to the usage of our taxonomy, whose well-grounded concepts diminish the need to talk in terms of łDevOps.ž The themes of łmonitoring/problems/productionž decreased since we had specific questions about them in Phase 2. Finally, questions of Phase 3 were more abstract than questions of Phase 2 (e.g., łHow did your company arrive at this structure?ž), so participants expressed themselves much more in terms of łI thinkž when talking about their companies as a whole. 72 Cumulative sum of the (support - confusion) diff of each interview 5 | A THEORY FOR EXPLAINING ORGANIZATIONAL STRUCTURES a) Support level (in interviews) 120 Should grow forever 100 80 60 40 20 0 5 30 10 15 20 Number of interviews 25 30 25 30 b) Taxonomy changes Should stabilize Cumulative sum of changes 25 20 15 10 5 0 5 10 15 20 Number of interviews Figure 5.3: Metrics of theoretical saturation for the resonance analysis already api application area build care change cloud company create departments development end everything infra infrastructure lot management collaborating dev deploy devops different going maybe operation people person guy model platform help needs problem production project really responsible services something sre standards started talk team things think today tools work Figure 5.4: Word cloud built from the key points of Phase 3 73 5.3 | RESULTS ON REFINING THE STRUCTURES For each excerpt coded as confusion, we defined an action to handle the situation or justified our choice of not taking any action. In total, we recorded 35 actions, 26 of them classified as change the taxonomy, five as improve interview presentation, and four as improve report. The łchange the taxonomyž actions affected the high-level elements of our taxonomy (organizational structures and supplementary properties) with additions, removals, and renamings. We considered łinterview presentation improvementsž in how we explained the taxonomy to the subsequent interviewees. We incorporated łreport improvementsž in descriptions presented in our online digest of organizational structures1 . Table 5.2 discloses all the 35 taken actions. We provide the list of supports and confusions as supplementary material (see Section 6.2). One example of a fragment (I44) coded as confusion that led to a taxonomy change: łI think it’s an in-house open-source platform, because although we built it on top of cloud services, AWS in particular, our ecosystem is mostly open-source, based on Kubernetes and its ecosystem.ž Before this comment, we considered that open-source platforms were installed and ran in physical infrastructure only. Then we noted the following memo [GS99] during analysis: łGood point. . . maybe we have to expand the scope of the in-house platform and the customized platform even when built in the cloud, when this use of the cloud is merely the use of virtual machines; the company is still building/installing/managing something on its own.ž Therefore, to address this confusion, we took the action of renaming the supplementary property łin-house open-source platformž to łin-house-administered open-source platform.ž Adding the word ładministeredž suggests that what matters is the company administering the open-source platform regardless of whether it is installed in a physical server or in a virtual machine provided by a cloud vendor. A notable change in the taxonomy was renaming łPlatform teamž to łAPI-mediated departments.ž We had confusions in four interviews (I40, I42, I50, I52) due to the ambiguous meanings of the terms łplatformž and łplatform team.ž Moreover, the current name reflects the structure better, since the platform team is just one of its interplaying teams. We also explicitly adopted the term łdev & infra departmentsž to rename the structures. This aligns better with the fact that the structures reflect the division of operational activities between development and infrastructure groups. Finally, one more example of how we evolved our taxonomy. After a discussion with I52 about the terms infrastructure and operations, we reflected that the łno infra backgroundž situation could happen because in some single departments the operations work is much bigger than the infrastructure work (łlightweight infra effortž). Thus, after revising I3 and considering it to match collaborating departments, we dropped the 1 http://ime.usp.br/ leofl/devops/2021-06-20/structures-digest.html 74 5 | A THEORY FOR EXPLAINING ORGANIZATIONAL STRUCTURES After interview 39 Type Action Change the taxonomy 39 Change the taxonomy 39 39 Change the taxonomy Change the taxonomy 43 43 43 44 44 44 Change the taxonomy Change the taxonomy Change the taxonomy Change the taxonomy Change the taxonomy Change the taxonomy 44 Change the taxonomy 44 Change the taxonomy 44 44 44 Change the taxonomy Change the taxonomy Change the taxonomy 46 Improve interview presentation 47 47 Change the taxonomy Change the taxonomy 47 Change the taxonomy 47 Change the taxonomy 48 Improve interview presentation 50 Change the taxonomy 50 Improve report 50 Improve report 51 Improve interview presentation 52 52 54 54 54 Change the taxonomy Change the taxonomy Change the taxonomy Change the taxonomy Improve interview presentation 56 56 56 Change the taxonomy Improve interview presentation Improve report 57 Improve report 62 Change the taxonomy łWith infra expertsž renamed to łdedicated infrastructure professionalsž łWith full-stack engineersž renamed to łdevelopers with infra backgroundž łWith no infra expertsž renamed to łno infra backgroundž łWith a platform of its ownž renamed to łcustomized private platformž łClassical DevOpsž renamed to łCollaborating departmentsž łCross-functional teamsž renamed to łNo infra departmentž łInfra people occasionally embedded in dev teamsž added łNo infra departmentž renamed to łUnified departmentsž łPlatform teamž renamed to łAPI-mediated departmentsž łInfra people occasionally embedded in dev teamsž renamed to łInfra people occasionally embedded in product-centered dev teamsž łDevelopers with infra backgroundž renamed to łdevelopers with infra background and attributionsž łNo infra backgroundž renamed to łwith infra attributions, but no backgroundž łCloud façadež renamed to łcloud façade with specialized APIž łCustomized private platformž renamed to łcustom platformž łIn-house open-source platformž renamed to łin-house-administered open-source platformž When explaining collaborating departments, provide as example łops take part in agile meetingsž and project visible to ops (beyond the ticket) łSiloed departmentsž renamed to łsiloed dev & infra departmentsž łCollaborating departmentsž renamed to łCollaborating dev & infra departmentsž łAPI-mediated departmentsž renamed to łAPI-mediated dev & infra departmentsž łUnified departmentsž renamed to łUnified dev & infra departmentsž When explaining "collaborating departments", explain "infra people embedded in dev teams" too (to avoid confusion with single department) łUnified dev & infra departmentsž renamed to łSingle dev/infra departmentž Reinforce in the API-mediated departments: there is an infra group responsible for the running infrastructure Reinforce in the API-mediated departments: devs operate and deploy services in production Highlight the difference between łinfra people occasionally embedded in dev teamsž and łunified departmentsž łWith infra attributions, but no backgroundž removed łLightweight infra effortž added łDeployment pipeline providerž added łConsulting teamž added Emphasize about łsingle departmentž: there isn’t a central infra group łCoordination committeež added Reinforce: diagram boxes are unordered Reinforce: while there is some correlation, cloud usage is not necessary in single departments. A relevant difference between collaborating departments and single department is the hierarchical structure (in single depart same boss to devs and infra) łSiloed dev & infra departmentsž renamed to łSegregated dev & infra departmentsž Table 5.2: Summary of the actions took during our resonance analysis 75 5.3 | RESULTS ON REFINING THE STRUCTURES łno infra backgroundž concept and created the łlightweight infra effortž supplementary property. Figure 5.5 presents the consolidated version of our taxonomy, as evolved from the refinements. The figure shows the taxonomy’s high-level elements: its structures and their associated supplementary properties. We provide all the versions of the high-level view of our taxonomy as supplementary material (see Section 6.2), while we disclose the versioning history in Table 5.3. consulting team deployment pipeline provider coordination committee enabler team Collaborating dev & infra departments Segregated dev & infra departments API-mediated dev & infra departments infra people as development collaborators Infra people occasionally embedded in product-centered dev teams cloud façade with specialized API custom platform in-house-administered open-source platform with a platform supplementary property(ies) can qualify Organizational structure supplementary property(ies) Single dev/infra department dedicated infrastructure professionals developers with infra background and attributions lightweight infra effort can qualify structures qualified as supplementary property(ies) Figure 5.5: High-level view of the 12𝑡ℎ version of our taxonomy, the last one produced by our refinement process Version v1 v2 v3 v4 v5 v6 v6.1 v7 v8 v9 v10 v11 v12 Date (yyyy-mm-dd) 2020-04-30 2020-05-24 2020-05-29 2020-08-30 2021-02-04 2021-03-08 2021-03-08 2021-03-20 2021-05-04 2021-05-16 2021-05-17 2021-05-26 2021-11-09 Last analyzed interview I37 I39 I39 I39 I43 I44 I44 I47 I51 I54 I53 I56 I68 Observation Submitted to the IST journal English review, published in the IST journal Just visual reordering We analyzed I54 before I53 Submitted to the TSE journal Table 5.3: Taxonomy versioning history After the resonance analysis process, we also checked the consistency of the taxonomy’s core properties with our new results. Thus, we decided to drop the property łno 76 5 | A THEORY FOR EXPLAINING ORGANIZATIONAL STRUCTURES conflicts over who is responsible for each taskž of collaborating departments since we found conflicting evidence regarding this concern. We then updated our taxonomy digest accordingly. 5.4 Results on explaining the structures Now we present, in Tables 5.4, 5.5, 5.6, and 5.7, the 46 discovered strong codes grouped by organizational structure. Each strong code is preceded by its identifier (e.g., SC02) and the amount of supporting interviews. These strong codes, alongside the refined taxonomy, comprise our grounded theory. No other taxonomy available in the literature, built to explain the organization of development and infrastructure professionals, provide such a level of theoretical analysis given the explanatory dimension added to our taxonomy by the herein reported strong codes. SC01 (5) SC02 (4) SC03 (3) Consequences Devs lack autonomy and depend on ops Low delivery performance (queues and delays) Friction and blaming games between devs and infra Table 5.4: Strong codes for segregated dev & infra departments SC04 (5) SC05 (3) SC06 (4) SC07 (3) SC08 (3) SC09 (6) SC10 (5) SC11 (4) SC12 (3) SC13 (3) SC14 (3) Conditions Enough infra people to align with dev teams Top management support Causes In a non-large company / with few products, it is easier to be collaborative Trying to avoid the delivery bottleneck Bottom-up initiative with later top-management support Consequences Growing interaction inter-areas (e.g., knowledge sharing) Precarious collaboration (ops overloaded) Discomfort/frustration/friction/inefficiency with blurred responsibilities (people don’t know what to do or what to expect from others) Waiting (hand-offs), infra still a bottleneck Automation supports collaboration Contingencies Giving more autonomy to devs (in staging or even production) Table 5.5: Strong codes for collaborating dev & infra departments During the coding process, we linked a few codes to supplementary properties of our taxonomy. The strong codes having such attribution are SC15 (associated with łdedicated infrastructure professionalsž) and SC22 (associated with łdevelopers with infra background and attributionsž). We also report, in Table 5.8, the total number of codes (not only strong codes) found per code class (6C label vs. organizational structure). One example of a code that is not 77 5.5 | MEMBER CHECK SC15 (3) SC16 (10) SC17 (6) SC18 (3) SC19 (4) SC20 (3) SC21 (9) SC22 (3) Conditions Enough ops for each dev team Causes Startup scenario (small, young, weak infra scalability requirements, business focus, use of cloud services to limit costs) Cloud services decrease the need of infra & ops staff Delivery velocity, agility, critical project Avoidance reasons Not suitable for applying corporate governance & standards More costs: duplication of infra work among teams, high salaries for infra professionals, underused infra professionals Consequences No [infra] defaults across teams: freedom, but possibly leading to duplication of efforts and high maintenance costs Contingencies Improve infra skills in-house, inclusive with tech talks Table 5.6: Strong codes for single dev & infra departments a strong code, an avoidance reason for single departments found in I55 and I58, is łspecialized knowledge brings scale gains.ž We list all the codes in the supplementary material (see Section 6.2). In the ł6C analysis sheetž, each code is linked to its supporting interviews. In Appendix C, we also provide examples of supporting fragments from the interviews to some strong codes. 5.4.1 Covariance analysis Covariance, part of the 6C analysis, means the occurrence of one code correlates with the occurrence of another code [HNM11; Gla78]. Covariance analysis reveals codes commonly supported by multiple interviews, providing more insight into theory building. We define a strong covariance group as a group of at least three codes related to a set of at least three sources. For example, codes A, B, and C are in the same strong covariance group when all of them are supported by interviews 1, 2, and 3. Following this definition, we found: 17 strong groups with 3 codes linked to a 3 source-set; 1 strong group with 4 codes linked to a 3 source-set; 1 strong group with 5 codes linked to a 3 source-set; and 2 strong groups with 3 codes linked to a 4 source-set. Table 5.9 describes the last four just-listed strong covariance groups, which are the strongest ones since they have more codes or more sources than the first 17 groups. 5.5 Member check Grounded Theory aims to formulate relevant theories for practitioners, so it is crucial to investigate whether findings make sense to them [Ral19]. However, it is opportune to highlight that the goal of our member check is to assess only the theory resonance [Ral19] 78 5 | A THEORY FOR EXPLAINING ORGANIZATIONAL STRUCTURES SC23 (8) SC24 (5) SC25 (4) SC26 (3) SC27 (8) SC28 (4) SC29 (4) SC30 (4) SC31 (4) SC32 (3) SC33 (8) SC34 (7) SC35 (4) SC36 (4) SC37 (4) SC38 (4) SC39 (3) SC40 (3) SC41 (3) SC42 (3) SC43 (3) SC44 (3) SC45 (3) SC46 (3) Conditions Medium to large sized company Top-down initiatives/sponsorship Upfront investment Requires coding skills from infra people Causes Delivery bottleneck in infra management Compatible with existing rigid structures (low impact on organogram) / Only a few people needed to form a platform team Fosters continuous delivery A hero or visionary (hero culture) Emerged as best solution; other initiatives not so fruitful Multiple products / multiple dev teams / multiple clients (requires high delivery performance) Consequences Interaction (devs x platform team) to: support devs, make things work, and demand new capabilities from the platform The platform provides common mechanisms (e.g., scaling, billing, observability, monitoring) Promotes continuous delivery, agility, and faster changes Devs responsible for infra architecture / concerns (e.g., NFR) Platform team provides consulting and documentation to devs Adding devs do not require adding [proportionally] more infra people Eliminated previous bottleneck Small platform team (excellence center) High costs when using public clouds Devs skills are too focused on corporate needs, lacking base infra knowledge (bad for devs themselves, not for the company) The cost of managing the platform (even using open-source software) is high Risk: platform is magic to devs; neglect quality because they trust too much in the platform, any problem they blame the platform and do not know what to do, even for simple problems or when the problem is in the application itself Devs possibly unable to understand the infra or to contribute to the platform Contingencies Decide how much devs must be exposed to the infra internals (some places more, some places less) Table 5.7: Strong codes for API-mediated dev & infra departments with participants and not to validate the theory itself. Participants are not obliged to verify whether the abstractions risen from diverse data are conceptually adequate [Gla02]. Therefore, readers should consider member check together with other quality treatments (Chapter 6). We performed a member check by collecting feedback on our results from the participants using online surveys, which we provide as supplementary material (see Section 6.2). For each structure, we prepared one form listing its corresponding strong codes. For each strong code, the respondent had to tick one option within the following Likert 79 ed Si ng le ed ia t AP I-m bo ra Co lla Characteristics Conditions Causes Avoidance reasons Consequences Contingencies Se gr eg at ed tin g 5.5 | MEMBER CHECK 5 0 5 1 7 1 4 4 9 1 16 9 6 6 25 3 32 13 2 3 8 7 13 18 Table 5.8: Amount of codes found per code class Group reference G1 G2 G3 G4 Strong Supporting codes interviews SC27, SC33, SC34, SC37 I57, I59, I62 SC10, SC24, SC27, SC30, SC31 I40, I41, I48 SC27, SC33, SC34 I48, I57, I59, I62 SC10, SC24, SC27 I40, I41, I48, I49 Table 5.9: Strong covariance groups scale [Jos+15]: łtruež, łusually truež, łno correlation / I don’t knowž, łusually falsež, łfalsež. We also left a field for general comments. We report the answers to this open question in Appendix D. Because opining on all strong codes would take too long, we asked each participant to answer only one form as a strategy to increase the response rate. Nonetheless, they were free to answer all the forms if they so wished. We sent the feedback requests in three rounds: (i) to Phase 2 interviewees, (ii) to Phase 3 interviewees, and, after some time, (iii) to the ones who did not reply to us and to the 7 participants of the initial brainstorming sessions. We received responses from 39 of these 75 participants. We received 8 responses for the segregated departments form, 12 for the collaborating departments form, 12 for the API-mediated departments form, and 15 for the single departments form. From the 564 manifested opinions on strong codes, 365 were favorable (65% of the participants considered them to be true or usually true), while only 83 (15%) were unfavorable (usually false or false). In particular, every strong code received favorable feedback. This result suggests a good resonance of the participants with our theory. According to a respondent’s comment, disagreements related to single departments may relate to possible interpretations depending on single departments having infrastructure specialists. Indeed, in the forms, we did not associate SC15 and SC22 to their respective supplementary properties (see Section 5.4), which possibly jeopardized respondents’ reasoning. This issue was fixed for the second round of feedback requests. 80 5 | A THEORY FOR EXPLAINING ORGANIZATIONAL STRUCTURES 5.6 Discussion This section discusses the relationship between our findings and our research questions RQ2 and RQ2.1, besides drawing some implications of these results. RQ2 is about why different organizations adopt different structures for development and infrastructure professionals. Conditions and causes in the 6C analysis point in this direction. For example, a startup, still struggling to validate its value proposition, is not in a moment to be so cautious about infrastructure requirements. Therefore, such a startup scenario (SC16) usually leads to the adoption of single departments, with developers taking care of infrastructure concerns. After scalability and other infrastructure concerns gain relevance for the company, and the company increases its portfolio with multiple products to multiple clients (SC32), API-mediated departments is seen as a path to overcome existing delivery bottlenecks (SC27), and this promise seems to be fulfilled (SC39). Collaborating departments requires certain parity in the ratio of development to infrastructure people (SC15) to increase its success possibility. Therefore, having a low number of infrastructure professionals and a hierarchy culture (SC28), hampering direct contact between departments on a daily basis, are forces pushing to API-mediated departments. RQ2.1 inquires about the drawbacks and mitigation measures for each structure. Avoidance reasons, consequences, and contingencies in the 6C analysis provide us answers. Although planned to increase direct cooperation (SC09), collaborating departments may present side effects since responsibilities become blurred (SC11). Some interviewees expressed concerns about governance and technological standardization. We found that multiple single departments in mid-sized or large companies can be an obstacle to such standardization (SC19). If this is a concern2 , the company may prefer to adopt API-mediated departments. A peculiar disadvantage of API-mediated departments is that programmers are less likely to be aware of the infrastructure (SC42), which may not be a disadvantage for the company, but possibly for their careers. In this context, we witnessed discussions about to which degree to expose infrastructure details to developers (SC46) and strategies to communicate how to use the platform, such as personalized consulting and mass communication (SC37). These discussions also emerged from situations with programmers overly relying on the platform, ignoring the bare minimum of infra management they should master (SC44). In this way, the association of concepts of our taxonomy to 6C codes provides explanations about the structures’ phenomenon. Such a new explanatory dimension enables scholars to understand structures more deeply and better equip practitioners to discuss them and make decisions. We discuss more concrete implications of strong codes to practitioners in Appendix C. There, we further discuss five strong codes (SC04, SC28, SC19, SC11, SC46) ś one condition, one cause, one avoidance reason, one consequence, and one contingency. This additional discussion unveils some rich insights behind strong codes, such as: bosses fearing losing 2 We interviewed one very large company (I38) adopting single departments that were not concerned with standardization: fostering an inner łfree marketž of solutions was an innovation strategy. 81 5.6 | DISCUSSION their positions as an inhibitor of radical changes in structures (SC28), low participation of infrastructure professionals in agile ceremonies as an indication of failure in adopting collaborating departments (SC04), and onboarding time being a reason for the managers’ concern with corporate standards for infrastructure (SC19). Unfortunately, the codes of different 6C labels were not evenly distributed across the structures of our taxonomy. In particular, we found more strong codes for API-mediated departments, and we had only three contingency strong codes. We identified many more contingencies (38 in total), but most of them were supported by only one interview. This may point to a lack of structure awareness by the community, so each company tries to handle the problems in different ways. It could also reflect the peculiarities of the organizations, but evaluating the raw data, that does not seem to be the case. For example, łPlayground area so that devs can learn infraž (I50) appears to be a contingency that could be applied to many more organizations. Another interpretation points to the analysis strategy: we considered a contingency as ła solution to one problem,ž which may split a common solution to different problems into different codes. The largest class of strong codes (6C label and structure) we found was consequences for API-mediated departments (32 consequences). This suggests that this structure may have more predictable outcomes than the others. Also, from the eight codes within the strong covariance groups, seven are related to API-mediated departments. This also puts API-mediated departments as a more understandable phenomenon. Interestingly, the presence of a disadvantage of collaborating departments (SC10) within strong covariance groups (G2, G4) shows a motivation for adopting API-mediated departments. The structure for which we found more codes suggesting failure scenarios was collaborating departments (SC10, SC11, SC12). We suppose it may be easier for large organizations with segregated structures trying to move first to collaborating departments. However, having a limited number of infrastructure professionals and not giving them enough budget to interact with developers are recurring factors leading to overload (SC10). Such a situation makes professionals forget the DevOps initiative and revert to the previous siloed style of work. Giving more autonomy to devs (SC14) is an attempt to handle this scenario. Moreover, we found more examples of collaborating departments in which the infrastructure remained as a bottleneck in the delivery path (SC12). This reinforces our previous finding that there is no correlation between collaborating departments and delivery performance (Section 4.3). Finally, an additional benefit of our theory, provided by its building process, is offering a taxonomy with objective terms. This concern, for example, led us to replace łsilož (a metaphor) with łsegregatedž in our refinement process. Such objectiveness is valuable considering the amount of energy and time practitioners take discussing again and again what DevOps is3 [Lei+19]. 3 See, for example, the łChef Style DevOps Kungfuž talk. 83 Chapter 6 Quality criteria and limitations According to Ralph, good taxonomies should increase cognitive efficiency and assist reasoning by facilitating more inferences [Ral19]. A path to evaluate taxonomies is to conduct case studies [Yin09]. However, although case studies can test theories [Eis89], they are more helpful in demonstrating how a current theory is incomplete or inadequate to explain observed cases [Pin86; And83]. A single case study does not prove a social theory. Moreover, even after decades of robust tests confirming theories, new work can still expand them [Sir+11]. On the other hand, Grounded Theory (GT) focuses on generating theories rather than validating preconceived hypotheses. Although researchers can be tempted to try to validate their theory as soon as it is created, Glaser and Strauss caution that verificational approaches hinder theory development too early [GS99]. Though it is inadequate to evaluate our theory as simply valid or not, we can evaluate our process of generating the theory [GS99; Ral19]. This can be done by checking adherence to GT prescriptions (i.e., theoretical sampling, open coding, theoretical coding, theoretical sensitivity, and theoretical saturation), which we address in the chapters containing our research design and results. Ralph still cautions that researchers should be careful when selecting evaluation criteria to assess a theory development. Since multiple criteria exist and there is no universally accepted set of criteria, researchers must choose what make sense for the emerging theory [Ral19]. For our research, we chose the quality criteria of Guba for naturalistic inquires [Gub81]. Although the naturalistic paradigm contrasts with the rationalist one [Gub81], in which classical GT is based, the use of Guba’s criteria for a social and abstract phenomenon is suitable. In this way, these criteria are widely employed by software engineering studies adopting GT as methodology [Wat14; Jov+17; SB20; Lop+21]. In the following section, we present such criteria and how we meet them. In particular, we devote a whole section about generalizability, one of these criteria, since it requires a more in-depth discussion. Finally, we also present the limitations of this work, considering especially Ralph’s recommendations for taxonomy generation [Ral19]. 84 6 | QUALITY CRITERIA AND LIMITATIONS 6.1 Quality criteria The quality criteria we pursued are the ones defined by Guba [Gub81]: credibility (how plausible or true the findings are); dependability (methodology applied consistently); confirmability (opportunities for correcting research bias); and transferability (generalizability). For meeting such criteria, we applied the following treatments [Wat14]: · Providing a chain of evidence (available in the supplementary material ś see Section 6.2), which contributes to credibility and dependability. · Collecting interviewees’ opinions on the results, i.e., member check (Sections 4.4 and 5.5), which contributes to credibility and confirmability. · Having a selection of participants with varying roles, experience levels, and genders, working in companies with varying sizes, locations, and domains (Sections 4.1 and 5.1). In particular, in Phase 3, we triangulated interviews with development and infrastructure staff within some organizations. These procedures contribute to transferability. · Triangulating among researchers through a review process (Sections 3.7 and 3.11) and methodology revision by a colleague experienced in qualitative methods [Mel15], which contribute to confirmability. · Providing quantified evidence of saturation (Sections 4.2 and 5.2), which contributes to dependability (this is an additional quality measure, not standard in other works). · For Phase 3, reporting only codes confirmed by multiple participants (strong codes), which contributes to credibility and transferability. · In Phase 3, we also conducted a process for refining our taxonomy based on our interactions with participants (Sections 3.9 and 5.3). This process improved confirmability (we evolved the taxonomy) and transferability (we applied our taxonomy to scenarios that did not feed its initial versions). Table 6.1 offers another view on the trace between quality criteria and their treatments, so the reader can more quickly check the treatments we adopted for each criterion. In this way, one can see we applied at least two treatments for each criterion. The table also indicates the section of this thesis tackling the referred treatment. 6.2 Supplementary material The supplementary material to this thesis, available online1 , provides the chain of evidence supporting the findings here reported. In this way, readers can fully judge how much data back our theory. We provide the following files as supplementary material for Phase 2: 1 http://ime.usp.br/~leofl/devops/assets/files/mst.tar.gz. 85 Member check Diverse sample Researchers triangulation Evidence of saturation Reporting stronger evidences only Refinement process in Phase 3 X ra b ab ns fe X Tr a X Co nfi rm De p en da Cr ed Chain of evidence ili t y ili t y bi lit y ib ili t Treatment y 6.2 | SUPPLEMENTARY MATERIAL X X X X X X Section Supplementary material 4.4 and 5.5 4.1 and 5.1 3.7 and 3.11 X 4.2 and 5.2 3.10 X 3.9 and 5.3 Table 6.1: Our treatments for the adopted quality criteria · Chain of evidence (PDF), linking our theory’s primary elements (the structures and the supplementary properties) to codes, memos, and transcript excerpts that originated them. · Conceptual framework history (PDF), which are all the versions of the diagram representing our conceptual framework. · Feedback survey (PDF), with the questions sent online to the study participants. · Structures digest (PDF), elaborated to support participants in giving us feedback2 . We provide the following files as supplementary material for Phase 3: · Key points (PDF), which are the transcription excerpts used in the 6C and resonance analysis. · Resonance analysis sheet (XLS), providing the fragments coded as support or confusion. · 6C analysis sheet (XLS), with the applied theoretical coding. · Taxonomy versions (PDF), which are all the versions of the diagram with the highlevel view of the taxonomy. · Feedback survey (PDF), with the questions sent online to the study participants. For Phase 2, the łchain of evidencež document directly links high-level concepts to supporting interview fragments. For Phase 3, one must find the interviews linked to highlevel concepts (theoretical codes) in the ł6C analysis sheetž, and then search for support in the corresponding interviews in the łkey pointsž document. 2 An updated version is available on http://ime.usp.br/ leofl/devops/2021-06-20/structures-digest.html. 86 6 | QUALITY CRITERIA AND LIMITATIONS 6.3 Generalizability Although we cannot claim generalizability with statistical confidence, the employed methods and the taken sample provide some relative generalizability to our theory (at least more than case studies [Yin09] usually provide). We took a diverse sample. Considering semi-structured interviews in the first and second research phases, we interviewed 20 companies with more than 1,000 employees, 17 with between 200 and 1,000 employees, and 17 with less than 200 employees. We interviewed people in 8 countries. The company domains also varied wildly. In Phase 3, we applied our taxonomy in conversations with professionals working in companies that did not provide data to the classification construction in Phase 2. In the context of our resonance analysis, among the interviews in new companies, we had 99 codes of support and 25 codes of confusion (four times more support than confusion), which contributes to showing the generalizability of our theory. In addition, confusion codes started to rarefy at the last interviews since we used confusions to improve the theory. In the 6C analysis, we found 15 characteristics (of 17 characteristics codes) that define the organizational structures in 15 new companies (88% of the new interviewed companies), which also contributes to show that our theory applies to these new contexts. We also were cautious about the diversity of the interviewees’ roles. Only five (13%) of the interviewees had an infrastructure role in Phase 2. In Phase 3, we were able to improve this situation. From the 31 interviewees in the second phase, 14 of them (nearly half) had an infrastructure role. Since, for Phase 3, we looked for people with more in-house experience, so they could answer our łwhy questions,ž we ended up also interviewing a larger fraction of managers (30% of managers in Phase 2 vs. 61% in Phase 3). The 6C analysis also provided more evidence for some findings of the first phase. In particular, API-mediated departments still seems to be a promising path to achieve high delivery performance in comparison with the other structures. We heard of bottlenecks in the delivery path, especially in the segregated and the collaborating departments structures, while some interviewees claimed that the API-mediated structure removed the bottleneck previously existing. Another reinforced findings are that single department is more associated with small organizations, while API-mediated departments is not. In summary, the points strengthening our theory’s generalizability are: (i) diversity of professional and company profiles in our sample; (ii) applying our taxonomy to scenarios that did not feed its initial versions; (iii) gathering evidence of support for the theory among new companies; and (iv) the discovery of more evidence corroborating preliminary findings. 87 6.4 | LIMITATIONS AND THREATS TO VALIDITY 6.4 Limitations and threats to validity Despite our best efforts to meet the exposed quality criteria, every work has threats to validity. We now discuss them. The reader must take into account the typical limitations of taxonomy theories. The most important limitation is that they rarely make probabilistic predictions in terms of dependent and independent variables, as variance theories, common in Physics, do [Ral19]. Thus, it is not appropriate to discuss, for a grounded theory, the number of interviewees in terms of statistical sampling. As usual to grounded theories, some factors (such as interviewees anonymity and unavoidable subjectivity in analysis) make the research not fully replicable. In particular, anonymity goes along with ethical research [Str19]. It is also a crucial trade-off with the potential number of interviewees: many participants might not accept an invitation to participate in a non-anonymous interview. Moreover, anonymity copes with social desirability bias [Dd14]. Still, violating anonymity does not provide reproducibility: interviewing the same person again does not necessarily yield the same results3 . There is another subtle disadvantage in employing GT, which is a drawback of embracing empirical methodologies. Other approaches, such as the one advocated by Doty and Glick to build typologies4 , claim to free researchers from empirical world limitations. These authors state that łbecause typologies are based on ideal types of organizations, they may allow researchers to identify types of organizations that are more effective than any organizations currently observedž [DG94]. This statement implies that, while seeking to guide practitioners regarding organizational structures, a grounded theory will miss optimal structures if they do not exist yet in the real world. Although we relied on previous work [FHK18; For+20] to adopt the delivery performance construct, we needed to adapt the original thresholds due to the reasons exposed in Section 2.2. We also did not differentiate low from medium performers, as we judged that such differentiation would not help distinguish how the structures contribute to delivery performance, partly because low and medium performers are much more similar among themselves than when compared to high performers [For+17]. Therefore, by changing some decisions related to delivery performance, other researchers could reach different conclusions based on the same data. We handled this concern mainly by stating our definitions regarding this topic. Nonetheless, as already stated, GT does not guarantee that two researchers working in parallel with the same data would achieve identical results [GS99]. Still, relying on self-reported metrics may be subject to some bias; nonetheless, collecting such metrics from system data in many organizations would be extremely difficult. In an ideal process, different researchers would analyze the interviews independently, avoiding some possible agreement bias favored by review discussions (one could even calculate interrater agreement scores [Ban+99]). However, the cost for independent analysis would be too onerous (analyzing one interview takes hours). Regarding the review process, 3 łOne cannot step into the same river twicež [Vla55]. 4 Typologies identify multiple ideal types with no rules to classify instances; each ideal type represents a unique combination of attributes that determine relevant outcomes [DG94]. 88 6 | QUALITY CRITERIA AND LIMITATIONS instead of relying on the transcripts produced by a single researcher, all researchers could have listened to the original records. Yet, such an approach also would be too costly in terms of time commitment. Alternatively, two research collaborators took part in a few initial interviews to standardize the transcription procedures and assess how the doctoral candidate conducted these interviews. Beyond this, the researchers who take part in the analysis read some transcription excerpts only. Whenever needed during reviews, we searched for these relevant excerpts to support our discussions. Our research data corresponds to people’s views and opinions, which may drift from objective reality. Therefore, an observational research approach would be desirable [Ral19]. Rother, for example, argued about how an observational approach was crucial for his research since Toyota people had difficulty in articulating and explaining their unique thinking and routines [Rot09]. However, our research questions are too abstract to grasp only by observation, even meeting observations, without further conversations with the observed people. Our context thus differs from other software engineering situations, such as observing a pair-programming session. Therefore, observational research with the same goal as ours would be much more expensive, if at all feasible, especially involving as many organizations as we did. Nonetheless, anonymity reduces such a łdrift from objective realityž by favoring an open attitude from the participants. We were also careful so as not to ask the research questions directly to participants, which would force our preconceptions onto them [Ral19]. We carefully crafted second-level questions [Yin09], which are more objective than the research questions and, therefore, reduce the gap from report to reality. We are aware that large companies usually present groups at different maturity levels, and that such groups could be classified, in Phase 2, differently if we had chosen different interviewees. To verify this, we interviewed two persons from the same company (I16 and I18) working in different teams. We noted that, indeed, the organizational patterns were not identical. This effect also happens when transitioning from one structure to another, since transitioning can be a long process and take different paces at different organization segments. Therefore, the reader must note that our descriptions characterize our respondents’ contexts, not the organizations in their totality. Moreover, as already stated, in Phase 3 we had more cases of two interviews for the same company. In Phase 3, responses were dependent on how we presented the taxonomy, which interviewees could misunderstand. A mitigation for this issue was analyzing how to improve the taxonomy presentation for the subsequent sessions. 89 Chapter 7 Conclusion Our research provides a theory on how software-producing companies organize their development and infrastructure workforce according to different organizational structures. Answering RQ1 (What are the organizational structures adopted by software-producing organizations to structure operations activities among development and infrastructure groups?), such structures are: 1. Segregated departments, with seven core properties; 2. Collaborating departments, with eight core properties and two supplementary properties; 3. Single department, with four core properties and three supplementary properties; 4. API-mediated departments, with nine core properties and three supplementary properties. Supplementary properties reveal relevant variations represented in our taxonomy, as, for example, that single departments may or may not encompass staff dedicated to infrastructure. Beyond the eight supplementary properties directly related to one structure each, we also found two other supplementary properties applicable to more than one structure. And for one of them (enabler team), we identified three subtypes. In this way, our taxonomy presents a total of 13 supplementary properties. The core properties, describing each organizational structure, plus the supplementary properties answer RQ1.1 (What are the properties of each of these organizational structures?). Our research also answers RQ1.2 (Are some organizational structures more conducive to continuous delivery than others?) by finding evidence that API-mediated departments are more suitable for achieving continuous delivery given its relationship with delivery performance. An explanation fitting our theoretical analysis is that API-mediated departments provide a better balance between specialization (division of labor) and inter-team coordination (integration): workers are more specialized than it is the case for single departments, but integration is more fluid than for segregated and collaborating departments. Also, the API-mediated approach reduces the costs of forming autonomous teams by not demanding an infrastructure expert in each product team. 90 7 | CONCLUSION Still about RQ1.2, we also observed that segregated departments are more common in organizations with less-than-high performance. Additionally, there was no apparent relation between delivery performance and the other structures (collaborating departments and single department). Nonetheless, we critically state that reaching high delivery performance is not a need for every software-producing organization, as adopting APImediated departments is not adequate for every organization. In particular, a promising topic for future research is investigating whether the organization domain influences the need of high delivery performance. We, then, found why different organizations adopt (or do not adopt) different structures and the conditions leading to this choice. Such findings answer RQ2 (Why do different software organizations adopt different organizational structures regarding development and infrastructure groups?). For example, a cause for API-mediated departments is trying to address delivery bottlenecks; an avoidance reason for single departments is its unsuitability in enforcing corporate standards; and a condition for collaborating departments is having a certain proportion of infra people per development team. To answer RQ2.1 (How do organizations handle the drawbacks of each organizational structure?), we identified the drawbacks of each structure and the ways organizations deal with such disadvantages. For example, a consequence of collaborating departments is possibly leading to conflicts due to blurred responsibilities; tuning the platform abstraction level is a contingency to prevent developers from over-relying on the platform as magical. A notable result is that we found many contingencies, but only a few shared among different organizations, which can be a consequence of the lack of awareness of organizational structure patterns in the software industry. We hope our work can contribute to spreading such awareness. 7.1 Implications Understanding the world is the primary goal of science [Knu74]. Many fields in physics, biology, and sociology, possibly more than in computer sciences, are dedicated to understanding world phenomena. Discovering regularities in the world and providing better vocabulary to describe such regularities lay the basis for both advancing science itself, through new research, and changing the world based on a more scientific comprehension of it. In this way, we hope our research has contributed to somehow evolving our views on the software production phenomenon. Such comprehension by academics is vital, in the first place, to support the teaching of software engineering to the rising number of computing students. In particular, a new vocabulary has the power to change practitioners’ goals, expectations, and actions, besides basing discussions and arguments (consider the łtechnical debtž concept [Cun92], to take only one example). Therefore, our work has implications for practice. Software companies could realize that there are several kinds of organizational structures they could adopt to excel in continuous delivery and plan which organizational structure they are interested in moving to, maximizing their chances to succeed in the transition. Further, we clarified the roles that the participants have to play in each organizational structure. This evidence could help 91 7.2 | FUTURE WORK practitioners cooperate with less friction toward organizational transformation. Moreover, by increasing the awareness of organizational structures in the community, practitioners can better discuss the current situation of their corporations, besides making more informed decisions on structural changes and drawback handling. Having an up-to-date view of what łother companies are doingž is always a relevant input for practitioners’ decision-making. An example is that practitioners can relate observed problems in their organizations to expected consequences under our theory. Such explicit associations can avoid hours of unfruitful discussions, possibly assuming the problem to be łsomething that only happens here.ž Other example of applicability is that our taxonomy supports understanding the state of an unknown organization, which can help, for example, engineers in job interviews to evaluate the suitability of working for a given company. This work also has implications for scholars and research. The elements of our taxonomy, provide a common vocabulary to support the formulation of new research questions. For example, researchers can investigate the impact of each taxonomy property on other perspectives (e.g., software architecture, security, database management). Another valuable endeavor would be to investigate the relation between our taxonomy’s elements and the internal organization of development and operation groups, especially platform teams (as part of API-mediated departments). Also, professors can update their understanding of the software production phenomenon based on concepts and relations grounded on the current behavior of the software industry. Thus, professors and IT instructors can update their software engineering classes accordingly. A secondary and methodological contribution of our work for developing new grounded theories is providing an objective approach to detect theoretical saturation, which is rarely seen in the literature. In addition, we observed that test automation is still not adequately practiced in many software companies, as also noted by Olsson et al. [OAB12], and that the lack of tests is a limiting factor for achieving high delivery performance. This suggests research opportunities for proposing automated test generation techniques, especially in environments in which tests are intrinsically difficult, such as games or IoT. Moreover, we noticed participants practicing DevOps while maintaining a monolithic application, which contrasts with the literature that strongly associates DevOps with microservices [BHJ16; Ebe+16]. This suggests researchers should further investigate the differences in applying DevOps to monoliths and microservices-based systems. Similarly, since we also observed some participants maintaining a monolith core with peripheral microservices and achieving high delivery performance with the microservices, researchers could propose novel techniques and tools that could (semi-) automatically extract peripheral services from monolith applications. One more example of research pursuit is envisioning techniques to avoid release windows and, thus, increase delivery performance. 7.2 Future work Grounded theories can always be adapted according to the discovery of new instances of the phenomenon. Therefore, further research on the topic is welcome, especially considering that, usually, software engineering theories (as social theories) cannot be proven true. In particular, observational studies would be desirable to strengthen (or dispute) our 92 7 | CONCLUSION theory. Given the existence of other taxonomies in the DevOps context, promising future work is conciliating them in a unified model. Such unification may also demand methodological advances: e.g., how to merge taxonomies and validate such an integration? We also believe many more insights and discussions can be derived from our strong codes, be it in academic or practitioners forums. In particular, each strong code could be submitted to validation studies or, at least, be a starting point to new investigations. Finally, the organizational structure agenda applied to software engineering is vast. For example, it is still controversial how to share responsibility on security across a groups of experts, specialists embedded in product teams, and non-specialist developers [Man+19]. Therefore, software engineering research may still provide more light to practitioners on distributing responsibilities linked to specific software attributes (e.g., security, quality, performance, user experience). Alternatively, if it is not possible to clarify the best option for each concern, at least new research could unveil each structural option’s benefits, drawbacks, and contingencies. 7.3 Final words The workforce dedicated to software production has grown over the world. Nevertheless, the demands of clients have heightened too: new features must be shipped quicker and quicker. Furthermore, new features must support more users while dealing with more robust non-functional requirements (for example, society and governments are now demanding more security and data protection from software products than ever before). In this scenario, it is not uncommon for companies to try to address such demands by simply pressuring more on their employees or expecting a single employee to master a vast set of skills. Correspondingly, it is also not uncommon to experience slow or unavailable software in our daily lives. Solving these issues is not just a matter of demanding more of individual employees. As told a long ago by Adam Smith, a single worker could barely produce 20 pins per day, while just ten employees, when wisely organized, could produce thousands of pins per day in a manufacture [Smi14]. To tackle the contemporary challenges of software production, we expect that advances brought by software engineering research, ours included, can promote more rational ways of organizing the software workforce. In particular, we hope that such progress benefits companies, which will produce more software, workers, which will have better work conditions, and consumers, which will enjoy better software. 93 Appendix A Interview protocol for Phase 2 The purpose of this protocol is to guide the interviewer in the preparation, conduction and analysis of semi-structured interviews in the context of our research (organizational structures for infrastructure management in the context of continuous delivery) following academic guidelines, including Grounded Theory. We also hope that this protocol can support other researchers in conducting semistructured interviews for software engineering research. A.1 Purpose of the interviews By using Grounded Theory, start the development of a theory addressing the following research questions: · RQ1 Which organizational patterns are organizations currently adopting? · RQ2 Are there organizational patterns delivering better results than others? · RQ3 Which forces drive organizations to take different organizational patterns? · RQ4 Which are the advantages, challenges, and enablers for each organizational pattern? The questions were designed to address mainly RQ1 and RQ2, and to start to deal with RQ3 and RQ4. A.2 Inputs for this protocol · Original research proposal (research questions above) · Appendix łResearch Protocol for constructing a Conceptual Framework and Mapping Regional Software Startup Ecosystemsž of łA Conceptual Framework for Software Startup Ecosystems: the case of Israelž (a technical report of our research group) 94 APPENDIX A · łProtocol to be used in the interviews at startupsž (a document of our research group) · Article łThe Grounded Theory of Agile Transitionsž (ICSE, 2017) · Interview tips of Ijnet, a website for journalists · Tips from Daniel Cukier, a former PhD student of our research group who conducted interviews within the startup environment · Our experience with the brainstorm sessions with specialists · The chapter łConducting semi-structured interviewsž of the book łHandbook of Practical Program Evaluationž (Adams, 2010). · Our own experience with the interviews conducted under this protocol (we evolved this protocol with more tips based on this experience). A.3 Method Use of semi-structured interviews. According to Adams, łConducted conversationally with one respondent at a time, the semi-structured interviews (SSI) employs a blend of closed - and open - ended questions, often accompanied by follow - up why or how questions. The dialogue can meander around the topics on the agenda Ð rather than adhering slavishly to verbatim questions as in a standardized survey Ð and may delve into totally unforeseen issues.ž A.4 Target population People who have (in the present or recent past) involvement with teams within software developer organizations who use continuous delivery of software or who are going through the process of adopting continuous delivery. A.5 Guidelines and tips Before the interview: · Diversified selection. Organization: size, type, location. Interviewee: gender, position (from developer to marketing). · Test audio recording before the first interview. · For online interviews, check the audio recording before each interview. · Choose a recorder that is as discreet as possible. At this point smartphones are suitable, since people are used to cell phones on the table. 95 A.5 | GUIDELINES AND TIPS · Avoid scheduling interviews in noisy places. · When possible, prefer face-to-face interviewing to online interviewing. · Avoid, if possible, asynchronous text-based interviews. · Prepare a printed version of the questions of this protocol to assist the interviewer during the interview. · If you make notes on the same board for different interviewees, use different colors. · When inviting people, provide a link with a dynamic listing of the interviewers’ available days and times. Try to offer as much as time slots as possible. · Do not send too many invitations at once. You may fill all your slots and, thus, not have time to analyze between interviews. · Send a LinkedIn connection invitation to the interviewee. It is an opportunity for the interviewee to know better who is interviewing her. During the interview: · Always be polite. · Try to be pleasant. A quick unrelated conversation right before the interview can help. Example: łHow long have you lived in the city?ž Or łWhy did you move to São Paulo?ž. Easier to do this when the interview is in person. · Listen. Avoid talking unnecessarily. · While the interviewee speaks, do not display strong emotions such as enthusiastic agreement, disagreement or surprise. · Avoid giving opinion during the interview. · Do not debate (try to contradict) the respondent’s answers. · You can demonstrate knowledge to the interviewee, but humbly, without putting yourself as more expert than the interviewee. · At times, repeat what the interviewee said to show interest and understanding in the message. · Respect the silence, let the interviewee reflect as much as necessary. · On the other hand, prepare extra questions to keep the interviewee talking. Or improvise. Extra questions can also lead to unexpected revelations. · Be open to explore other unforeseen topics. New questions more interesting than those already established may arise. · Do not drive the interviewee to say what we want to hear. On the contrary, if possible try to make him speak what we do not want to hear. · If the interviewee dodges the question, after a while try to return to the question with another approach. But do not insist too much. Especially in the first interviews, the avoidance may be a sign that the question is not very good. 96 APPENDIX A · Do not follow the script mechanically. The order of the questions in the protocol don’t need to be followed. · Questions can be tailored to the interviewee’s profile. · Make hooks based on what the respondent commented. · Do not be afraid to ask naive questions. · Ask for clarification when needed. But avoid saying łwhat do you mean. . . ?ž As it seems that you are scolding the interviewee for not communicating properly. · If the interview is online: if feasible, video chat; otherwise, at least try to greet the interviewee (and say goodbye) by video; and explain to the respondent that the video will be turned off for connectivity reasons. · It may be impolite to ask the interviewee to turn on the video; The interviewer should just turn on his own video, which suggests to the interviewee to turn on her video too. If in this case the interviewee does not turn on the video, that’s fine. · Avoid using the term łDevOpsž (broad and ill-defined in the community). But especially in explaining the motivation of the interview it can be difficult to escape from this. · Avoid very specific terms related to the organizational patterns we already know of (e.g., SRE). · Focus on the interviewee’s latest experiences on her team. Do not ask for an explanation about the organization as a whole. Consider projects only from the recent past. · Estimated length of interview: 1 hour. · To calibrate the time, you may want to łtest the scriptž before the first interview or conduct the first interview with someone you already know, who will be more tolerant of any endurance. · Try to minimize note-taking to focus on the interviewee. Write down points during the conversation that lead to the next questions. Choose a standardized place or a different sheet for this, so you do not forget to ask these questions. · For online interviews, a good software for audio recording is OBS. When starting the interview, pay attention to the audio capture bars (mic and desktop audio), so you are sure that audio is being recorded. After each interview: · Do the interview analysis as soon as possible. Advantages: 1) the interview is more łfreshž in memory and 2) we have a more agile (iterative) approach, since 10 analyzed interviews are worth more than 40 interviews without analysis. · Check the audio. If the recording did not work, try to do the analysis on the same day or as early as possible. 97 A.6 | INTERVIEW SCRIPT A.6 Interview script Before the interview: · Collect respondent data. Do not spend interview time on this. Search for data, for example, in Linkedin. ś Name ś Linkedin ś E-mail ś Gender ś Graduation course ś Higher degree (no graduated, graduated, master, PhD) ś Graduation year ś Role ś Years in the company ś Years in the role ś Company ś Company founding year ś Number of employees in the company ś Number of IT employees in the company · Research about the interviewee before the interview. This search goes beyond profile data. It helps to create łintimacyž with the interviewee. · On the interview eve, remind the interviewee about the interview. · If the interview is in person: arrive early (about 15 min); if possible try to know the environment of the company. Starting the interview: · Mention group researchers. · Explain the purpose of the research. · Mention expected benefits for the community (software producing organizations). · Mention that the interview can also benefit the interviewee by helping her to reflect on her work environment. · Explain the protocol. · Explain why the recording and its confidentiality. · Explain that the publications will treat companies and respondents anonymously. 98 APPENDIX A · Explain that any results will be sent to the respondent firsthand. · Mention that our group will be open for future collaborations. · Ask permission to start recording. · Start recording by saying "OK, it’s recording now." · Start with an easy and open question ("icebreaker"). Helps the interviewee become more comfortable. During the interview: · Record the audio. · Record with the cellphone. But take the portable recorder in case of any problem with the phone. · Take only a few notes (on the computer) but always remember to keep eye contact with the interviewee. · If another researcher is present, the second researcher may take further notes. Main questions: · Please, tell me about your company, your role within your company, and the project in which are currently working. ś Rationale: Icebreaker question · Who is responsible for deploying the solution in production? ś Rationale: Directly linked to RQ1 ś Rationale: Starting with łrelevant but still non threatening questionsž (Adams, 2010). · In a new project, who builds the new environment? ś Rationale: Directly linked to RQ1 · And about the Cloud? PaaS / serverless? What do you think? ś Rationale: In our DevOps literature review, we already found that the use of cloud platforms, especially PaaS and serverless, can strongly impact on expected skills of software engineers. ś Evolution notes: Usually we did not need to ask this directly. · Who is in charge for non-functional requirements? ś Integrity, availability, flow rate, response time. ś Capacity planning, load balancing, overload management, timeout and retrials configuration. ś Deploys without unavailability. ś Rationale: Directly linked to RQ1 99 A.6 | INTERVIEW SCRIPT · Who is responsible for configuring monitoring? ś Rationale: Directly linked to RQ1 · Who is responsible for tracking the monitoring? ś Rationale: Directly linked to RQ1 · Who is on-call for incident handling? ś After-hours frequency ś Blameless post-mortem? ś Rationale: Directly linked to RQ1 · Delivery performance: ś Time from commit to production ∗ < 1h / 1 week < t < 1 month / > 1 month ś Deployment frequency ∗ Under demand (many times per day) ∗ 1 per week < f < 1 per month ∗ f > 1 per month ś Mean time for repair ∗ < 1h / < 1 day / 1 day < t < 1 week / > 1 week ś Frequency of failures (% of deliveries) ∗ 0 - 1% / 1 - 15% / 15 - 30% / 30 - 50% / More than 50 ś Reasons for the above results. ś Rationale: Directly Connected to RQ2. Provides a link between the organizational structure and its łdelivery performancež (łbetter resultsž in RQ2). We use łdelivery performancež as defined by Forsgren. The questions alternatives follow the results found in the State of DevOps Surveys. · What would you change in this work system of your team/company? ś Why is it hard to implement such changes? ś Why did this problem arise? Why do they remain? ś Rationale: Directly connected to RQ2. A more qualitative approach to feel the respondent’s (in)satisfaction with the results of the organizational pattern in which she is immersed. ś Rationale: Sub-questions help to answer RQ3, because at this point the interviewee will probably justify the reasons for the existing organizational structure. 100 APPENDIX A ś Rationale: Sub-questions help to answer RQ4 since what could be improved may refer to ładvantages, challenges and enablersž of the existing organizational pattern. ś Rationale: Follows the guideline łrather than asking people to identify what is łbad,ž asking advice on łhow to make things betterž and łareas that need improvementž can help minimize defensivenessž (Adams, 2010). ś Rationale: łThe most potentially embarrassing, controversial, or awkward questions should come toward the endž (Adams, 2010). In that case, the most complicated of the main questions is at the end of the main questions. Specific questions: · Rationale: These questions should be dynamically chosen according to the ładvantages, challenges and enablersž that have so far been revealed in the interview. They serve to deepen the understanding of the ładvantages, challenges and enablersž of the existing organizational structure. · Inter-team communication; problem? · Little communication? Over communication? ś Rationale: The classic idea of DevOps calls for closer approximation between devs and ops (łtearing down walls between silosž). But more communication is not necessarily better communication, especially between different departments. Organizational patterns may be directly linked to the need for communication between the organization’s professionals. · Are different teams aligned (committed to the project)? ś How do this happen? ś Consequences ś Rationale: DevOps literature advocates that different teams and departments should be aligned. But little is said about how to achieve such alignment. However, in organizational patterns that maintain separate, collaborating departments (devs and ops), alignment is essential and, therefore, deserves to be questioned. · Clear definition of responsibilities? ś If not, any problem? ś If yes, long hand-offs? ś Rationale: There are reports of łDevOps deploymentsž in which devs and ops passed to share responsibilities, especially on deployment automation. However, reports show that conflicts arise from this responsibility sharing as professionals question the responsibilities of those involved in the project (łAm I doing something the other should do?ž, łAre they doing what I should do?ž). · Is there a łDevOps teamž? What is it about? 101 A.6 | INTERVIEW SCRIPT ś Rationale: The literature comments on the existence of DevOps teams in organizations, but little is known what exactly these teams are. · Are there people with the łDevOps rolež? What is it about? ś Rationale: The literature also comments on the existence of the łDevOps engineerž or łfull-stack engineerž. However, the very initial idea of DevOps (devs and ops collaborating) seems to be against the idea of a DevOps role. · If there are no łdedicated opsž: how do software engineers improve their skills on infrastructure? ś Were they hired with such skills? ś Everyone in the team knows about infrastructure? ś How people are chosen for łknowing morež about infrastructure. ś Rationale: The lack of łexclusive opsž is a feature we expect to find in many organizations. It is associated with the so-called cross-functional teams. Advocates argue for higher productivity (less wait time between teams) in this model. But the big challenge is getting a single team to possess a wide range of expertise in different technical topics. ś Evolution notes: After interview I20, we diminished the focus on this question and the following two ones since they were not contributing so much for the evolution of our taxonomy. · Is there any kind of incentive from the company about continuous education? ś community of practices ś FLOSS ś internships ś teams mutation ś timeshare for studying ś Rationale: Again, in cross-functional teams, the ability to learn is even more important than in more traditional structures. · If a team needs knowledge/skills that they do not have, what to do? ś Study with team mate ś Search for help in another teams ś Search for in-home specialist ś Search for external consultant ś Rationale: Continuation of the previous question. · Does each team have their own specialists? Are there shared specialists? ś Sharing policy 102 APPENDIX A ś Handoffs problems ś Rationale: The way specialists spread across the organization is totally tied to the issues of organizational patterns. Extra questions: · Rationale: Most of these questions further explore the impacts of choices on how experts spread across the organization. · How does the łDBA rolež work in your organization? · Is there production problems related to database? ś Availability, connection between application and database ś Evolution notes: By the end, we asked less this specific question. · Are there any security experts in the company? · How do developers become aware about security concerns? ś E.g., known vulnerabilities · For your last project, were vulnerabilities found in production? ś Were they exploited by attackers? ś Rationale: łThe most potentially embarrassing, controversial, or awkward questions should come toward the end (. . . ) along with reminders of confidentiality as neededž (Adams, 2010). ś Evolution notes: By the end, we asked less this specific question. · Microservices: do you use? What do you think? ś Rationale: This question will probably arise naturally if that is the case. But as it is a theme strongly linked to DevOps and cross-functional teams, it is worth to briefly explore it. But it is good to leave more to the end, so it does not improperly take the time of the interview. ś Evolution notes: As we rose some hypotheses related to microservices, we strengthened the relevance of this question. However, most of the times we did not need to ask it directly. Some other additional questions we created after I20 to support the elaboration of rising hypotheses: · Do you have few automated tests? How do you deal with the tradeoff velocity vs quality? · How is the collaboration among developers and members of the platform team? · Do you feel the platform provides more benefits for microservices than for monolithic services? Ending the interview: 103 A.6 | INTERVIEW SCRIPT · Ask: "About your technology stack, would you have a favorite tool to recommend?" Quick and easy research-related question to give a final łchill outž. I think in general people are excited to talk about tools. ś Evolution notes: Due to time, in general this question was not asked. · Ask: "Would you have any questions for me or a final comment?" · Ask for suggestions of other people to be interviewed (snowballing). · Ask to take a picture together: "Can I take a selfie with you?" · After the interview is over, wait a moment: sometimes it is at this time of relaxation that the interviewee remembers something interesting to add. Selfie time can also help in this regard. · Thank for the interview. · Offer a business card. · At the end of the day, send a łthank youž message. · After the interview, save the audio with metadata: interviewee, date, and location. After each interview: · Analyze what went right and what went wrong in the interview: ś Have the research questions been answered? ś Were the guidelines and tips followed? ś Has any new and exciting topic come up? ś Raise improvement points for upcoming interviews. ś If necessary, evolve the interview protocol. ś Do this exercise mainly for the first interview. · Take notes of references (books, articles, lectures, etc.) that may have been indicated by the interviewee. 105 Appendix B Interview questions for Phase 3 B.1 Research goals Goal 1 - Answer research questions: · Why do different software organizations adopt different organizational structures regarding development and infrastructure groups? · How organizations handle the drawbacks of each organizational structure? Goal 2 - Refine the taxonomy (adding, removing, and renaming taxonomy high-level elements). B.2 Semi-structured script (for previously visited organizations) · Explaining our research: we want to understand the division of labor between development and infrastructure groups in the software industry, and how these groups interact with each other. · Ask permission to record · Q0 Context: what do you do? / type of software built by the company. ś Rationale Q0: Mostly ice-breaker. · Q1 Concerning the operation activities, such as deployment, infrastructure setup, tracking monitoring, and so on. . . Do you believe there is a clear expectation of how such tasks should be split or shared between developers and infrastructure people? Is there a clear expectation of how these groups should interact? ś Rationale Q1: Interviewee starts to think about the organizational structure. Input for the decision point (after Q2). · Explain how we have classified the interviewee’s organization under our taxonomy. 106 APPENDIX B · Q2A What do you think about this classification? Is it intelligible? · If it is applicable, explain the supplementary properties attributed to the interviewee’s organization under our taxonomy. · Q2B (if pertinent) What do you think about this classification? Is it intelligible? ś Rationale Q2: It provides input to analysis regarding Goal 2. · (Decision point) Here, we have two variables: ś clarity = is there clarity for the interviewee about its structure? ś match = does the interviewee agree with our description of its structure? · If there is no clarity and no match, ask questions from phase 2 (to help understanding the structure): ś Who is responsible for deploying the solution in production? ś In a new project, who builds the new environment? ś Who is in charge of non-functional requirements? ś Who is responsible for configuring monitoring? ś Who is on-call for incident handling? ś Rationale (decision point): if there is no clarity and no match, the answers for the next questions may not provide good data. · Q3 Now, I would like to understand how your company reached this structure: ś Have you considered other alternatives for structuring devs and ops? ś Have you ever had other structures? ś Who had defined the structure? ś Was it a top-down imposition? From whom? ś Was it a formal decision? ś Was it a bottom-up suggestion? From whom? ś How was the decision made? ś Were decisions based on references, consulting, or known cases? ś Was the change incremental or abrupt? ś Rationale Q3: It is related to Goal 1, since it provides mainly the causes, conditions, and consequences for the organization’s structure. · Briefly present our taxonomy (only structure, not supplementary properties). · Q4A Why do you think that your organization, in its context, adopted this structure and not some other? 107 B.3 | SEMI-STRUCTURED SCRIPT (FOR NEW ORGANIZATIONS) · (If pertinent) Present the supplementary properties related to the organization’s structure. · Q4B (If pertinent) Why do you think that your organization, in its context, adopted these supplementary properties and not others? ś Rationale Q4: It reinforces the point of the previous question, but also provides data to analysis regarding the Goal 2. I.e.: pushes the interviewee to answer again to the same question, but this time discussing it by using the taxonomy. Q4 is also expected to possibly provide contingencies about other structures (Goal 1). · Q5 Do you think your organization, in its context, should choose another organizational structure? Why? (ask about the supplementary properties as well). ś Rationale Q5: It encourages the interviewee to talk about causes, consequences and conditions of some other structure (Goal 1). It also provides data regarding Goal 2. · Q6 How do you handle the disadvantages of the adopted structure? (ask about the supplementary properties too). ś Rationale Q6: It is mostly expected to provide the contingencies of the organization’s structure (Goal 1). B.3 Semi-structured script (for new organizations) · Explaining our research: we want to understand the division of labor between development and infrastructure groups in the software industry, and how these groups interact with each other. · Ask permission to record · Q0 Context: what do you do? / type of software built by the company. ś Rationale Q0: Mostly ice-breaker. · Q1 Concerning operation activities, such as deployment, infrastructure setup, tracking monitoring, and so on. . . Do you believe there is a clear expectation of how such tasks should be split or shared between developers and infrastructure people? Is there a clear expectation of how these groups should interact? ś Rationale Q1: Interviewee starts to think about the organizational structure. · Briefly present our taxonomy (only structure, not supplementary properties). · Q2A How would you classify your organization? Why? · If the reasoning behind the choice does not fit what we could expect, then we discuss more on this. · Explain pertinent supplementary properties. 108 APPENDIX B · Q2B (if pertinent) How would you classify your organization regarding the supplementary properties? ś Rationale Q2: It provides input to analysis regarding Goals 2 and 3. · Q3 Now I would like to understand how your company arrived at this structure: ś Have you considered other alternatives for structuring devs and ops? ś Have you ever had other structures? ś Who had defined the structure? ś Was it a top-down imposition? From whom? ś Was it a formal decision? ś Was it a bottom-up suggestion? From whom? ś How was the decision made? ś Were decisions based on references, consulting, known cases? ś Was the change incremental or abrupt? ś Rationale Q3: It is related to Goal 1, since it provides mainly the causes, conditions, and consequences for the organization’s structure. · Q4 Why do you think that your organization, in its context, adopted this structure and not some other? (ask about the supplementary properties too). ś Rationale Q4: It reinforces the point of the previous question, but also provides data to analysis regarding the Goal 2. It is also possibly expected to provide contingencies about other structures (Goal 1). · Q5 Do you think your organization, in its context, should choose another organizational structure? Why? (ask about the supplementary properties too). ś Rationale Q5: It encourages the interviewee to talk about causes, consequences and conditions of some other structure (Goal 1). It also provides data regarding Goal 2. · Q6 How do you handle the disadvantages of the adopted structure? (ask about the supplementary properties too). ś Rationale Q6: It is expected mostly to provide the contingencies of the organization’s structure (Goal 1). 109 Appendix C Examples of strong codes concrete implications C.1 SC04 - Enough infra people to align with dev teams Code class: condition for collaborating dev & infra departments The collaborating departments structure is centered on fostering a culture of collaboration. One recommendation that literature gives about promoting such collaboration is inviting infrastructure people to the agile ceremonies (daily, review, and retrospective meetings), so infrastructure people become aware of the project context and feel part of the delivery. Nonetheless, organizations should be aware that such an initiative is likely to fail if the company has much more developers than infrastructure people. In the beginning, infrastructure people will start to attend the agile ceremonies, but their task queues may not decrease. Instead, ideas in these meetings may generate more workload for them. After some time, infrastructure people think it is better to stop attending the meetings, and things are back as before. Suppose the company has a low ratio of infrastructure people to developers and, even so, it wishes to try this collaborative approach. In that case, it must be aware that some measure is necessary. For example, giving more autonomy to developers (SC14) so infrastructure people do not become more overloaded than before. Some supporting statements: · "There are technically enough SRE teams to align with the same structures that the dev teams have." (I43) · "When I joined the company, we were more like collaborating dev & infra departments. So, we [infra] were the bottleneck. We had more engineers working in dev teams compared to the infra team. One reason to change our approach was that 110 APPENDIX C people were struggling to deploy into production or to access the infra. So they [devs] were stuck, while we [infra] were firefighting, and we hadn’t time to help people [devs]." (I48) · "We tried this approach [collaborating departments] for a while, and it didn’t work. (...) The infra team was small, and it had to be in several teams at the same time." (I49) C.2 SC28 - Compatible with existing rigid structures (low impact on organogram) / Only a few people needed to form a platform team Code class: causes of API-mediated dev & infra departments Some practitioners advocate that their organizations should adopt single departments to eliminate hand-offs and bottlenecks. However, in a big company with a centralized pool of infrastructure professionals, it is hard to break the hierarchy and scatter infrastructure people across different departments. When performing such a transformation, many people will lose their positions as bosses, which may lead to friction. On the other hand, assembling an experimental platform team can be cheaper and bring less resistance. The platform team can be formed as a group within operations, possibly bringing some developers to it. It will start as a non-compulsory platform, and if it has no success, people can more easily go back to their groups of origin. If the platform achieves some initial success, the platform team can grow little by little, considering that adding more services or clients to the platform does not require proportionally more infra people within the platform team (SC38). In this way, hierarchies are affected at a slow pace. Some supporting statements: · "[In a company adopting API-mediated departments] Cross-functional teams not adequate for the company structure having a development and an operations department (devs and ops in totally different structures)." (I40) · "You don’t have managers willing to give up their main employees and you don’t have the possibility to hire people. The platform team was ideal because it was how we managed to move people within the company without generating a very big impact to other areas to set up a platform. There are about 15 people on the platform, it’s not enough to cross-functional." (I41) · "It is the best model [platform team] for the size of the company. I don’t have enough people to put one [infra] person on each team. I think this allows us to have a leaner platform team." (I44) 111 C.3 | SC19 - NOT SUITABLE FOR APPLYING CORPORATE GOVERNANCE AND STANDARDS C.3 SC19 - Not suitable for applying corporate governance and standards Code class: avoidance reason for single dev & infra departments With the infrastructure staff scattered across different departments, several managers are concerned with different teams taking different approaches to infrastructure management. Organizations considering migrating to single departments should be aware of this concern. Enforcing corporate standards may require more effort in single departments when compared to the scenario with a centralized infrastructure group. Therefore, top managers must evaluate: if enforcing standards is really necessary, are single departments worth it? If the organization enforces corporate standards over single departments, the company must plan it effectively, considering the need for innovation. Having a homogeneous infrastructure is really necessary? The principal claim of managers to require homogeneous infrastructure is the worry with the on-boarding time when professionals move from one team to another. Such justification could trigger relevant discussions in practitioners’ forums: is this worry valid? Do employees indeed switch teams so often? Moreover, do not employees frequently move from company to company nowadays? If so, maybe professionals must be prepared to adapt to new technology anyway. Researchers could also take this quandary and start new research around it. Some supporting statements: · "So there are advantages in standardizing things. I think isolated super-independent teams tend to get a bit messy. [about standardization] Both infra and programming language standardization, so things don’t get out of control, and people do not use exotic databases... then nobody knows how to maintain it. This has certainly been a concern." (I54) · "To accelerate you need a certain standard. It’s no use talking ’ah, everyone does what they want, everyone puts in production.’ I find it difficult for a large institution, with a reputation to uphold, to work in this way. It won’t be like that..." (I55) · "They are afraid of being too open and start to lose control over the best practices and care with security, availability, attacks... Those [infra] people would lose their roots and become less connected to their area of expertise." (I68) 112 APPENDIX C C.4 SC11 Discomfort/frustration/friction/inefficiency with blurred responsibilities (people don’t know what to do or what to expect from others) Code class: consequence of collaborating dev & infra departments The collaborating departments structure is centered on fostering a culture of collaboration. The idea is that development and infrastructure professionals will collaborate to perform operational activities. However, sometimes problems arise because of unclear responsibilities over some tasks. We saw cases in which a group had expectations about what the other group would do and, in the end, such expectations were not fulfilled. Companies wishing to foster a culture of collaboration must consider this issue. Maybe imposing rigid rules on responsibilities can hind the collaboration. So, a possible solution is aligning different groups with a common goal, so people become more focused on "what can I do so we achieve the goal" than on "what is my responsibility?". Nevertheless, even in this case, care is needed. Sometimes people may feel wronged when the goal is not achieved and their groups did everything that was needed, especially when the achievement of the goal is linked to some reward. Some supporting statements: · "A team that experimented Classical DevOps: the team split into two, a dev team and another infra team. They ended up giving up and going back. Problem: if there is a problem, it may not be clear who owns the problem ś and this creates inefficiency. This division hurts ’ownership’." (I38) · "The groups have the expectations about other groups, but the expectation is not always fulfilled." (I51) · "This division of responsibility is not very clear. In an ideal world, individual teams own the entire infrastructure, teams are super independent to do whatever they need to do, you don’t need to depend on the infra team. But there is not this super clear division of you do this, I do that." (I54) C.5 SC46 Decide how much devs must be exposed to the infra internals (some places more, some places less) Code class: contingency for API-mediated dev & infra departments The goal of a platform is to abstract the infrastructure so that developers can effortlessly operate their services. So, in principle, the higher the abstraction, the better. 113 C.5 | SC46 DECIDE HOW MUCH DEVS MUST BE EXPOSED TO THE INFRA INTERNALS (SOME PLACES MORE, SOME PLACES LESS) However, we observed at least two problems with too abstract platforms. First, developers expect too much from the platform. Sometimes the service is not running because of a coding or configuration issue, but developers unduly contact the platform team when they could have just read the log file and figured out the problem. The second problem is that to increase the platform abstraction, the platform team becomes more overloaded, sometimes adding features that could be avoided with developers writing one line of configuration. Therefore, an organization with a platform must carefully discuss the level of abstraction of its platform. We saw at least one case of a company in which this debate was promoted and became highly disputed. Possibly, the organization will have to consider the skill level of its developers and also how it foresees these developers should evolve to become better developers; i.e., if becoming a better developer encompasses the notion of improving operational skills, which will contribute to services reliability, or if the focus is just "release soon". Some supporting statements: · "Deployment is magic, you click on a button and the application appears there. If I click on the button and got an error, I open a ticket. But why your deploy is not working? Do you understand how your pipeline works? Do you understand what settings you need to apply? Here at the company, we are considering a lot how far we want to automate and how far we want to expose people to the complexity of infrastructure." (I52) · "The biggest discussion around here was about to what extent devs have to understand the infra. That was a really big discussion. I was one of the guys who radically thought devs should know some minimum. But the guys who were tech leads on my team thought differently, that devs didn’t have to know anything, didn’t even have to know Docker." (I53) · "I think a disadvantage would be that you don’t give the dev a vision of what’s happening. One way we think about it is to give the dev freedom to know how we provide for it so that it can contribute to this model." (I57) 115 Appendix D Answers for the open questions of our feedback forms D.1 Phase 2 feedback Question: łEspecially in case of disagreement [of our proposed classification of structure], please, explain why you disagree. Would you classify it differently?ž Answers: · I think the platform team also implies that the product teams are doing devops but have no distinction of that role inside the product team. Inside the product team it’s system and sw engineering using tools and services that abstract away complexity provided by the platform teams where we also have systems and sw engineering... i think the picture didn’t work for me since it implies platform only does systems engineering and product only sw engineering. Question: łEspecially in case of disagreement [of our proposed classification of supplementary property], please, explain why you disagree. ž No answers for this question. Question: łWould you add more DevOps organization structures [or supplementary properties] to our model? Which Ones?ž Answers: · We have a third pillar in the Operations/Development duo which is Observability. A team that collects metrics and data for everything. Both the platform and the applications and can correlate those to provide better insight in incidents. · No. Question: łWould you have any other thoughts or criticism regarding the proposed model?ž Answers: 116 APPENDIX D · No. I agree with the proposed model. · You’re missing all the "automated" operations. Systems that handle rolling deploys and other similar "in production but under (automated) scrutiny". Those, today, are still not properly owned/viewed. Some being provided by the platform, some defined by the development teams and some just completely separate. · Nice job, can I share the model publicly? · I agree with the proposed model and I think specially in large companies on different projects some times the teams/departments can work on slightly different models from the main company model. · It’s a pretty good characterization of X and Y and Z1 . · Thanks for forwarding on your theory. I guess I feel that we have historically been mostly siloed however occasionally we fit into the more collaborative crossfunctional team as the project requires it. Additionally I would say we are naturally evolving more towards the platform model with the deployment of aaS or self-service platforms. D.2 Phase 3 feedback Question: łWould you have any thoughts on the matter?ž Answers about siloed departments: · Bureaucracy between segregated departments should be minimized. The alternatives are how to better interact among the team and evaluate the communication/operation. · I believe that the low performance of deliveries is affected by the silos, but it’s not the only factor. · Similarly to automated platforms, when the infra folks treat the devs as their customers, even with the manual interactions necessary that doubtlessly increase friction and time to resolution, the relationship is more productive as the infra team tends to optimize for the common needs of the devs. · It may be that I didn’t understand the questions but in my experience none of these problems are directly related to the separation of departments. In my experience, this reduces bureaucracy, increases the autonomy and efficiency of the processes. · In my previous company, those assertions were mostly true for environments fully managed by the ops team, on others where continuous delivery was set up, the dev teams was autonomous enough and there were less friction. 1 X, Y, and Z are big techies at which the interviewee has already worked. 117 D.2 | PHASE 3 FEEDBACK · I think that one of the reason the devs lack autonomy is because lack of knowledge about infra by the devs and this cause a lack of autonomy and freedom to do things like pipelines. Answers about collaborating departments: · Sounds like your research overlaps with the Teams Topologies "types" and google’s "engagement models". I’m sure you’ve seen these already but just in case, here’s some links: https://web.devopstopologies.com/ and https://cloud.google.com/blog/products/devops-sre/how-sre-teams-are-organizedand-how-to-get-started · Collaboration breaks down when the infra team (the one providing the platform) is understaffed and is incapable of fulfilling the needs of the dev teams. The real true contingency for this one is to automate as much as possible on the infra land as time goes by (usually moving towards an API-mediated situation) because, end of the day, if the company is successful, the ratio between devs and infra team is only going to grow. · Collaborative areas tend to reach their goals faster, as they have a better understanding of the whole and a better distribution of knowledge for problem solving. · On a regular day of an infra worker and a dev worker there’s almost no time to get together and share knowledge between these two areas. In my opinion a top-tobottom decision making approach is the most viable way to implement organizational structures. · Another contingency is the constant alignment of expectations between the teams, as it is very common for one of the teams to act on problems at the wrong time and this creates a great friction that can affect the entire organization. · I didn’t understand the meaning of contingencies in the last question (even looking in the dictionary). Answers about API-mediated departments: · One of the key differentiators in my experience for API-mediated departments to provide a good platform is whether they consider the dev teams to be their customers the same way the dev teams consider the company customers to be their customers. When that mindset is present, the interactions from the platform providing team tend to be much more driven to identify the right balance between hiding complexity and providing transparency therefore mitigating a lot of the risks/consequences you described. · "API-mediated platform teams are a double-edged sword: on one hand, they abstract the infrastructure from developers in user-facing teams, helping them to become more agile as they can delegate their infrastructure needs to a third party; on the other hand, they abstract the infrastructure from developers in user-facing teams, alienating them from implementation details that can affect their products. As any software engineering decision, adopting API-mediated infrastructure teams is a decision with many trade-offs. It helps companies to increase the impact of 118 APPENDIX D cloud-based infrastructure while reducing the number of people required for the infrastructure role. Conversely, it can create silos of knowledge and a "me against you" if the company does not provide its developers with the right amount of infrastructure knowledge. For me, finding this equilibrium is the greatest challenge of applying this kind of organizational pattern." · A lot "depends" upon the situation so I often answered "No correlation / I don’t know". The contingency can be dependent on the system, the team, and the organization. Answers about single department: · I do not necessarily attribute single departments with lack of standardization and collaboration with dev teams. I believe you can have multiple "single dev + infra" teams that can collaborate. In our company, we have two separate dev teams, each with their own infrastructure engineers. But we hold biweekly "future of software development" meetings with the heads of the dev departments to map common infrastructures and establish best practices. Once those are established, they are documented for future teams and usage. The idea is that over time, we will establish all the standards and guidelines, and inform all future devs of existing initiatives they can take advantage of and avoid duplication. This has proven to be a successful approach so far, and I do believe it scales up, as long representatives have to join. If the company was much larger, these could be held at less frequent paces (looking more like a conference than a meeting), with intermediary needs for sync being fulfilled by a head of software (Director/VP) · Consequence of adopting a single structure: difficulty in diagnosing problems; high recovery time in case of serious infrastructural failures. · Based on the link at the top of this questionnaire it seems you’re calling "single dev/infra" both teams were infra responsibilities are shared across all team members (no specialization) and teams were infra specialists are embedded in the team. I personally think those are completely different models. IMO, the single team with embedded infra professional is closer to the "Collaborating dev & infra departments" model than to "single team". The key for single team to work (and thus for collecting its benefits) is exactly to enable the "you built it, you run it" part, and it seems to me the single team with specialized infra resources is closer to "devs on the team built it, infra specialists on the team run it" · To establish the devs and ops in a single team, maintaining standards and governance, it is necessary to be able to keep the team stable (without many changes of employees) and to have well-documented common processes between teams. · This one presents the same problem as all the other embedded functions in a multifunctional team structure: lack of tie between the experts. The most common proposed contigency is guilds or whatever other name representing an informal (in the sense of not represented by the organization structure reporting tree) gathering of experts to define the direction that specialty will head towards. Having an expert in a team, so long as the expert collaborates with other team members, tends to solve the problem of developing in-house skills (to varying levels) on that team without requiring formal training. 119 D.2 | PHASE 3 FEEDBACK · Criticizing the format of the questions, I think they were formulated a little strangely, perhaps as a suggestion I think the options could be (Agree, somewhat/partially agree, neither agree nor disagree, partially disagree, disagree) it would give more the idea of opinion and not so much true or false questions (as in a test). Second, I found strange the way the questions were prepared, for example in the second question ("Startup scenario [...]" is a cause of single departments) a translation would be: "In a startup scenario (basically chaotic) is a cause of single departments" in my opinion it doesn’t make much sense; maybe something that would make more sense to formulate (to select alternatives that people agree or disagree with) would be: "A startup scenario tends to use single departments" (A startup environment leans towards single departments). Another example would be in the 6th question ("More costs: duplication of infra work among teams, high infra professionals salary, underused infra professionals" is an avoidance reason for single departments), in my opinion there is 1 point that tends in favor of single departments and 2 against, in the case of "duplication of infrastructure work between teams" is a point in favor of having a dedicated infrastructure department. The wording of the phrase " "more costs: ..." is an avoidance reason for ..." also sounds a little strange to me, a translation would be " "Higher costs: ..." are reasons for evasion of single departments", perhaps another suggestion to formulate the sentence would be "More costs: ... are common reasons/excuses to use (a structure of) single departments" (More costs: ..., are common reasons to apply a single department structure). About devops teams, I have had experience in 2 companies so far, the first had a tech team of 6 people, which naturally required much less cloud operations (and tech in general) which ended up tending to a single department model, and the second had a dedicated infra team from the beginning (when we were only 6 devs in total, 1 of them was infra focused already). Both were startups. I think that most of the statements/questions in the form can make sense when maybe there are less technical people behind the management or because it doesn’t make much sense for the business model they are doing/elaborating. On the other hand, any company with a greater focus on developing digital products, I really believe that it strongly needs an infrastructure department. Infrastructure monitoring and management alone already demands a lot from a team and having experts on the subject helps a lot to reduce costs, have more security, speed up / facilitate everyone’s life, stability, among many other benefits. · As the cloud services offering get more mature it becomes leases important the necessity to build and maintain our own dedicated infra team allowing teams to focus on the product instead of infra with less friction. · Currently in my organization people are discussing the "dedicated department" existence not only on infrastructure context, but also regarding design matters. Arguments like "hanging on to designers/ops professionals availability to move things forward is slowing down deliveries - devs could do most of simple things themselves" were raised. My contribution on the matter was that sharing these resposabilities with the dev team (being it ops or design tasks) strongly depends on culture and documentation that draw a very clear line of where devs should stop, step back and let more seasoned professionals take the lead. In our case, we do not have devs who are mature enough for single department strucutre (devs write 120 APPENDIX D code AND manage ops). From this perspective, the way is still to have a dedicated department for infrastructure, as it is today. · In my experience, platforms with Heroku end up being more expensive than using AWS directly, but the cost benefit was well worth it for a company that doesn’t have an application that demands a lot of infrastructure resources. The price difference is not that big, it reduces maintenance a lot (since the service provides several) and greatly reduces the "skill-cap". I, for example, am not a very skilled person in infrastructure, but with a small team we were able to scale the application well using Heroku and other connected PaaS. · I answered false in the first one because a team can depend on another one that has a more experienced person and/or with more privileged access to the CI/CD systems. 121 References [Ada10] [AH09] [And83] [BA04] [Bai+18] [Ban+99] [Bas+16] [BB06] [Bey+16] [BHJ16] [BR20] [Bro18] William C. Adams. łChapter 16: Conducting semi-structured interviewsž. In: Handbook of Practical Program Evaluation. 3rd. Jossey-Bass, 2010 (cit. on pp. 35, 39). John Allspaw and Paul Hammond. 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr. At Velocity 2009. Slides available on https://pt.slideshare.net/ jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr, accessed in Nov 2021. 2009 (cit. on p. 23). Paul A. Anderson. łDecision Making by Objection and the Cuban Missile Crisisž. In: Administrative Science Quarterly 28.2 (1983), pp. 201ś222 (cit. on pp. 8, 39, 83). Kent Beck and Cynthia Andres. Extreme Programming explained: embrace change. Addison-Wesley Professional, 2004 (cit. on pp. 12, 19). Xiaoying Bai et al. łContinuous Delivery of Personalized Assessment and Feedback in Agile Software Engineering Projectsž. In: Proceedings of the 40th International Conference on Software Engineering: Software Engineering Education and Training. ICSE-SEET ’18. 2018, pp. 58ś67 (cit. on p. 18). Mousumi Banerjee et al. łBeyond kappa: A review of interrater agreement measuresž. In: Canadian Journal of Statistics 27.1 (1999), pp. 3ś23 (cit. on p. 87). Ali Basiri et al. łChaos Engineeringž. In: IEEE Software 33.3 (2016), pp. 35ś41 (cit. on p. 14). David Budgen and Pearl Brereton. łPerforming Systematic Literature Reviews in Software Engineeringž. In: Proceedings of the 28th International Conference on Software Engineering. ICSE ’06. ACM, 2006, pp. 1051ś1052 (cit. on p. 3). Betsy Beyer et al. Site Reliability Engineering: How Google runs production systems. O’Reilly, 2016 (cit. on pp. 14, 16, 20, 52, 63). Armin Balalaie, Abbas Heydarnoori, and Pooyan Jamshidi. łMicroservices Architecture Enables DevOps: Migration to a Cloud-Native Architecturež. In: IEEE Software 33.3 (2016), pp. 42ś52 (cit. on pp. 14, 18, 19, 91). Sebastian Baltes and Paul Ralph. łSampling in software engineering research: A critical review and guidelinesž. In: arXiv preprint arXiv:2002.07764 (2020) (cit. on p. 68). Donovan Brown. Our DevOps journey - Microsoft’s internal transformation story. DevOneConf 2018, https://www.youtube.com/watch?v=cbFzojQOjyA, accessed in Jul 2018. 2018 (cit. on p. 18). 122 REFERENCES [BSK20] [Cha08] [Che15] [Chr16] [CK18] [Con68] [CSA15] [Cuk13] [Cun92] [Dd14] [DD16] [Deb08] [Deb11] [DG94] [DMC16] Alanna Brown, Michael Stahnke, and Nigel Kersten. 2020 State of DevOps Report. https : / / www2 . circleci . com / 2020 - state - of - devops - report . html, accessed in Dec 2021. 2020 (cit. on p. 27). Kathy Charmaz. łChapter 7: Grounded Theory as an emergent methodž. In: Handbook of Emergent Methods. Ed. by Sharlene Nagy Hesse-Biber and Patricia Leavy. The Guilford Press, 2008 (cit. on p. 31). Lianping Chen. łContinuous delivery: Huge benefits, but challenges toož. In: IEEE Software 32.2 (2015), pp. 50ś54 (cit. on pp. 1, 19, 20). Henrik Bærbak Christensen. łTeaching DevOps and Cloud Computing Using a Cognitive Apprenticeship and Story-Telling Approachž. In: Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education. ITiCSE ’16. ACM, 2016, pp. 174ś179 (cit. on pp. 12, 14, 18). Daniel Cukier and Fabio Kon. łA maturity model for software startup ecosystemsž. In: Journal of Innovation and Entrepreneurship 7 (2018) (cit. on pp. 32, 35). Melvin E. Conway. łHow do committees inventž. In: Datamation 14.4 (1968), pp. 28ś31 (cit. on p. 22). Gerry Gerard Claps, Richard Berntsson Svensson, and Aybüke Aurum. łOn the journey to continuous deployment: Technical and social challenges along the wayž. In: Information and Software Technology 57 (2015), pp. 21ś31 (cit. on p. 19). Daniel Cukier. łDevOps Patterns to Scale Web Applications Using Cloud Servicesž. In: Proceedings of the 2013 Companion Publication for Conference on Systems, Programming, & Applications: Software for Humanity. SPLASH ’13. ACM, 2013, pp. 143ś152 (cit. on pp. 19, 20). Ward Cunningham. łThe WyCash Portfolio Management Systemž. In: Addendum to the Proceedings on Object-Oriented Programming Systems, Languages, and Applications. OOPSLA ’92. ACM, 1992, pp. 29ś30 (cit. on p. 90). Dimitra Dodou and Joost C.F. de Winter. łSocial desirability is the same in offline, online, and paper surveys: A meta-analysisž. In: Computers in Human Behavior 36 (2014), pp. 487ś495 (cit. on p. 87). Jennifer Davis and Ryn Daniels. Effective DevOps: building a culture of collaboration, affinity, and tooling at scale. O’Reilly Media, 2016 (cit. on pp. 2, 26, 50). Patrick Debois. Agile Infrastructure & Operations. At Agile 2008 Toronto. Slides available on https://docplayer.net/23874035- Agile- infrastructureoperations.html, accessed in Nov 2021. 2008 (cit. on pp. 13, 48). Patrick Debois. łDevops: A software revolution in the makingž. In: Cutter IT Journal 24.8 (2011), pp. 3ś5 (cit. on p. 19). D. Harold Doty and William H. Glick. łTypologies As a Unique Form Of Theory Building: Toward Improved Understanding and Modelingž. In: Academy of Management Review 19.2 (1994), pp. 230ś251 (cit. on pp. 29, 87). Elisa Diel, Sabrina Marczak, and Daniela S. Cruzes. łCommunication Challenges and Strategies in Distributed DevOpsž. In: 11th IEEE International Conference on Global Software Engineering (ICGSE). 2016, pp. 24ś28 (cit. on p. 19). 123 REFERENCES [Don93] [Don99] [DPL15] [EAD17] [Ebe+16] [Eis89] [Fay13] [FFB13] [FHK18] [FJT16] [FK18] [For+17] [For+20] [Fou19] [Ful09] [GA08] Ann Donnellon. łCrossfunctional teams in product development: Accomodating the structure to the processž. In: Journal of Product Innovation Management 10.5 (1993), pp. 377ś392 (cit. on p. 26). Lex Donaldson. łTeoria da contingência estruturalž. In: Handbook de estudos organizacionais. Atlas, 1999 (cit. on p. 22). Andrej Dyck, Ralf Penners, and Horst Lichter. łTowards Definitions for Release Engineering and DevOpsž. In: 2015 IEEE/ACM 3rd International Workshop on Release Engineering. 2015, pp. 3ś3 (cit. on p. 15). Floris Erich, Chintan Amrit, and Maya Daneva. łA qualitative study of DevOps usage in practicež. In: Journal of Software: Evolution and Process 29.6 (2017) (cit. on p. 27). Christof Ebert et al. łDevOpsž. In: IEEE Software 33.3 (2016), pp. 94ś100 (cit. on pp. 18, 91). Kathleen Eisenhardt. łBuilding Theories from Case Study Researchž. In: Academy of Management Review 14.4 (1989), pp. 532ś550 (cit. on p. 83). Henri Fayol. General and industrial management. Reprint of 1949 Edition; originally published in French in 1916. Martino Fine Books, 2013 (cit. on p. 23). Dror G. Feitelson, Eitan Frachtenberg, and Kent L. Beck. łDevelopment and deployment at Facebookž. In: IEEE Internet Computing 17.4 (2013), pp. 8ś17 (cit. on p. 19). Nicole Forsgren, Jez Humble, and Gene Kim. łChapter 2: Measuring Performancež. In: Accelerate: The science of lean software and DevOps: Building and scaling high performing technology organizations. IT Revolution Press, 2018 (cit. on pp. 21, 25, 87). Breno B. Nicolau de França, Helvio Jeronimo Junior, and Guilherme Horta Travassos. łCharacterizing DevOps by Hearing Multiple Voicesž. In: Proceedings of the 30th Brazilian Symposium on Software Engineering. SBES ’16. ACM, 2016, pp. 53ś62 (cit. on pp. 8, 31). Nicole Forsgren and Mik Kersten. łDevOps Metricsž. In: Communications of the ACM 61.4 (2018), pp. 44ś48 (cit. on p. 18). Nicole Forsgren et al. 2017 State of DevOps Report. https : / / puppet . com / resources/whitepaper/2017-state-of-devops-report, accessed in Dec 2020. 2017 (cit. on p. 87). Nicole Forsgren et al. łA Taxonomy of Software Delivery Performance Profiles: Investigating the Effects of DevOps Practicesž. In: Proceedings of The Americas Conference on Information Systems 2020. AMCIS 2020. AIS, 2020, pp. 1ś6 (cit. on pp. 20, 27, 87). ITIL Foundation. ITIL 4𝑡ℎ edition, Glossary. https : / / purplegriffon . com / downloads/resources/itil4-foundation-glossary-january-2019.pdf, accessed in Nov 2021. 2019 (cit. on p. 16). Jeffrey Fulmer. łWhat in the world is infrastructurež. In: PEI Infrastructure Investor 1.4 (2009), pp. 30ś32 (cit. on p. 16). Svetla Georgieva and George Allan. łBest Practices in Project Management Through a Grounded Theory Lensž. In: The Electronic Journal of Business Research Methods 6.1 (2008), pp. 43ś52 (cit. on p. 36). 124 REFERENCES [Gal08] [GC14] [Gla02] [Gla05] [Gla78] [Gra06] [Gre06] [GS99] [Gub81] [Gue91] [Hal84] [Ham07] [HCM17] [Her09] [HF10] [HM11] [HN17] Jay R. Galbraith. łChapter 18: Organization Designž. In: Handbook of Organization Development. Ed. by Thomas G. Cummins. Sage Publications, 2008, pp. 325ś352 (cit. on p. 23). Eliyahu M. Goldratt and Jeff Cox. The Goal: A Process of Ongoing Improvement. 30th anniversary edition. North River Press, 2014 (cit. on pp. 22, 36, 48). Barney G. Glaser. łConceptualization: On Theory and Theorizing Using Grounded Theoryž. In: International Journal of Qualitative Methods 1.2 (2002), pp. 23ś38 (cit. on p. 78). Barney Glaser. The grounded theory perspective III: Theoretical coding. pp. 70. The Sociology Press, 2005 (cit. on p. 40). Barney Glaser. Theoretical sensitivity: Advances in the methodology of Grounded Theory. The Sociology Press, 1978 (cit. on pp. 40, 77). Jim Gray. łA conversation with Werner Vogelsž. In: ACM Queue 4.4 (2006), pp. 14ś22 (cit. on pp. 2, 18, 19, 23, 53). Shirley Gregor. łThe nature of theory in information systemsž. In: MIS quarterly (2006), pp. 611ś642 (cit. on pp. 4, 29, 30, 40). Barney Glaser and Anselm Strauss. The discovery of grounded theory: strategies for qualitative research. Originally published in 1967. Aldine Transaction, 1999 (cit. on pp. 4, 27, 29ś32, 39, 41, 42, 44, 45, 68, 69, 73, 83, 87). Egon G. Guba. łCriteria for assessing the trustworthiness of naturalistic inquiriesž. In: Educational Technology Research and Development (ECTJ) 29 (1981), pp. 75ś91 (cit. on pp. 39, 46, 83, 84). David Guest. The hunt is on for the Renaissance Man of computing. The Independent (London). Sept. 1991 (cit. on p. 19). Richard H. Hall. Organizações, estruturas e processo. Prentice-Hall, 1984 (cit. on p. 22). James Hamilton. łOn Designing and Deploying Internet-Scale Servicesž. In: Proceedings of the 21st Large Installation System Administration Conference. LISA ’07. USENIX, 2007, pp. 231ś242 (cit. on p. 19). Waqar Hussain, Tony Clear, and Stephen MacDonell. łEmerging Trends for Global DevOps: A New Zealand Perspectivež. In: Proceedings of the 12th International Conference on Global Software Engineering. ICGSE ’17. IEEE Press, 2017, pp. 21ś30 (cit. on pp. 15, 19). Cheri Ann Hernandez. łTheoretical coding in Grounded Theory methodologyž. In: Grounded Theory Review 8.3 (2009) (cit. on p. 40). Jez Humble and David Farley. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional, 2010 (cit. on pp. 12, 13). Jez Humble and Joanne Molesky. łWhy enterprises must adopt DevOps to enable continuous deliveryž. In: Cutter IT Journal 24.8 (2011), pp. 6ś12 (cit. on pp. 1, 8, 15, 18, 20, 61, 63). Rashina Hoda and James Noble. łBecoming Agile: A Grounded Theory of Agile Transitions in Practicež. In: 2017 IEEE/ACM 39th International Conference on Software Engineering. ICSE ’17. 2017, pp. 141ś151 (cit. on pp. 31, 35). 125 REFERENCES [HNM11] [Hod21] [HR06] [HS05] [Hum10] [Hum12] [Jaa18] [Jes92] [Jos+15] [Jov+17] [KBS18] [KC07] [KC12] [Kim+16] [KK03] Rashina Hoda, James Noble, and Stuart Marshall. łThe impact of inadequate customer collaboration on self-organizing agile teamsž. In: Information and software technology 53.5 (2011), pp. 521ś534 (cit. on pp. 40, 70, 77). Rashina Hoda. łSocio-Technical Grounded Theory for Software Engineeringž. In: IEEE Transactions on Software Engineering (2021). Early access, pp. 1ś1 (cit. on pp. 31, 32). James Herbsleb and Jeff Roberts. łCollaboration In Software Engineering Projects: A Theory Of Coordinationž. In: International Conference on Information Systems 2006 Proceedings. ICIS 2006. 2006, pp. 553ś568 (cit. on p. 26). Hsiu-Fang Hsieh and Sarah E. Shannon. łThree approaches to qualitative content analysisž. In: Qualitative health research 15.9 (2005), pp. 1277ś1288 (cit. on p. 39). Jez Humble. Continuous Delivery vs Continuous Deployment. https : / / continuousdelivery. com / 2010 / 08 / continuous - delivery - vs - continuous deployment/, accessed in Aug 2019. 2010 (cit. on p. 14). Jez Humble. There’s No Such Thing as a łDevops Teamž. https : / / continuousdelivery.com/2012/10/theres-no-such-thing-as-a-devops-team, accessed in Aug 2018. 2012 (cit. on pp. 20, 50, 52). Martin Gilje Jaatun. łSoftware Security Activities that Support Incident Management in Secure DevOpsž. In: Proceedings of the 13th International Conference on Availability, Reliability and Security. ARES 2018. ACM, 2018, 8:1ś8:6 (cit. on p. 18). Bob Jessop. łChapter 3: Fordism and post-Fordism: a critical reformulationž. In: Pathways to industrialization and regional development. Routledge, 1992, pp. 54ś74 (cit. on p. 22). Ankur Joshi et al. łLikert scale: Explored and explainedž. In: British journal of applied science & technology 7.4 (2015), pp. 396ś403 (cit. on pp. 60, 79). Miloš Jovanović et al. łTransition of organizational roles in Agile transformation process: A Grounded Theory approachž. In: Journal of Systems and Software 133 (2017), pp. 174ś194 (cit. on pp. 31, 40, 83). Gene Kim, Kevin Behr, and George Spafford. The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win. 3rd ed. IT Revolution Press, 2018 (cit. on pp. 15, 36, 48). Barbara Kitchenham and Stuart Charters. Guidelines for performing Systematic Literature Reviews in Software Engineering. Tech. rep. Keele Universit, University of Durham, 2007 (cit. on p. 3). John P. Kotter and Dan S. Cohen. The heart of change: real-life stories of how people change their organizations. Harvard Business Review Press, 2012 (cit. on pp. 24, 25). Gene Kim et al. łChapter 7: How to design our organization and architecture with Conway’s law in mindž. In: The DevOps handbook: How to create worldclass agility, reliability, and security in technology organizations. IT Revolution Press, 2016 (cit. on pp. 26, 61ś63). Per Kroll and Philippe Kruchten. The Rational Unified Process made easy: a practitioner’s guide to the RUP. Addison-Wesley Professional, 2003 (cit. on p. 12). 126 REFERENCES [Kni14] [Knu74] [Lei+13] [Lei+19] [Lei+20a] [Lei+20b] [Lei+21] [Lew45] [LKM20] [Lop+21] [LPB19] [Lun12] [Man+19] [Mar20] [MB20] [MBK18] Henrik Kniberg. Spotify engineering culture (part 1). https://labs.spotify.com/ 2014/03/27/spotify-engineering-culture-part-1, accessed in Aug 2019. 2014 (cit. on pp. 19, 52, 53). Donald E. Knuth. łComputer programming as an artž. In: Communications of the ACM 17.12 (1974), pp. 667ś673 (cit. on p. 90). Leonardo Leite et al. łA systematic literature review of service choreography adaptationž. In: Service Oriented Computing and Applications 7.3 (2013), pp. 199ś216 (cit. on p. 3). Leonardo Leite et al. łA Survey of DevOps Concepts and Challengesž. In: ACM Computing Surveys 52.6 (2019), 127:1ś127:35 (cit. on pp. 3, 5, 11, 15, 32, 35, 36, 50, 81). Lenardo Leite et al. łPlatform Teams: An Organizational Structure for Continuous Deliveryž. In: IEEE/ACM 42nd International Conference on Software Engineering Workshops. ICSEW’20. 2020, pp. 505ś511 (cit. on p. 6). Leonardo Leite et al. łBuilding a Theory of Software Teams Organization in a Continuous Delivery Contextž. In: 42nd International Conference on Software Engineering Companion. ICSE ’20 Companion. 2020, pp. 294ś295 (cit. on p. 6). Leonardo Leite et al. łThe organization of software teams in the quest for continuous delivery: A Grounded Theory approachž. In: Information and Software Technology 139 (2021), p. 106672 (cit. on pp. 7, 46, 70). Kurt Lewin. łThe Research Center for Group Dynamics at Massachusetts Institute of Technologyž. In: Sociometry 8.2 (1945), pp. 126ś136 (cit. on p. 30). Leonardo Leite, Fabio Kon, and Paulo Meirelles. łUnderstanding context and forces for choosing organizational structures for continuous deliveryž. In: 10th CBSoft’s Workshop on Theses and Dissertations. WTDSoft 2020. 2020 (cit. on p. 7). Daniel Lopez-Fernandez et al. łDevOps Team Structures: Characterization and Implicationsž. In: IEEE Transactions on Software Engineering (2021) (cit. on pp. 2, 8, 26, 27, 31, 64, 83). Welder Pinheiro Luz, Gustavo Pinto, and Rodrigo Bonifácio. łAdopting DevOps in the real world: A theory, a model, and a case studyž. In: Journal of Systems and Software 157 (2019), p. 110384 (cit. on pp. 31, 50). Fred C. Lunenburg. łOrganizational structure: Mintzberg’s frameworkž. In: International journal of scholarly, academic, intellectual diversity 14.1 (2012) (cit. on p. 24). Andi Mann et al. 2019 State of DevOps Report. https://www2.circleci.com/2019state-of-devops-report.html, accessed in Mar 2022. 2019 (cit. on p. 92). Karl Marx. łPrefacež. In: A contribution to the critique of political economy. Originally published in German in 1859. Lector House, 2020 (cit. on p. 25). Ruth W. Macarthy and Julian M. Bass. łAn Empirical Taxonomy of DevOps in Practicež. In: 2020 46th Euromicro Conference on Software Engineering and Advanced Applications (SEAA). 2020, pp. 221ś228 (cit. on pp. 2, 26, 31). Andi Mann, Michael Stahnke Alanna Brown, and Nigel Kersten. 2018 State of DevOps Report. https://puppet.com/resources/whitepaper/2018-state-ofdevops-report, accessed in Jul 2019. 2018 (cit. on pp. 26, 61ś63). 127 REFERENCES [McK82] [Mel15] [MH13] [Mor11] [Mor16] [MR04] [MS93] [NMB08] [NSP16] [OAB12] [Ohn88] [Oli12] [Pat14] [Pen+18] [Pfl14] [Pin86] Bill McKelvey. Organizational systematics - taxonomy, evolution, classification. University of California Press, 1982 (cit. on p. 29). Claudia Melo. łProductivity of agile teams: an empirical evaluation of factors and monitoring processesž. PhD thesis. University of São Paulo, 2015 (cit. on p. 84). Matthew Miles and Micahel Huberman. łChapter 2: Focusing and Bounding the Collection of Data - the Substantive Startž. In: Qualitative Data Analysis: A Methods Sourcebook. 3rd. Sage Publications, 2013 (cit. on p. 37). Gareth Morgan. łReflections on Images of Organization and Its Implications for Organization and Environmentž. In: Organization & Environment 24.4 (2011), pp. 459ś478 (cit. on p. 24). Kief Morris. Infrastructure as Code: Managing Servers in the Cloud. O’Reilly Media, 2016 (cit. on p. 56). Mary Lynn Manns and Linda Rising. Fearless Change: Patterns for Introducing New Ideas. Addison Wesley, 2004 (cit. on pp. 24, 25). James March and Herbert Simon. Organizations. 2nd. Wiley Blackwell, 1993 (cit. on p. 25). Nachiappan Nagappan, Brendan Murphy, and Victor Basili. łThe influence of organizational structure on software qualityž. In: 2008 ACM/IEEE 30th International Conference on Software Engineering. 2008, pp. 521ś530 (cit. on p. 26). Kristian Nybom, Jens Smeds, and Ivan Porres. łOn the Impact of Mixing Responsibilities Between Devs and Opsž. In: International Conference on Agile Software Development. XP 2016. Springer International Publishing, 2016, pp. 131ś143 (cit. on pp. 1, 2, 18ś20, 26, 58, 61ś63). Helena H. Olsson, Hiva Alahyari, and Jan Bosch. łClimbing the "Stairway to Heaven" ś A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Softwarež. In: 38th Euromicro Conference on Software Engineering and Advanced Applications. 2012, pp. 392ś399 (cit. on p. 91). Taiichi Ohno. Toyota Production System: Beyond Large-Scale Production. Originally published in Japanese in 1978. Productivity Press, 1988 (cit. on p. 23). Nelio Oliveira. łChapter 2: Organizational structure, format, shape design and architecturež. In: Automated organizations: Development and structure of the modern business firm. Physica-Verlag HD, 2012 (cit. on pp. 2, 22). Michael Quinn Patton. Qualitative research & evaluation methods: Integrating theory and practice. Sage publications, 2014 (cit. on p. 68). Birgit Penzenstadler et al. łSoftware Engineering for Sustainability: Find the Leverage Points!ž In: IEEE Software 35.4 (2018), pp. 22ś33 (cit. on p. 24). Niels Pflaeging. Organize for complexity: how to get life back into work to build the high-performance organization. 5th. Betacodex Publishing, 2014 (cit. on pp. 25, 26). Lawrence T. Pinfield. łA Field Evaluation of Perspectives on Organizational Decision Makingž. In: Administrative Science Quarterly 31.3 (1986), pp. 365ś388 (cit. on pp. 8, 39, 83). 128 REFERENCES [PP06] [Pre05] [Rad09] [Ral19] [Roc13] [Rot09] [Rou15] [Sab96] [Sal+21] [Sal15] [San+16] [SB20] [SB98] [SBZ16] [Sch+16a] Mary Poppendieck and Tom Poppendieck. Implementing Lean Software Development: From Concept to Cash. Addison-Wesley Professional, 2006 (cit. on p. 24). Roger S. Pressman. Software engineering: a practitioner’s approach. 6th. Palgrave Macmillan, 2005 (cit. on p. 12). Hans Radder. łThe philosophy of scientific experimentation: a reviewž. In: Automated Experimentation 1.1 (2009) (cit. on p. 30). Paul Ralph. łToward Methodological Guidelines for Process Theories and Taxonomies in Software Engineeringž. In: IEEE Transactions on Software Engineering 45.7 (2019), pp. 712ś735 (cit. on pp. 26, 27, 29, 31, 39, 46, 59, 77, 83, 87, 88). James Roche. łAdopting DevOps Practices in Quality Assurancež. In: Communications of the ACM 56.11 (2013), pp. 38ś43 (cit. on p. 14). Mike Rother. Toyota kata: managing people for improvement, adaptiveness and superior results. McGraw-Hill, 2009 (cit. on pp. 24, 88). Margaret Rouse. What is NoOps? ś Definition from WhatIs.com. https : / / searchcloudapplications.techtarget.com/definition/noops, accessed in Mar 2022. 2015 (cit. on p. 20). Karl Sabbagh. 21st Century Jet ś Building the Boeing 777 [Film]. Skyscraper Productions. 1996 (cit. on p. 23). Marc Sallin et al. łMeasuring Software Delivery Performance Using the Four Key Metrics of DevOpsž. In: Agile processes in software engineering and Extreme Programming. Ed. by Peggy Gregory et al. Springer International Publishing, 2021, pp. 103ś119 (cit. on p. 21). Johnny Saldaña. The coding manual for qualitative researchers. Sage, 2015 (cit. on p. 40). Ronnie Santos et al. łBuilding a Theory of Job Rotation in Software Engineering from an Instrumental Case Studyž. In: 2016 IEEE/ACM 38th International Conference on Software Engineering. ICSE ’16. 2016, pp. 971ś981 (cit. on pp. 31, 44). Mojtaba Shahin and M. Ali Babar. łOn the Role of Software Architecture in DevOps Transformation: An Industrial Case Studyž. In: Proceedings of the International Conference on Software and System Processes. ICSSP ’20. ACM, 2020, pp. 175ś184 (cit. on pp. 52, 63, 64, 83). Carolyn B. Seaman and Victor R. Basili. łCommunication and organization: an empirical study of discussion in inspection meetingsž. In: IEEE Transactions on Software Engineering 24.7 (1998), pp. 559ś572 (cit. on p. 26). Mojtaba Shahin, Muhammad Ali Babar, and Liming Zhu. łThe Intersection of Continuous Deployment and Architecting Process: Practitioners’ Perspectivesž. In: Proceedings of the 10th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement. ESEM ’16. ACM, 2016, 44:1ś44:10 (cit. on pp. 14, 19). Gerald Schermann et al. łAn empirical study on principles and practices of continuous delivery and deploymentž. In: PeerJ PrePrints 4 (2016), e1889 (cit. on p. 1). 129 REFERENCES [Sch+16b] [Sch98] [Sen+99] [SER04] [SF18] [SF95] [Sha+17] [Sha+19] [Sin20] [Siq+18] [Sir+11] [Smi14] [Som11] [SP13] [SP19] [SRF16] Gerald Schermann et al. łTowards quality gates in continuous delivery and deploymentž. In: 24th IEEE International Conference on Program Comprehension. ICPC. 2016, pp. 1ś4 (cit. on p. 1). Thomas Schwandt. łChapter 7: Constructivist, interpretivist approaches to human inquiryž. In: The landscape of qualitative research: theories and issues. Sage publications, 1998 (cit. on p. 31). Peter Senge et al. The dance of change: The challenges to sustaining momentum in learning organizations. Broadway Business, 1999 (cit. on pp. 24, 25). Manuel E. Sosa, Steven D. Eppinger, and Craig M. Rowles. łThe Misalignment of Product Architecture and Organizational Structure in Complex Product Developmentž. In: Management Science 50.12 (2004) (cit. on p. 24). Klaas-Jan Stol and Brian Fitzgerald. łThe ABC of Software Engineering Researchž. In: ACM Transactions on Software Engineering and Methodology 27.3 (2018) (cit. on p. 29). James Stoner and R. Edward Freedman. Administração. Prentice-Hall, 1995 (cit. on p. 22). Mojtaba Shahin et al. łAdopting Continuous Delivery and Deployment: Impacts on Team Structures, Collaboration and Responsibilitiesž. In: Proceedings of the 21st International Conference on Evaluation and Assessment in Software Engineering. EASE’17. ACM, 2017, pp. 384ś393 (cit. on pp. 2, 26, 27, 61, 63ś65). Mojtaba Shahin et al. łAn empirical study of architecting for continuous delivery and deploymentž. In: Empirical Software Engineering 24 (2019), pp. 1061ś 1108 (cit. on pp. 21, 27, 46). Toby Sinclair. 12 Organisational Design Principles that Embrace Complexity. Available on https://www.tobysinclair.com/post/organisational- designprinciples- that- embrace- complexity, accessed in Mar 2021. 2020 (cit. on p. 24). Rodrigo Siqueira et al. łContinuous Delivery: Building Trust in a Large-Scale, Complex Government Organizationž. In: IEEE Software 35.2 (2018), pp. 38ś43 (cit. on pp. 20, 32). David G. Sirmon et al. łResource orchestration to create competitive advantage: Breadth, depth, and life cycle effectsž. In: Journal of management 37.5 (2011), pp. 1390ś1412 (cit. on pp. 8, 39, 83). Adam Smith. łChapter 1: Of the division of labourž. In: The Wealth of Nations. Originally published in 1776. Createspace, 2014 (cit. on pp. 22, 92). Ian Sommerville. Software engineering. 9th. Addison-Wesley, 2011 (cit. on p. 12). Matthew Skelton and Manuel Pais. DevOps Topologies. https : / / web . devopstopologies.com/, accessed in Nov 2021. 2013 (cit. on pp. 20, 26, 61ś63). Matthew Skelton and Manuel Pais. Team Topologies: Organizing business and technology teams for fast flow. IT Revolution Press, 2019 (cit. on pp. 26, 27, 61, 63). Klaas-Jan Stol, Paul Ralph, and Brian Fitzgerald. łGrounded Theory in Software Engineering Research: A Critical Review and Guidelinesž. In: 2016 IEEE/ACM 38th International Conference on Software Engineering. ICSE ’16. 2016, pp. 120ś131 (cit. on pp. 31, 41, 43). 130 REFERENCES [Ste+16] Igor Steinmacher et al. łOvercoming Open Source Project Entry Barriers with a Portal for Newcomersž. In: Proceedings of the 38th International Conference on Software Engineering. ICSE ’16. ACM, 2016, pp. 273ś284 (cit. on p. 39). [Str19] Per Erik Strandberg. łEthical Interviews in Software Engineeringž. In: International Symposium on Empirical Software Engineering and Measurement 2019. ESEM ’19. 2019 (cit. on pp. 43, 44, 87). [Vel+14] Nicole Forsgren Velasquez et al. 2014 State of DevOps Report. https://puppet. com/resources/whitepaper/2014-state-devops-report, accessed in Aug 2019. 2014 (cit. on pp. 20, 21, 52). [Vla55] Gregory Vlastos. łOn Heraclitusž. In: The American Journal of Philology 76.4 (1955), pp. 337ś368 (cit. on p. 87). Guus van Waardenburg and Hans van Vliet. łWhen agile meets the enterprisež. [vv13] In: Information and Software Technology 55.12 (2013), pp. 2154ś2171 (cit. on pp. 40, 70). [WAL15a] Johannes Wettinger, Vasilios Andrikopoulos, and Frank Leymann. łAutomated Capturing and Systematic Usage of DevOps Knowledge for Cloud Applicationsž. In: 2015 IEEE International Conference on Cloud Engineering. IEEE, 2015, pp. 60ś65 (cit. on p. 14). [WAL15b] Johannes Wettinger, Vasilios Andrikopoulos, and Frank Leymann. łEnabling DevOps Collaboration and Continuous Delivery Using Diverse Application Environmentsž. In: On the Move to Meaningful Internet Systems. OTM 2015 Conferences. Springer International Publishing, 2015, pp. 348ś358 (cit. on p. 14). Michael Grant Waterman. łReconciling agility and architecture: a theory of [Wat14] agile architecturež. PhD thesis. Victoria University of Wellington, 2014 (cit. on pp. 83, 84). [Wen+20] Melissa Wen et al. łLeading successful government-academia collaborations using FLOSS and agile valuesž. In: Journal of Systems and Software 164 (2020), p. 110548 (cit. on p. 32). Frederick Taylor Winslow. The Principles of Scientific Management. Reprint of [Win14] 1911 Edition. Martino Fine Books, 2014 (cit. on p. 22). [WNA15] Michael Waterman, James Noble, and George Allan. łHow Much Up-front?: A Grounded Theory of Agile Architecturež. In: 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering. ICSE ’15. 2015, pp. 347ś357 (cit. on pp. 31, 70). Eoin Woods. łOperational: The Forgotten Architectural Viewž. In: IEEE Soft[Woo16] ware 33.3 (2016), pp. 20ś23 (cit. on pp. 13, 16, 17). Dale E. Yeatts and Cloyd Hyten. High-Performing Self-Managed Work Teams: [YH98] A Comparison of Theory to Practice. Sage Publications, 1998 (cit. on pp. 22, 23). [Yin09] Robert K. Yin. Case Study Research, Design and Methods. 4th. Sage Publications, 2009 (cit. on pp. 7, 39, 41, 46, 83, 86, 88). Hasan Yasar and Kiriakos Kontostathis. łWhere to Integrate Security Practices [YK16] on DevOps Platformž. In: International Journal of Secure Software Engineering (IJSSE) 7.4 (2016), pp. 39ś50 (cit. on p. 14).