慢性结肠炎吃什么药好| 拎不清是什么意思| 胆囊结石挂什么科| 痴女是什么意思| 鼻头出汗是什么原因| 军绿色裤子配什么上衣| 郭麒麟什么学历| 春天有什么植物| 胰腺分泌什么| 小白龙叫什么名字| 惜字如金是什么意思| 外阴湿疹用什么药| 食邑万户是什么意思| 超脱是什么意思| 肝肾衰竭有什么症状| 手术后为什么要平躺6小时| 属实是什么意思| 政协主席什么级别| 换手率高说明什么| 狗鼻子干是什么原因| 正切是什么| 什么的云海| 石楠花是什么味道| 肠胃炎吃什么药好得快| 捞面条配什么菜好吃| 桂花是什么季节开的| 小孩晚上睡觉流口水是什么原因| 湿疹擦什么药膏好| 月经期吃什么水果好| 乌托邦是什么意思| 左顾右盼的顾是什么意思| 烦恼千千是什么生肖| 724是什么意思| 吃海带有什么好处| 什么叫认知能力| biemlfdlkk是什么牌子| 玉屏风颗粒治什么病| 中国的八大菜系是什么| 子宫脱垂是什么症状| 轻度异常脑电图是什么意思| fourone是什么牌子| 两肺少许纤维灶是什么意思| 咂嘴是什么意思| diptyque属于什么档次| 不来月经是什么原因| 六月十三日是什么星座| 自媒体是什么| 包皮开裂是什么原因| gr是什么元素| 伤寒病有什么症状| 劳改犯是什么意思| 飞克手表什么档次| 孕妇什么时候开始补钙| 掂过碌蔗是什么意思| 特别怕热爱出汗是什么原因| 乳腺增生吃什么药最好| 康膜的功效是什么| 玩游戏有什么好处| 什么是天葬| 惨无人道是什么意思| 双性恋什么意思| 褪黑素是什么东西| 什么红| 胃酸不能吃什么食物| 银手镯变黑是什么原因| 头孢长什么样| 黄瓜与什么相克| 痛风病人不能吃什么| 64年出生属什么| 03年属什么的| 癫痫患者不能吃什么| 长一智的上一句是什么| 大便次数多什么原因| 火龙果有什么营养| 蒲公英有什么功效| 沙和尚的武器叫什么| 1987年属什么生肖| 辅警和协警有什么区别| 狗狗产后吃什么下奶多| 扶摇是什么意思| 氮质血症是什么意思| 为什么头发突然秃了一块| 指导员是什么级别| 接吻是什么感觉| 肩周炎吃什么药| 金牛座后面是什么星座| 八月13号是什么星座| 心率高吃什么药| 心安是什么意思| 脚底长水泡是什么原因| 是什么货币符号| 自字五行属什么| 郭靖属什么生肖| 氟比洛芬是什么药| 阿司匹林什么时候吃| 胸口痛是什么原因| 6月26是什么星座| 手心脚心热是什么原因| 什么是庞氏骗局| 血小板压积偏低是什么意思| 痛风吃什么消炎药| 肾病有什么症状| 72年属鼠是什么命| 驾照c2能开什么车| 头发掉的厉害是什么原因| 栀子花开有什么寓意| 雾灯什么时候开| 元武道是什么| 茄子与什么相克| 什么人不能吃猪肝| 麻酱是什么做的| 什么是肠易激综合征| 狐惑病是什么病| 文房四宝是指什么| 什么时间量血压最准确| 什么是线粒体| 舌苔厚发黄是什么原因| 嘻哈是什么意思| 吸气是什么意思| 穿山甲说了什么| 血常规检查什么项目| 武则天什么朝代| 诸事顺遂是什么意思| 睾丸疼是什么原因| 鼠分念什么| 晕轮效应是什么意思| 黑加京念什么| 牙龈出血缺什么| 嘴唇干裂脱皮是什么原因| 海棠是什么意思| 喝什么减肥| 阴毛变白是什么原因| 龋齿是什么原因造成的| 放风筝是什么季节| 亚硝酸钠是什么| 青红皂白的皂是什么颜色| 皮下出血点是什么原因| 调经止带是什么意思| 金银花有什么效果| 胰腺钙化灶是什么意思| 盐酸苯海索片治什么病| 肺结节是什么| 心慌挂什么科| 商品是什么| 挪揄是什么意思| 肝内多发低密度影是什么意思| 葡萄补什么| 什么叫脑白质病变| 梦到跟人吵架是什么意思| 拉肚子吃什么食物好| 什么是业力| 吃什么东西能养胃| 防晒衣的面料是什么| 黄体功能不足是什么原因造成的| 杉菜是什么意思| 什么是素数| 执拗是什么意思| 杜牧字什么| 卑微是什么意思| 一日之计在于晨是什么生肖| 什么是劣药| 冷暖自知上一句是什么| 十一月份什么星座| 婴儿补铁吃什么铁剂| 嘴唇红肿是什么原因| 468是什么意思| 静脉血是什么颜色| 苏州为什么叫姑苏| 坚壁清野什么意思| 蜱虫的天敌是什么| 5.21什么星座| 尿浑浊是什么病的前兆| 颞下颌关节挂什么科| 白羊座男和什么星座最配| 全麻对身体有什么危害| 低烧吃什么药好| 食谱是什么意思| 火克什么| 腿脚浮肿是什么原因引起的| 什么是麦粒肿| 尿路感染吃什么药| 777什么意思| 憋气是什么意思| 四月18号是什么星座的| 头发容易油是什么原因| 上海有什么好玩的地方适合小孩子| 睡觉为什么磨牙| 疽是什么意思| 狗狗咬主人意味着什么| 试管进周期是什么意思| 不care是什么意思| 什么叫通勤| 什么是功| 稷是什么作物| 调节肠道菌群吃什么药| 嗨体水光针有什么功效| 腹泻吃什么药好| 心境情感障碍是什么病| 拉肚子喝什么水| 手上螺纹多少代表什么| 命门火衰是什么意思| 感冒适合吃什么饭菜| 捣碎东西的器皿叫什么| 字母哥什么位置| 风热感冒吃什么| 四十岁月经量少是什么原因| 肚子疼吃什么| 湿疹是什么样子的| 后卫是干什么的| 诗意是什么意思| 晋升是什么意思| 鼠妇吃什么| 吃辣椒过敏是什么症状| 血糖高吃什么主食最好| 头发竖起来是什么原因| 口苦吃什么药最有效| 为什么突然就细菌感染了| 上海龙华医院擅长什么| 血红蛋白低吃什么| 高血压喝什么茶最好| 生长纹是什么原因| 正常的白带是什么样的| 排卵试纸阴性是什么意思| 5月19日是什么星座| 为什么筋膜炎一躺下才会疼| 骰子是什么意思| 结缔组织病是什么病| 诸葛亮的扇子叫什么| 7月30号什么星座| 5月份出生的是什么星座| 眼睛红血丝多是什么原因| 狮子住在什么地方| 夏天为什么会下冰雹| 脸黄是什么原因造成的| 什么时候闰九月| 弯刀裤适合什么人穿| 儿童割包皮挂什么科| 咽喉炎 吃什么| 小鸡炖什么好吃| 不利是什么意思| 耳朵痒是什么预兆| 汗疱疹是什么引起的| 为什么有两个六月| 血管瘤是什么原因引起的| pms是什么意思| 肌红蛋白偏低说明什么| 胸口痛吃什么药| 醉氧是什么意思| 为什么不建议吃茵栀黄| 酸辣土豆丝用什么醋| 医保卡是什么| 回民不吃什么| 直肠炎有什么症状| 拔牙之后可以吃什么| 红鸾是什么意思| 低烧吃什么药好| 胃反酸水是什么原因| 44岁月经量少是什么原因| 掉以轻心是什么意思| 肌酐测定是查什么| 反话是什么意思| 咳嗽有黄痰是什么原因| 牡蛎和生蚝有什么区别| 一什么湖水| 百度Jump to content

车讯:换装2.3T发动机 新款林肯MKC总统版谍照

From Wikipedia, the free encyclopedia
Pair programming
百度   巡视组分别列出了4个“回头看”省区对上轮巡视整改不力的问题清单,具体来看,内蒙古自治区党委的主要问题是对上轮巡视指出的文山会海、超职数配备干部等问题整改不到位;吉林是对上轮巡视指出的办公用房超标、违规兼职和违规配备干部问题整改不到位;陕西是对上轮巡视提出的超职数配备干部、违规兼职,领导干部多占住房、“文山会海”等整改不力;云南是对上轮巡视提出的重点领域腐败案件易发多发、用人视野不宽、违规配备干部等整改不力。

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-08. Retrieved 2025-08-08.
  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-08. Retrieved 2025-08-08.
  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-08. Retrieved 2025-08-08.
  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-08.
  14. ^ Agile Ajax: Pair Programming with VNC Archived 2025-08-08 at the Wayback Machine[self-published source]
  15. ^ Pair Programming – The Ultimate Setup and the other options we tried. – Jonathan Cogley's Blog
[edit]
吉士是什么 梦见一条小蛇是什么意思 什么是鸡胸 护肝吃什么药 纳财是什么意思
脚底板热是什么原因 比音勒芬是什么档次 3月12日什么星座 半边脸肿是什么原因引起的 维生素b12又叫什么
气血不足吃什么补最快 什么样子 痛风吃什么菜好 jb什么意思 八卦是什么生肖
寸头适合什么脸型 bosch是什么牌子 笑字五行属什么 钙是什么 胎监是检查什么的
特应性皮炎是什么意思hcv8jop4ns4r.cn 公鸡的尾巴有什么作用hcv8jop1ns7r.cn 坐西向东是什么宅hcv7jop6ns4r.cn 07属什么生肖hcv8jop2ns7r.cn 有什么水能代替美瞳水hcv9jop4ns5r.cn
胸口痛吃什么药hlguo.com 消心痛又叫什么weuuu.com 夜尿频多吃什么药效果好hcv7jop4ns7r.cn 砍是什么生肖hcv9jop2ns1r.cn 小孩子长白头发是什么原因hcv9jop7ns1r.cn
早泄要吃什么药hcv9jop1ns1r.cn 逍遥丸是治什么的hcv9jop4ns0r.cn 脑子里嗡嗡响是什么原因hcv7jop6ns1r.cn 崩溃是什么意思hcv9jop5ns3r.cn 梦见穿袜子是什么意思hcv8jop1ns7r.cn
圣女是什么生肖hcv9jop1ns1r.cn 子宫内膜炎吃什么药hcv8jop2ns3r.cn 什么叫风湿hcv9jop5ns6r.cn 小腿肿胀是什么原因引起的hcv7jop5ns6r.cn 晚上老咳嗽是什么原因hcv7jop6ns1r.cn
百度