Programming without coding technology

Please help improve it or discuss these issues on programming without coding technology talk page. The neutrality of this article is disputed. Relevant discussion may be found on the talk page.

This article relies too much on references to primary sources. Pair programming is an agile software development technique in which two programmers work together at one workstation. Pair programming increases the man-hours required to deliver code compared to programmers working individually. In an attempt to share goals and plans, the programmers must overtly negotiate a shared course of action when a conflict arises between them. In doing so, they consider a larger number of ways of solving the problem than a single programmer alone might do. This significantly improves the design quality of the program as it reduces the chances of selecting a poor method. Knowledge is constantly shared between pair programmers, whether in the industry or in a classroom, many sources suggest that students show higher confidence when programming in pairs, and many learn whether it be from tips on programming language rules to overall design skill.

Did not find what they wanted? Try here

Pair programming allows team members to share problems and solutions quickly making them less likely to have hidden agendas from each other. This helps pair programmers to learn to communicate more easily. This raises the communication bandwidth and frequency within the project, increasing overall information flow within the team. There are both empirical studies and meta-analyses of pair programming. The empirical studies tend to examine the level of productivity and the quality of the code, while meta-analyses may focus on biases introduced by the process of testing and publishing. A meta-analysis found pairs typically consider more design alternatives than programmers working alone, arrive at simpler more maintainable designs, and catch design defects earlier.

However, it raised concerns its findings may have been influenced by “signs of publication bias among published studies on pair programming”. Although pair programmers may complete a task faster than a solo programmer, the total number of man-hours increases. A manager would have to balance faster completion of the work and reduced testing and debugging time against the higher cost of coding. The relative weight of these factors can vary by project and task. The benefit of pairing is greatest on tasks that the programmers do not fully understand before they begin: that is, challenging tasks that call for creativity and sophistication, and for novices as compared to experts. On simple tasks, which the pair already fully understands, pairing results in a net drop in productivity.

It may reduce the code development time but also risks reducing the quality of the program. Disengagement may present as one of the members physically withdraws away from the keyboard, accesses email, or even falls asleep. The “Watch the Master” phenomenon can arise if one member is more experienced than the other. This can easily lead to disengagement. Audio chat programs or VoIP software could be helpful when the screen sharing software does not provide two-way audio capability. Integrating pair programming into a software development process.