Helping Developers to Help Each Other: a Technique to Facilitate Understanding Among Professional Software Developers
Total Page:16
File Type:pdf, Size:1020Kb
Helping developers to help each other: a technique to facilitate understanding among professional software developers Gail Ollis Faculty of Science and Technology Bournemouth University August 2019 A thesis submitted in partial fulfilment of the requirements for the degree of Doctor of Philosophy This copy of the thesis has been supplied on condition that anyone who consults it is understood to recognise that its copyright rests with its author and due acknowledgement must always be made of the use of any material contained in, or derived from, this thesis. 2 Abstract Helping developers to help each other: a technique to facilitate understanding among professional software developers Gail Ollis Much of a professional software developer’s work involves amending or extending pre-existing software; creating new software from scratch represents only a small proportion of their time. Even in a brand new project they still need to make sense of work others have done in the emerging software system. This research addresses how developers are helped or hindered in their own daily tasks by the actions of their peers. The literature commonly focuses on a specific aspect of the work such as code comprehension or the processes by which a project is run. This research instead takes a holistic view that considers all the activities involved in the job, but from a single uniting perspective: rather than conventional measures such as coding errors or delivery timescales, the criterion here is how a developer personally experiences their own productivity to be affected by their peers. The research used one-to-one interviews to identify common behaviours that help or hinder fellow software developers. Experienced software developers discussed team- friendly (and otherwise) behaviours across the breadth of their typical workplace tasks. The key themes to emerge from this qualitative data make a contribution to the understanding of software development by giving a comprehensive, developer’s- eye view of behaviours that help or hinder them across the whole range of tasks that fill their days. These themes laid the foundation for a practical application of the research. Techniques which had proved engaging and useful in the interviews were adapted into a continuing professional development workshop designed to encourage team discussion on issues of local resonance, selected by participants from those which the interviews had shown to be important. The topics resonated in a way which reinforces the validity of the interview findings. Participants enthusiastically identified useful actions for their own teams and would recommend the workshop to others. They also saw potential for future development into different workplace scenarios. The workshop is just one application of the understanding contributed by the 3 research. The principles of good practice from the human perspective that have been identified also offer an empirical foundation that could be of practical usein appraisals, recruitment and any other scenario which requires an understanding of software developers not just as computer programmers but as people. 4 Contents 1 Introduction 18 1.1 Programmers are people ......................... 19 1.2 Terminology ................................ 19 1.3 Software engineering is complex ..................... 20 1.4 Research questions ............................ 21 1.5 Outline of the thesis ........................... 23 2 The nature of software development 25 2.1 Introduction ................................ 26 2.2 Software as a joint enterprise ...................... 26 2.3 Software as art, craft or science ..................... 27 2.4 Software as a document ......................... 29 2.5 Software as a measurable entity ..................... 32 2.5.1 Objective measurements ..................... 33 2.5.2 Subjective measurements ..................... 34 2.6 Software development as a social activity ................ 36 2.7 Improving software development ..................... 37 2.7.1 Programmer education ...................... 37 2.7.2 Software process improvement .................. 38 2.7.3 Orthogonal technical and social practices ............ 39 2.8 Conclusion ................................. 40 3 Research methodology 42 3.1 Introduction ................................ 43 3.2 Research philosophy ........................... 45 3.3 Exploratory Study: Eliciting programmer perceptions of peer behaviour 46 3.3.1 Participant demographics .................... 46 3.3.2 Elicitation ............................. 47 3.3.3 Analysis of common themes ................... 50 3.4 Evaluation Study: Testing practical applications ............ 51 3.4.1 Target audience .......................... 52 5 3.4.2 Working environment ...................... 52 3.4.3 Delivery of material ....................... 53 3.4.4 Facilitation of discussion ..................... 55 3.4.5 Evaluation of delivery ...................... 57 3.4.6 Evaluation of usefulness ..................... 57 3.5 Reflexivity ................................. 58 3.6 Conclusion ................................. 59 4 Exploratory study: Peer impact on software developers 60 4.1 Introduction ................................ 61 4.2 Participants ................................ 62 4.3 Materials ................................. 63 4.3.1 Criteria for card sort materials ................. 63 4.3.2 Pilot study of card sorting task ................. 64 4.3.3 Card format ............................ 65 4.4 Procedure ................................. 65 4.5 Analysis .................................. 67 4.6 Conclusion ................................. 68 5 Findings of the Exploratory Study 69 5.1 Introduction ................................ 70 5.2 Card sort results ............................. 70 5.3 Overview of interview themes ...................... 72 5.4 The Reviewing element: live communication .............. 74 5.4.1 Shared understanding ...................... 74 5.4.2 Conformity ............................ 75 5.4.3 Navigation ............................ 76 5.5 The Chronicling element: development as documentation ....... 77 5.5.1 Meaningful identifiers ...................... 78 5.5.2 Comments ............................. 80 5.5.3 Logging .............................. 81 5.5.4 Commit messages ......................... 83 5.5.5 Automation ............................ 83 5.6 The Attitude element ........................... 84 5.6.1 Openness to ideas ........................ 84 5.6.2 Attachment ............................ 85 5.6.3 Mature, professional conduct .................. 85 5.6.4 Attributions ............................ 86 5.7 Business implications ........................... 88 5.7.1 Consequences for business .................... 88 5.7.2 Confounding and mitigating factors ............... 89 6 5.7.3 Value of the reflective discussion ................ 90 5.8 Discussion ................................. 91 5.9 Personal reflections of the researcher .................. 93 5.10 Conclusion ................................. 95 6 Evaluation study: Peer impact workshops for software developers 96 6.1 Introduction ................................ 97 6.2 Influences from the Exploratory Study ................. 97 6.3 Pilot study 1: Card materials in group discussions ........... 98 6.3.1 Participants ............................ 98 6.3.2 Materials ............................. 99 6.3.3 Procedure ............................. 99 6.3.4 Discussion ............................. 99 6.3.5 Conclusion ............................ 100 6.4 Pilot study 2: Testing the logistics ................... 101 6.4.1 Participants ............................ 101 6.4.2 Materials ............................. 101 6.4.3 Procedure ............................. 101 6.4.4 Discussion ............................. 102 6.4.5 Conclusion ............................ 102 6.5 Pilot study 3: Testing with target audience ............... 103 6.5.1 Participants ............................ 103 6.5.2 Materials: choosing quotation cards ............... 103 6.5.3 Procedure ............................. 105 6.5.4 Discussion ............................. 106 6.5.5 Conclusion ............................ 107 6.6 Final design for the Evaluation Study .................. 107 6.6.1 Participants ............................ 107 6.6.2 Materials ............................. 108 6.6.3 Procedure ............................. 110 6.6.4 Company B variant of the procedure .............. 113 6.7 Conclusion ................................. 114 7 Findings of the Evaluation Study 115 7.1 Introduction ................................ 116 7.2 Pre-workshop questionnaire findings .................. 116 7.2.1 Stage of team development (Tuckman questionnaire) ..... 117 7.2.2 Participant demographics .................... 118 7.3 Feedback and observations on workshop procedure .......... 120 7.3.1 Participant feedback on procedure ............... 120 7.3.2 Researcher observations on procedure .............. 124 7 7.4 Feedback on usefulness of the workshop ................. 128 7.4.1 Prospective reuse ......................... 128 7.4.2 Broaching discussion ....................... 129 7.4.3 Behaviour change in self and others ............... 130 7.4.4 Prospective recommendations .................. 132 7.4.5 Suggestions for other uses .................... 133 7.5 Discussion ................................. 135 7.5.1 Participant characteristics .................... 135 7.5.2 Workshop procedure ....................... 138 7.5.3 Usefulness of workshop .....................