Students' Perceptions of Distributed Pair Programming in an Upper-Level Undergraduate Software Engineering Course

HAYWARD, LAUREN JANECE. Students‘ Perceptions of Distributed Pair Programming in an Upper-Level Undergraduate Software Engineering Course. (Under the direction of Dr. Laurie Williams). Pair programming is a style of programming in which two programmers work together on the same software artifact. Pair programming has many demonstrated benefits including higher code quality and enhanced personal enjoyment. Unfortunately, students do not always find meeting together in the same physical location to pair program to be convenient or even possible. In this case, they may choose to pair program from distributed locations. To examine student perceptions about distributed pair programming, we conducted three studies with undergraduate software engineering students over two semesters. In our first study, all 49 students enrolled in the course had the option of using two distributed pair programming tools. We then analyzed their responses to an end-of-course retrospective that included questions about pair programming. We also analyzed their responses to a pair programming extra credit option. In our second study, we interviewed students from the same semester to more closely examine their perceptions about distributed pair programming. In our third study, we surveyed students the following semester about the benefits and drawbacks of distributed pair programming before and after trying distributed pair programming in a structured setting for 90 minutes. We found that students who pair program remotely perceive that they enjoy many of the same benefits as those who pair program while collocated, including higher code quality and personal enjoyment. Students are motivated to pair program remotely because of the feedback they receive from their partners, convenience and comfort of working from home, personal responsibilities that require them to work from home, and decreased scheduling issues of distributed pair programming compared to collocated pair programming. The main reason students described for not pair programming remotely was technical difficulties with the distributed pair programming tools. Students reported less productivity initially when pair programming remotely due to the learning curve of the tools. Students also listed scheduling conflicts and a preference for collocated work as other reasons for not pair programming remotely. Based on the results from the three studies described in this work, we contend that students in upper-level programming courses could find distributed pair programming beneficial as long as the teaching staff provides technical support for the distributed pair programming tool. To help alleviate the technical issues that may discourage students, we recommend giving students class time to learn how to install and use the distributed pair programming tool. Because of students‘ feedback in these studies, and prior work by Chong and Hurlbutt as well as Hanks, we feel using a distributed pair programming tool without explicit driver and navigator roles that allows for gesturing and the sharing of more than one file is beneficial. Students‘ Perceptions of Distributed Pair Programming in an Upper-Level Undergraduate Software Engineering Course by Lauren J. Hayward A thesis submitted to the Graduate Faculty of North Carolina State University in partial fulfillment of the requirements for the degree of Master of Science