硫磺是什么| 水红色是什么颜色| 武士是什么意思| 最大的淡水湖是什么湖| 红头文件是什么意思| 小孩放屁很臭是什么原因| 色令智昏是什么意思| playboy是什么牌子| 天乙是什么意思| 什么叫焦虑症| 骨质增生挂什么科| 佛道是什么意思| 乐五行属性是什么| 过敏性哮喘吃什么药| 茶麸是什么东西| 头孢是治疗什么的| 怀孕初期吃什么好| mdr是什么意思| 探病买什么水果| 引力是什么| 双花红棍什么意思| 二月十六是什么星座| 吃苦荞有什么好处| 小排畸主要检查什么| 699是什么意思| 炖排骨什么时候放盐| 什么狗聪明| 截单是什么意思| 吸顶灯什么牌子的好| 缠头是什么意思| 宫外孕什么症状| 姿态万千的意思是什么| 快递属于什么行业| 新生儿什么时候吃ad| 半边屁股疼是什么原因| 老鹰代表什么生肖| 为什么耳屎是湿的| 吃什么水果养胃| 土豆淀粉能做什么美食| 什么星空| 周公解梦掉牙齿意味着什么| cima是什么证书| 你的美丽让你带走是什么歌| 实拍是什么意思| 贝壳像什么| 钙化斑是什么意思| 项羽为什么会失败| 什么样的防晒霜比较好| 3月13日是什么星座| 小孩急性肠胃炎吃什么药| 什么是腹式呼吸的正确方法| 山药不能和什么一起吃| 周公解梦梦见蛇是什么意思| 炸膛什么意思| 嗓子发炎肿痛吃什么药| 月字五行属什么| 耳根子软是什么意思| 05是什么生肖| 跑完步头疼是为什么| 胃酸分泌过多是什么原因造成的| 烟嗓是什么意思| 红烧肉用什么肉| 世界八大奇迹分别是什么| 收支两条线是什么意思| 为什么香蕉不能放冰箱| 早上起来手麻是什么原因| 豆包是什么意思| 正确的三观是什么| 虾不能和什么东西一起吃| 胆囊炎不能吃什么| 世界上最硬的东西是什么| 最小的动物是什么| 氯雷他定是什么药| 什么好| 陆地上最大的动物是什么| 为什么总是拉肚子| 背动态心电图要注意什么| 你是什么动物| 梦到下雪是什么征兆| 先锋霉素又叫什么| hdr是什么拍照功能| 周公吐哺天下归心是什么意思| 说话口臭是什么原因引起的| 牛郎织女是什么意思| 打边炉是什么意思| 惊厥是什么原因引起的| 小三阳吃什么药能转阴| 什么药治肠炎效果最好| 眼睛有眼屎是什么原因引起的| 忆苦思甜下一句是什么| 胃ct能检查出什么病| 脂肪瘤吃什么药| 2006属什么生肖| 玻璃是什么垃圾| 一什么车厢| pink是什么颜色| 剪不断理还乱什么意思| 坚强后盾是什么意思| ck属于什么档次| ost什么意思| 骨髓瘤是什么原因引起的| 右肩膀和胳膊疼痛是什么原因| 知了为什么要叫| 缺钾最明显的症状是什么| 交接是什么意思| 什么食物含叶黄素最多| 属猪的护身佛是什么佛| 氧化铜什么颜色| gg是什么品牌| 为什么月经期有性冲动| 曲安奈德针治疗什么| 合成立方氧化锆是什么| 口舌是什么意思| 后天是什么日子| 一般细菌涂片检查是查什么| 为什么16岁不能吃维生素B| 好记性不如烂笔头是什么意思| 开救护车需要什么条件| 什么是肝癌| 大麦是什么粮食| 松茸是什么东西| 地区和市有什么区别| 荡是什么意思| 口腔溃疡吃什么水果好得快| 枫字五行属什么| 膝盖小腿酸软无力是什么原因| 旺五行属什么| 72年属什么的生肖| 什么是登革热病| blissful是什么意思| eos是什么| 舌头上有齿痕是什么原因| 经常手麻是什么原因| 大象鼻子为什么那么长| 什么食物含钙| 养老保险什么时候开始交| 纸包鸡什么意思| 火气太旺是什么原因| 什么是造影| 切克闹是什么意思| 倒打一耙的前一句是什么| 脸上过敏是什么症状| 1964年出生属什么| 梦见和婆婆吵架是什么意思| 怀孕的人梦见蛇是什么意思| 露营需要准备什么东西| 牙龈起包是什么原因| 克山病是什么病| 胰腺分泌什么| 贫血有什么危害| 真丝和桑蚕丝有什么区别| 血小板为什么会高| 龙井茶什么季节喝最好| 正月初二是什么星座的| 为什么晚上不能倒垃圾| 打嗝是什么病| 摧残是什么意思| 为什么下雨会打雷| 何五行属性是什么| 浪琴手表什么档次| 出类拔萃什么意思| 山药什么季节成熟| 茵陈是什么| 白带是什么样子| 夏天喝绿茶有什么好处| 屠苏指的是什么| 白细胞低代表什么意思| 蟹爪兰用什么肥料最好| 病危通知书意味着什么| 方言是什么意思| 丹参有什么功效| 圈癣是什么引起的| 割包皮去医院挂什么科| 拔牙后需要注意什么| 什么是行政拘留| 做梦梦见蛇是什么意思| 石人工念什么| 短效避孕药什么时候吃| volume什么意思| 腰疼不能弯腰是什么原因引起的| 人为什么怕死| 什么鱼最好养不容易死| 蚂蚁代表什么风水| mol是什么意思| 狗咬到什么程度需要打针| 香蕉为什么是弯的| 10.5号是什么星座| 阴虚火旺吃什么中药| 白居易是诗什么| 右眼皮一直跳是什么预兆| 高铁座位为什么没有e座| 痛风吃什么蔬菜| 早上起床腰酸痛是什么原因| 牛肉炒什么菜| 主见是什么意思| 水瓜壳煲水有什么功效| 鳞状上皮化生什么意思| 眼睛疲劳干涩用什么眼药水| 微笑是什么| 肺结节看什么科| charleskeith什么牌子| 为什么要坐月子| 农历12月是什么月| rpa是什么| 吹弹可破的意思是什么| 什么什么什么心| 断章取义是什么生肖| 肛门痒用什么药| 上海为什么被称为魔都| 葡萄糖阴性什么意思| 新零售是什么意思| 什么是妊娠| 内科主要看什么病| 孕早期吃什么水果好| 摩羯座女和什么座最配| 6.16什么星座| 红斑狼疮的症状是什么| 使能是什么意思| 看望老人买什么礼物好| 雷震子是什么神位| 朗朗原名叫什么| 梦见男朋友出轨了是什么意思| 梅雨季节什么时候结束| 泡脚有什么好处和坏处| 什么鱼适合做酸菜鱼| 平板支撑有什么好处| 梦见理发是什么意思| nov是什么意思| 白绫是什么意思| 头皮屑多的原因是什么| 0是偶数吗为什么| 猴跟什么生肖相冲| 牛肉馅饺子配什么菜| 4月22日什么星座| 脸上肉跳动是什么原因| 呵护是什么意思| 眼睛为什么老是流眼泪| 轴重是什么意思| 酸菜鱼可以放什么配菜| 胃不好吃什么水果| 奔走相告的走是什么意思| 野兽是什么生肖| 有白带发黄是什么原因| 小孩突然抽搐失去意识是什么原因| 1998属什么生肖| 胆固醇偏高有什么危害| 月经不来什么原因| 胃疼胃胀吃什么药好| 神经衰弱是什么| 一个斤一个页念什么| 耷拉的近义词是什么| 胃不舒服能吃什么水果| 龟头炎看什么科| 拧巴是什么意思| 911是什么电话| 总打嗝是什么原因| 舌苔白厚腻吃什么药见效快| 虫介念什么| 什么是血管瘤| 一什么玉米| 8848是什么意思| 吃什么能升血小板| homme是什么意思| 减肥期间可以吃什么水果| 百度Jump to content

【新春走基层】探访河北付赵边防派出所武警官兵

From Wikipedia, the free encyclopedia
Pair programming
百度   中国足协U-21选拔队首发整容亮相。

Pair programming is a software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator,[1] reviews each line of code as it is typed in. The two programmers switch roles frequently.

While reviewing, the observer also considers the "strategic" direction of the work, coming up with ideas for improvements and likely future problems to address. This is intended to free the driver to focus all of their attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.

Economics

[edit]

Pair programming increases the man-hours required to deliver code compared to programmers working individually.[2] However, the resulting code has fewer defects.[3] Along with code development time, other factors like field support costs and quality assurance also figure into the return on investment. Pair programming might theoretically offset these expenses by reducing defects in the programs.[3]

In addition to preventing mistakes as they are made, other intangible benefits may exist. For example, the courtesy of rejecting phone calls or other distractions while working together, taking fewer breaks at agreed-upon intervals or sharing breaks to return phone calls (but returning to work quickly since someone is waiting). One member of the team might have more focus and help drive or awaken the other if they lose focus, and that role might periodically change. One member might know about a topic or technique that the other does not, which might eliminate delays to finding or testing a solution, or allow for a better solution, thus effectively expanding the skill set, knowledge, and experience of a programmer as compared to working alone. Each of these intangible benefits, and many more, may be challenging to accurately measure but can contribute to more efficient working hours.[citation needed]

Design quality

[edit]

A system with two programmers possesses greater potential for the generation of more diverse solutions to problems for three reasons:

  1. the programmers bring different prior experiences to the task;
  2. they may assess information relevant to the task in different ways;
  3. they stand in different relationships to the problem by their functional roles.

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.[4]

Satisfaction

[edit]

In an online survey of pair programmers from 2000, 96% of programmers stated that they enjoyed working more while pair programming than programming alone. Furthermore, 95% said that they were more confident in their work when they pair programmed. However, as the survey was among self-selected pair programmers, it did not account for programmers who were forced to pair program.[5]

Learning

[edit]

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,[5] and many learn whether it be from tips on programming language rules to overall design skills.[6] In "promiscuous pairing", each programmer communicates and works with all the other programmers on the team rather than pairing only with one partner, which causes knowledge of the system to spread throughout the whole team.[3] Pair programming allows programmers to examine their partner's code and provide feedback, which is necessary to increase their own ability to develop monitoring mechanisms for their own learning activities.[6]

Team-building and communication

[edit]
Two co-workers pair programming, 2007

Pair programming allows team members to share quickly, making them less likely to have agendas hidden from each other. This helps pair programmers learn to communicate more easily. "This raises the communication bandwidth and frequency within the project, increasing overall information flow within the team."[3]

Studies

[edit]

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 that its findings may have been influenced by "signs of publication bias among published studies on pair programming." It concluded that "pair programming is not uniformly beneficial or effective."[7]

Although pair programmers may complete a task faster than a solo programmer, the total number of man-hours increases.[2] 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.[2] Pair programming could be helpful for attaining high quality and correctness on complex programming tasks, but it would also increase the development effort (cost) significantly.[7]

On simple tasks, which the pair already fully understands, pairing results in a net drop in productivity.[2][8] It may reduce the code development time but also risks reducing the quality of the program.[7] Productivity can also drop when novice–novice pairing is used without sufficient availability of a mentor to coach them.[9]

A study of programmers using AI assistance tools such as GitHub Copilot found that while some programmers conceived of AI assistance as similar to pair programming, in practice the use of such tools is very different in terms of the programmer experience, with the human programmer having to transition repeatedly between driver and navigator roles.[10]

Indicators of non-performance

[edit]

There are indicators that a pair is not performing well:[opinion]

  • 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. In this situation, the junior member may take the observer role, deferring to the senior member of the pair for the majority of coding activity. This can easily lead to disengagement.

Pairing variations

[edit]
Expert–expert
Expert–expert pairing may seem to be the obvious choice for the highest productivity and can produce great results, but it often yields little insight into new ways to solve problems, as both parties are unlikely to question established practices.[2]
Expert–novice
Expert–novice pairing creates many opportunities for the expert to mentor the novice. This pairing can also introduce new ideas, as the novice is more likely to question established practices. The expert, now required to explain established practices, is also more likely to question them. However, in this pairing, an intimidated novice may passively "watch the master" and hesitate to participate meaningfully. Also, some experts may not have the patience needed to allow constructive novice participation.[11]
Novice–novice
Novice–novice pairing can produce results significantly better than two novices working independently, although this practice is generally discouraged because it is harder for novices to develop good habits without a proper role model.[3]

Remote pair programming

[edit]

Remote pair programming, also known as virtual pair programming or distributed pair programming, is pair programming in which the two programmers are in different locations,[12] working via a collaborative real-time editor, shared desktop, or a remote pair programming IDE plugin. Remote pairing introduces difficulties not present in face-to-face pairing, such as extra delays for coordination, depending more on "heavyweight" task-tracking tools instead of "lightweight" ones like index cards, and loss of verbal communication resulting in confusion and conflicts over such things as who "has the keyboard".[13]

Tool support could be provided by:

  • Whole-screen sharing software[14][15][self-published source?]
  • Terminal multiplexers
  • Specialized distributed editing tools
  • Audio chat programs or VoIP software could be helpful when the screen sharing software does not provide two-way audio capability. Use of headsets keep the programmers' hands free
  • Cloud development environments
  • Collaborative pair programming services

See also

[edit]

References

[edit]
  1. ^ Williams, Laurie (February 19–20, 2001). Integrating pair programming into a software development process. 14th Conference on Software Engineering Education and Training. Charlotte. pp. 27–36. doi:10.1109/CSEE.2001.913816. ISBN 0-7695-1059-0. One of the programmers, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects, and also thinks strategically about the direction of the work.
  2. ^ a b c d e Lui, Kim Man (September 2006). "Pair programming productivity: Novice–novice vs. expert–expert" (PDF). International Journal of Human–Computer Studies. 64 (9): 915–925. CiteSeerX 10.1.1.364.2159. doi:10.1016/j.ijhcs.2006.04.010. Archived from the original (PDF) on 2025-08-05. Retrieved 2025-08-05.
  3. ^ a b c d e Cockburn, Alistair; Williams, Laurie (2000). "The Costs and Benefits of Pair Programming" (PDF). Proceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2000). Archived from the original (PDF) on 2025-08-05. Retrieved 2025-08-05.
  4. ^ Flor, Nick V.; Hutchins, Edwin L. (1991). "Analyzing Distributed Cognition in Software Teams: A Case Study of Team Programming During Perfective Software Maintenance". In Koenemann-Belliveau, Jürgen; Moher, Thomas G.; Robertson, Scott P. (eds.). Empirical Studies of Programmers: Fourth Workshop. Ablex. pp. 36–64. ISBN 978-0-89391-856-9.
  5. ^ a b Williams, Laurie; Kessler, Robert R.; Cunningham, Ward; Jeffries, Ron (2000). "Strengthening the case for pair programming" (PDF). IEEE Software. 17 (4): 19–25. CiteSeerX 10.1.1.33.5248. doi:10.1109/52.854064.
  6. ^ a b Williams, Laurie; Upchurch, Richard L. (2001). "In support of student pair programming". ACM SIGCSE Bulletin. 33 (1): 327–31. doi:10.1145/366413.364614.
  7. ^ a b c Hannay, Jo E.; Tore Dyb?; Erik Arisholm; Dag I.K. Sj?berg (July 2009). "The Effectiveness of Pair Programming: A Meta-Analysis". Information and Software Technology. 51 (7): 1110–1122. doi:10.1016/j.infsof.2009.02.001.
  8. ^ Arisholm, Erik; Hans Gallis; Tore Dyb?; Dag I.K. Sj?berg (February 2007). "Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise". IEEE Transactions on Software Engineering. 33 (2): 65–86. doi:10.1109/TSE.2007.17. S2CID 9889035. Archived from the original on 2025-08-05. Retrieved 2025-08-05.
  9. ^ Stephens, Matt; Doug Rosenberg. "Will Pair Programming Really Improve Your Project?". Retrieved 28 May 2011.
  10. ^ Sarkar, Advait; Gordon, Andrew D.; Negreanu, Carina; Poelitz, Christian; Ragavan, Sruti S.; Zorn, Ben (2022). "What is it like to program with artificial intelligence?". Psychology of Programming Interest Group. Retrieved 27 March 2023.
  11. ^ Williams, L. & Kessler, R. (2003). Pair Programming Illuminated. Boston: Addison-Wesley Professional. ISBN 9780201745764.
  12. ^ Flor, Nick V. (2006). "Globally distributed software development and pair programming". Communications of the ACM. 49 (10): 57–8. doi:10.1145/1164394.1164421. S2CID 8963421.
  13. ^ Schümmer, Till; Stephan Lukosch (September 2009). "Understanding Tools and Practices for Distributed Pair Programming" (PDF). Journal of Universal Computer Science. 15 (16): 3101–3125. Retrieved 2025-08-05.
  14. ^ Agile Ajax: Pair Programming with VNC Archived 2025-08-05 at the Wayback Machine[self-published source]
  15. ^ Pair Programming – The Ultimate Setup and the other options we tried. – Jonathan Cogley's Blog
[edit]
大便黑色的是什么原因 胃溃疡是什么症状 什么名字 灌溉是什么意思 孕妇过敏性鼻炎可以用什么药
游泳有什么好处 看嘴唇挂什么科 烦请是什么意思 胆固醇高对身体有什么危害 月经不来什么原因
拾掇是什么意思 骨质增生吃什么药 百合和什么搭配最好 血离子是检查什么的 脉搏细是什么原因
孕妇为什么不能参加婚礼 射精出血是什么原因 清明是什么季节 男人吃海参有什么好处 panerai是什么牌子
营养过剩会导致什么hcv8jop5ns9r.cn 豆浆喝多了有什么副作用hcv9jop5ns8r.cn 身份证后四位代表什么hcv9jop8ns1r.cn 湿疹什么症状hcv7jop4ns8r.cn 爆竹声中一岁除下一句是什么hcv9jop0ns3r.cn
白细胞数目偏高是什么意思baiqunet.com 老班章是什么茶hcv9jop3ns7r.cn 宝批龙是什么意思hcv8jop9ns1r.cn 怀孕的尿液是什么颜色hcv9jop6ns2r.cn 内热外寒感冒用什么药hcv8jop7ns5r.cn
过渡句的作用是什么sscsqa.com 肚脐眼是什么穴位hcv8jop7ns2r.cn 826是什么星座hcv8jop1ns0r.cn 副区长是什么级别hcv8jop6ns7r.cn 广西有什么市hcv9jop3ns9r.cn
失去抚养权意味着什么hcv8jop6ns4r.cn 钛合金是什么材料hcv9jop2ns2r.cn 化学键是什么hcv8jop7ns6r.cn 昭是什么意思hcv8jop6ns7r.cn 酌情处理是什么意思hcv8jop7ns7r.cn
百度