Anecdotal and qualitative evidence from industry indicates that two programmers working side by side at one computer, collaborating on the same design, algorithm, code, or test, perform substantially better than the two working alone. Statistical evidence has shown that programmers perform better when following a defined, repeatable process such as the Personal Software ProcessSM (PSPSM). Bringing these two ideas together, the Collaborative Software ProcessSM (CSP SM) has been formulated. The CSP is a defined, repeatable process for two programmers working collaboratively. The CSP is an extension of the PSP, and it relies upon the foundation of the PSP.; To validate the effectiveness of CSP, an experiment was run in 1999 with approximately 40 senior Computer Science students at the University of Utah. All students learned both the CSP and the PSP. Two-thirds of the students worked in two-person collaborative teams using the CSP to develop their programming assignments. The other students worked independently using the PSP to develop the same assignments. Additionally, a significant amount of input and confirmation from professional engineers who practice collaborative programming was factored into the research.; The research contributed a defined, repeatable process, the CSP, for collaborative programming pairs. The experiment validated the following quantitative findings about collaborative teams using the CSP: (1) Collaborative pairs spend approximately 15% more time than do individuals on the same task. This additional time, however, is not statistically significant. (2) Collaborative pairs achieve a higher quality level for programming products. Pairs had 15% less defects in their code. The higher quality level is statistically significant. (3) Considering the long-term field support savings of higher quality programming products, collaborative programming is cheaper for an organization than individual programming. (4) Consistently, 95% of collaborative programmers asserted that they enjoy their work more and are more confident in their work than when they program alone.; Additionally, the research resulted in many qualitative findings about collaborative programming. Most notable are the positive effects of increased problem-solving skills, better designs, augmented learning, and improved team building for collaborative pairs. Organizations in which the engineers consistently switch partners also note increased communication, enhanced teamwork, and reduced product risk. |