Pair Programming
Environment
• 1 computer, 2 monitors, 2 mouses, 2 keyboards
• Rotate typer
• Remote
Design quality
• More attention on errors, less bugs
• More discussions on solutions
• Gambiarras not allowed
• Different perspectives and sources of information
Ownership
• Truck Factor > 1
• All team members know what’s going on
• No single point of failure
Productivity
• Pairs keep focus
• People are more afraid to interrupt
Team
• Everybody feels responsible
• We build together, we maintain together
• 95% more satisfaction
• Shared goals
Knowledge Sharing
• I know, I teach
• Develop patience
• Develop communication skills
• I don’t know, I learn: humbleness
When pair does not work
• Repetitive and non-thinking tasks
• Competitive environments
• People don’t want to share their knowledge
• Management does not encourage the practice
Variations
• expert-expert
• expert-novice
• novice-expert
Williams, L., Debunking the Nerd Stereotype with Pair Programming (Broadening Participation in Computing Series), IEEE Computer, to appear May 2006.
Ho, C., Raha, S., Gehringer, E,, Williams, L., Sangam: A Distributed Pair Programming Plug-in for Eclipse , Eclipse Technology Exchange (Workshop) at the Object-Oriented Programming, Systems, Languages, and
Applications (OOPSLA) 2004.
Katira, N., Williams, L., Osborne, J., Towards Increasing the Compatibility of Student Pair Programmers , International Conference on Software Engineering (ICSE) 2005.
Katira, Neha, Williams, Laurie, Wiebe, Eric, Miller, Carol, Balik, Suzanne, Gehringer, Ed, On Understanding Compatibility of Student Pair Programmers, ACM Technical Symposium on Computer Science Education,
SIGCSE 2004, pp. 7-11.
Srikanth, H., Williams, L., Wiebe, E., Miller, C., Balik, S., On Pair Rotation in the Computer Science Course , Conference on Software Engineering Education and Training 2004, pp. 144-149.
Williams, Laurie and Kessler, Robert. Pair Programming Illuminated, Addison Wesley, 2003.
Wiebe, E., Williams, L., Petlick, J., Nagappan, N., Balik, S., Miller, C., Ferzli, M. Pair Programming in Introductory Programming Labs , American Society for Engineering Education (ASEE) 2003.
Williams, L., McDowell, C., Fernald, J., Werner, L., Nagappan, N. Building Pair Programming Knowledge Through a Family of Experiments , IEEE International Symposium on Empirical Software Engineering (ISESE)
2003, pp. 143-152.
Stotts, D., Williams, L., Nagappan, N., Baheti, P., Jen, D., Jackson, A., Virtual Teaming: Experiments and Experiences with Distributed Pair Programming, Extreme Programming/Agile Universe 2003.
Nagappan, N., Williams, L., Wiebe, E., Miller, C., Balik, S., Ferzli, M., Petlick, M., Pair Learning: With an Eye Toward Future Success, Extreme Programming/Agile Universe 2003.
Nagappan, N., Williams, L., Ferzli, M., Weibe, E., Yang, K., Miller, C., Balik, S., Improving the CS1 Experience with Pair Programming, ACM Technical Symposium on Computer Science Education, SIGCSE 2003, pp.
359-362.
Williams, L., Wiebe, E., Yang, K., Ferzli, M., Miller, C., In Support of Pair Programming in the Introductory Computer Science CourseComputer Science Education, September 2002.
Williams, L., Yang, K., Wiebe, E., Ferzli, M., Miller, C., Pair Programming in an Introductory Computer Science Course:  Initial Results and Recommendations, OOPSLA Educator's Symposium 2002, November 2002.
Baheti, P., Williams, L., Gehringer, E., Stotts, D., Exploring Pair Programming in Distributed Object-Oriented Team Projects, OOPSLA Educator's Symposium 2002, November 2002.
Ferzli, M., Wiebe, E., Williams, L., Paired Programming Project: Focus Groups with Teaching Assistants and Students, NCSU Technical Report, TR-2002-16, November 25, 2002.
Baheti, P., Williams, L., Gehringer, E., Stotts, D., and Smith, J., Distributed Pair Programming: Empirical Studies and Supporting Environments, UNC-CH Technical Report TR02-010, March 15, 2002.
Williams, Laurie, Kessler, Robert R., Experimenting with Industry's "Pair-Programming" Model in the Computer Science Classroom, Computer Science Education, March 2001. 
Williams, Laurie.  Integrating Pair Programming into a Software Development Process,Conference of Software Engineering Education and Training 2001.  
Williams, Laurie and Upchurch, Richard.  In Support of Student Pair Programming, 2001 SIGCSE Conference on Computer Science Education, Charlotte, NC, pp. 327-331,February 2001.
Williams, Laurie and Kessler, Robert R. >  The Effects of “Pair-Pressure” and “Pair-Learning” on Software Engineering Education.  Conference of Software Engineering Education and Training 2000.  
Williams, Laurie and Kessler, Robert R., All I Really Need to Know about Pair Programming I Learned In Kindergarten, Communications of the ACM, May 2000.
Williams, L.,  The Collaborative Software Process.  PhD Dissertation, 2000.
https://collaboration.csc.ncsu.edu/laurie/pair.html
Pair Programming
Let’s do it?

Pair programming

  • 1.
  • 3.
    Environment • 1 computer,2 monitors, 2 mouses, 2 keyboards • Rotate typer • Remote
  • 4.
    Design quality • Moreattention on errors, less bugs • More discussions on solutions • Gambiarras not allowed • Different perspectives and sources of information
  • 5.
    Ownership • Truck Factor> 1 • All team members know what’s going on • No single point of failure
  • 6.
    Productivity • Pairs keepfocus • People are more afraid to interrupt
  • 7.
    Team • Everybody feelsresponsible • We build together, we maintain together • 95% more satisfaction • Shared goals
  • 8.
    Knowledge Sharing • Iknow, I teach • Develop patience • Develop communication skills • I don’t know, I learn: humbleness
  • 9.
    When pair doesnot work • Repetitive and non-thinking tasks • Competitive environments • People don’t want to share their knowledge • Management does not encourage the practice
  • 10.
  • 11.
    Williams, L., Debunking theNerd Stereotype with Pair Programming (Broadening Participation in Computing Series), IEEE Computer, to appear May 2006. Ho, C., Raha, S., Gehringer, E,, Williams, L., Sangam: A Distributed Pair Programming Plug-in for Eclipse , Eclipse Technology Exchange (Workshop) at the Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) 2004. Katira, N., Williams, L., Osborne, J., Towards Increasing the Compatibility of Student Pair Programmers , International Conference on Software Engineering (ICSE) 2005. Katira, Neha, Williams, Laurie, Wiebe, Eric, Miller, Carol, Balik, Suzanne, Gehringer, Ed, On Understanding Compatibility of Student Pair Programmers, ACM Technical Symposium on Computer Science Education, SIGCSE 2004, pp. 7-11. Srikanth, H., Williams, L., Wiebe, E., Miller, C., Balik, S., On Pair Rotation in the Computer Science Course , Conference on Software Engineering Education and Training 2004, pp. 144-149. Williams, Laurie and Kessler, Robert. Pair Programming Illuminated, Addison Wesley, 2003. Wiebe, E., Williams, L., Petlick, J., Nagappan, N., Balik, S., Miller, C., Ferzli, M. Pair Programming in Introductory Programming Labs , American Society for Engineering Education (ASEE) 2003. Williams, L., McDowell, C., Fernald, J., Werner, L., Nagappan, N. Building Pair Programming Knowledge Through a Family of Experiments , IEEE International Symposium on Empirical Software Engineering (ISESE) 2003, pp. 143-152. Stotts, D., Williams, L., Nagappan, N., Baheti, P., Jen, D., Jackson, A., Virtual Teaming: Experiments and Experiences with Distributed Pair Programming, Extreme Programming/Agile Universe 2003. Nagappan, N., Williams, L., Wiebe, E., Miller, C., Balik, S., Ferzli, M., Petlick, M., Pair Learning: With an Eye Toward Future Success, Extreme Programming/Agile Universe 2003. Nagappan, N., Williams, L., Ferzli, M., Weibe, E., Yang, K., Miller, C., Balik, S., Improving the CS1 Experience with Pair Programming, ACM Technical Symposium on Computer Science Education, SIGCSE 2003, pp. 359-362. Williams, L., Wiebe, E., Yang, K., Ferzli, M., Miller, C., In Support of Pair Programming in the Introductory Computer Science CourseComputer Science Education, September 2002. Williams, L., Yang, K., Wiebe, E., Ferzli, M., Miller, C., Pair Programming in an Introductory Computer Science Course:  Initial Results and Recommendations, OOPSLA Educator's Symposium 2002, November 2002. Baheti, P., Williams, L., Gehringer, E., Stotts, D., Exploring Pair Programming in Distributed Object-Oriented Team Projects, OOPSLA Educator's Symposium 2002, November 2002. Ferzli, M., Wiebe, E., Williams, L., Paired Programming Project: Focus Groups with Teaching Assistants and Students, NCSU Technical Report, TR-2002-16, November 25, 2002. Baheti, P., Williams, L., Gehringer, E., Stotts, D., and Smith, J., Distributed Pair Programming: Empirical Studies and Supporting Environments, UNC-CH Technical Report TR02-010, March 15, 2002. Williams, Laurie, Kessler, Robert R., Experimenting with Industry's "Pair-Programming" Model in the Computer Science Classroom, Computer Science Education, March 2001.  Williams, Laurie.  Integrating Pair Programming into a Software Development Process,Conference of Software Engineering Education and Training 2001.   Williams, Laurie and Upchurch, Richard.  In Support of Student Pair Programming, 2001 SIGCSE Conference on Computer Science Education, Charlotte, NC, pp. 327-331,February 2001. Williams, Laurie and Kessler, Robert R. >  The Effects of “Pair-Pressure” and “Pair-Learning” on Software Engineering Education.  Conference of Software Engineering Education and Training 2000.   Williams, Laurie and Kessler, Robert R., All I Really Need to Know about Pair Programming I Learned In Kindergarten, Communications of the ACM, May 2000. Williams, L.,  The Collaborative Software Process.  PhD Dissertation, 2000. https://collaboration.csc.ncsu.edu/laurie/pair.html
  • 12.