Enhancing Learnability of Pair Programming Practice When Introducing Novices
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Enhancing Learnability of Pair Programming Practice when Introducing Novices DIPLOMOVÁ PRÁCE Pavel Januš Brno, jaro 2014 Declaration I declare that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Advisor: Bruno Rossi, PhD. i Acknowledgement I would like to express my gratitude to my supervisor Bruno Rossi for leading me through the creation of my diploma thesis. I am grateful to him for stimulating discus- sions about the content of the thesis and supporting developing of my own ideas. I also want to appreciate his provided time, knowledge, valuable information and his patience and willingness. I express special thanks to my parents for their understanding, and my girlfriend for her support. ii Abstract The current thesis focuses on understanding the mechanisms that lead novice develop- ers to better learn the Pair Programming (PP) practice, one of the pillars of Agile Metho- dologies. The main aim is to provide theoretical-grounded suggestions that could help to improve the process by which novices are introduced to PP and start mastering it. To contextualize PP, we review the emergence of Agile development methodology com- pared to more heavy-weight methodologies and we evaluate the importance of PP as one of the key practices of Extreme Programing (XP). We then delve into empirical stu- dies that investigate the efficacy of PP in software development and into the identifica- tion of the state of the art in terms of the introduction of PP to novices. In this context, we identify problematic issues that emerge during the learning process of the PP prac- tice and that could hinder its adoption. In the analytical part of the thesis, we identify the mechanisms that could be better ap- plied to enhance learnability of PP. We chose an educational model, Bloom's Taxonomy (BT) of learning domains, to frame the discussion about the actions that can be applied for the improvement of PP learnability. Such framework and recommendations can be applied in future works to when introducing new developers to Agile Methodologies. Keywords Pair Programming, Agile Methodologies, Extreme Programming, Bloom’s Taxonomy, introducing to novices, empirical studies. iii Content 1 Introduction ................................................................................................................................................... 1 1.1 Motivation............................................................................................................................................... 1 1.2 Objectives ................................................................................................................................................ 2 1.3 Problem Statement ............................................................................................................................. 2 1.4 Main Thesis Contribution ................................................................................................................. 3 1.5 Thesis Structure ................................................................................................................................... 4 1.6 Research Methodology ...................................................................................................................... 5 2 Traditional Software Development ...................................................................................................... 7 2.1 History ...................................................................................................................................................... 7 2.1.1 Software Crisis .............................................................................................................................. 7 2.2 Life-cycle Models ................................................................................................................................. 9 2.2.1 Code Fix Model .............................................................................................................................. 9 2.2.2 Waterfall Model ............................................................................................................................ 9 2.2.3 Spiral Model ................................................................................................................................ 10 2.3 Object Oriented Approach ............................................................................................................. 11 2.3.1 RUP Methodology ..................................................................................................................... 12 3 Agile Software Development ................................................................................................................ 14 3.1 Characteristics ................................................................................................................................... 14 3.2 Agile Manifesto .................................................................................................................................. 15 3.3 Traditional and Agile Comparison ............................................................................................. 16 3.4 Summary of Agile Methodologies ............................................................................................... 18 3.4.1 SCRUM ........................................................................................................................................... 19 3.4.2 Feature-driven Development ............................................................................................... 20 3.4.3 Lean Development .................................................................................................................... 20 3.4.4 Test-driven Development ...................................................................................................... 21 3.4.5 Extreme Programming ........................................................................................................... 21 4 Pair Programming .................................................................................................................................... 26 4.1 Introduction and Practices ............................................................................................................ 26 4.4.1 Pair Jelling .................................................................................................................................... 28 4.4.2 Pair Pressure .............................................................................................................................. 29 4.2 The Myths ............................................................................................................................................ 30 iv 4.3 Empirical Studies .............................................................................................................................. 32 4.3.1 Benefits ......................................................................................................................................... 33 4.3.2 Weakness/Problems ............................................................................................................... 37 4.3.3 Partner Finding .......................................................................................................................... 40 5 Learnability of Pair Programming ..................................................................................................... 44 5.1 Current Problems ............................................................................................................................. 44 5.2 Current State ....................................................................................................................................... 46 6. Bloom’s Taxonomy of Learning Domains ....................................................................................... 50 6.1 Bloom’s Taxonomy in Software Engineering ......................................................................... 51 6.2 Course Improvement....................................................................................................................... 53 6.3 Knowledge Level of Novices and Experts ................................................................................ 53 6.4 Knowledge Assessment .................................................................................................................. 54 6.5 Assignment Assessment and Testing ........................................................................................ 58 7 Proposed Solutions .................................................................................................................................. 60 7.1 Applying Bloom’s Taxonomy ....................................................................................................... 60 7.2 Recommendations ............................................................................................................................ 63 8 Conclusion and Future Works ............................................................................................................. 67 Literature references .................................................................................................................................