TL; DR Pair programming might be great in the classroom.
A recent LinkedIn Poll I conducted seemed to indicate that most software developers (68%) collaborate on code using Asynchronous Code Reviews, aka Modern Code Reviews. At the same time, a nontrivial number of engineers (19%) collaborate using Pair Programming. This result led me to conclude that I need to continue to focus on Modern Code Reviews in my Software Engineering course and cover Pair Programming. However, I wanted to see if my conclusion is supported by any empirical research. I searched google scholar for papers that compared Solo, Pair, and Mob programming and found two recent studies on the subject.?
Comparing Participants' Brainwaves During Solo, Pair, and Mob Programming took a novel approach to comparing the three different programming styles by monitoring the participant brainwave! The subjects of the study were nine university students who participated in either a solo and mob or pair and mob programming session and whose brain activity was monitored during the session. The result of this small experiment showed that concentration was higher during group programming sessions, and was highest for pair programming, pair programming were also the least meditative, most stressful sessions, while solo was the least stressful, and difficulty was lower than working in a group when compared to working alone, lowest level of difficulty was reached in pair programming. When comparing the differences between pair and mob programming the researchers found that pair programming is more beneficial to participants.
领英推荐
Solo, pair or Mob programming: Which should be used in university? (PDF) used a more traditional approach which included a survey to collect qualitative data as well as a series of interviews to collect qualitative data. The researchers compared the three different programming styles by asking twenty students to solve problems in three different two-hour sessions, first as solo programmers, then in a pair and finally in a mob. The three approaches were then compared along three dimensions. Process and team management dealt with the ability to understand and adapt the approach, quality of the process, organization of work and level of confidence in success of the project. Implementation dealt with the ability to implement the method, work with the method, the experience, motivation, and level of satisfaction. Debugging dealt with detecting errors and finishing the program.? In the first dimension the highest results were for pair programming and the lowers for mob programming. In the second dimension there was no statistically significant difference, however pair programming scored consistently higher and mob programming consistently lower. In the third dimension, debugging, the highest scores were statistically significant and for pair programming with the lowest score being for solo programming. The global survey results with a confidence level of 90% scored pair programming highest and mob programming lowest. From the qualitative research pair programming is preferred because it is less stressful than solving a problem on your own and less distracting than working in a large group.
Both experiments were small in scale and more evidence is necessary to draw a strong conclusion, however this work does seem to indicate that pair programming might work well in software programming courses. I plan to incorporate it further into my software engineering course the next time I teach it.
Principal Staff Software Engineer at LinkedIn | Author: "Code Simplicity" and "Understanding Software”
2 年I would have loved this as a student, actually. Especially since I learned in C using some terrible compiler that seemed to print only the most cryptic of error messages. I spent 30 hours trying to get 30 lines of code working, once upon a time, just sitting in my house with nobody to ask questions to.
Senior Staff Engineer at LinkedIn
2 年I’m a huge advocate for pair programming. Especially when learning. Folks who haven’t had the opportunity to learn this way, are missing out.