Amtmann, K. (2016). Analysing the effects of pair programming on knowledge transfer between students in academic software development [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/158534
Fallstudie; Paarprogrammierung; Paar-Konstellationen; Lernprozess; Wissen in Software-Engineering
de
Case study; pair programming; pair combinations; learning process; knowledge in software engineering
en
Abstract:
Es gibt zahlreiche Herausforderungen im Bereich der Software-Entwicklung. Um mit diesen umzugehen, werden staendig vorhandene Methoden adaptiert sowie neue Methoden entwickelt. Qualitätssicherung und Wissenstransfer sind dabei zwei konkrete Herausforderungen, die sowohl im industriellen als auch im akademischen Umfeld haeufig auftreten. Die Paarprogrammierung ist eine moegliche Technik, um mit diesen zwei Herausforderungen umzugehen. Im industriellen Umfeld wurde diese Technik oft untersucht. Die bisherigen Studien im akademischen Umfeld konzentrieren sich auf die Entwicklung von Software mit klar definierten Zielen in einer laboraehnlichen Umgebung. Sie untersuchen allerdings keine grossen, fortlaufend entwickelten Software-Produkte. Solche bieten aber andere Herausforderungen und Lernmoeglichkeiten, da zum Beispiel komplexere Technologien zum Einsatz kommen. Es wurde daher eine umfangreiche Produktentwicklung als Umfeld fuer eine Fallstudie ausgewaehlt, um die Auswirkungen von Paarprogrammierung im akademischen Umfeld weiter zu untersuchen. Die vorliegende Studie untersuchte den Entwicklungsprozess eines Software-Produktes, an dem etwa 20 Studenten mit unterschiedlichen Vorkenntnissen beteiligt waren. Den Studenten wurden Partner fuer die Paarprogrammierung zugeordnet. Dabei arbeiteten sie zum Teil mit gleich, aber auch mit unterschiedlich qualifizierten Partnern. In unregelmaessigen Abstaenden wurden die Partner gewechselt. Zum einen wurde der Einfluss des Qualifikationsniveaus der Studenten auf die gemeinsame Arbeit untersucht. Zum anderen wurden die Auswirkungen von Paarprogrammierung im Lernprozess analysiert. Dabei stuetzt sich die Studie auf Einzel- und Gruppeninterviews, teilnehmende Beobachtung sowie Untersuchung der Artefakte aus der Softwareentwicklung. Die Ergebnisse legen nahe, dass der entwickelte Code eine hoehere Qualität hat, wenn mindestens ein besser qualifizierter Student Teil des Paares ist. Weiters konnte gezeigt werden, dass vier für die Software-Entwicklung wichtige soziale Kompetenzen durch Paarprogrammierung gefoerdert wurden. Auch Fachkompetenzen wurden unter anderem durch Erklaerungen vom Partner erworben. Wissen wurde in jede moegliche Richtung weitergegeben, zum Teil auch von weniger zu mehr qualifizierten Studenten. Es erwies sich als vorteilhaft, dass die Partner immer wieder wechselten. Eine Liste mit Vorschlaegen, wie Paarprogrammierung erfolgreich in Studenten-Projekten umgesetzt werden kann, wurde basierend auf diesen Ergebnissen erarbeitet.
Development of software faces many challenges and is constantly adopting or devising new methods to deal with these challenges. Two particular challenges that occur frequently in both an industrial and an educational setting are software quality assurance and knowledge transfer. A technique that addresses these issues and has often been examined in industrial settings is pair programming. So far, studies in educational settings do not take continuously developed software products into consideration, but focus on laboratory type of setups with clearly defined objectives when analysing the effects of pair programming. A large continuously developed software product provides other challenges and learning opportunities, since for example more complex technolo- gies are used than for small programs. Therefore, such a setting was chosen as a unique case to further investigate the effects of pair programming in an educational environment. The examined software product is developed by approximately 20 students on various previous development skill levels. Therefore, several pairs were formed, some consisting of students with different and some with same skill levels. The pair assignment was changed frequently. In order to gain insight into the used programming technique for the software product, various data collection methods were used: participant observation, one-on-one interviews, group interviews as well as artefacts from the software development. On the one hand, the influence of the skill level of the students concerning how well they work together was investigated. On the other hand, the effects of pair programming on the learning process were analysed. The results suggested that pairs which consisted of at least one better skilled student tend to produce higher code quality. Four important soft skills for software development could be encouraged through using pair programming. Also, hard skills were gained, including through explanations by the coding partners. It could be shown that knowledge transfer happened in all possible directions, even from less to more skilled students. The rotation of the pairs turned out to be very useful. Based on these results a list of suggestions how to successfully use pair programming in student software developments was developed.