📅  最后修改于: 2021-01-07 06:13:00             🧑  作者: Mango
结对编程是一种编程风格,其中两个程序员在一台计算机上并排工作,共享一个屏幕,键盘和鼠标,并在同一设计,算法,代码或测试上进行持续协作。
一个称为驱动程序的程序员可以控制键盘/鼠标,并主动执行代码或编写测试。另一个称为导航器的程序员不断观察驱动程序的工作以发现缺陷,并从战略上考虑工作的方向。
必要时,两位程序员就任何具有挑战性的问题进行头脑风暴。两位程序员定期切换角色,并平等地合作开发软件。
结对编程的显着优势是-
在键入错误时会检测到许多错误,而不是在质量检查测试或现场中检测到。
最终缺陷含量在统计上较低。
设计更好,代码长度更短。
团队可以更快地解决问题。
人们对系统和软件开发有了更多的了解。
该项目最终由多个人了解系统的每个部分。
人们学会了一起工作,经常在一起交谈,从而提供了更好的信息流和团队动态。
人们更喜欢他们的工作。
已经证明使用结对编程实践可以提高软件产品的生产率和质量。
结对编程研究表明-
配对使用的工时不多于单身。
成对产生的缺陷更少。
对创建更少的代码行。
结伴更喜欢工作。
犹他大学进行了配对编程实验。结果显示-
两人在该计划上花费的时间比个人多15%。
成对编写的代码始终比个人编写的代码通过更多的测试案例。
两人用更少的代码行一致地实现了个人产生的相同功能。
在快速取得切实成果的环境中学习如何编程很有趣,并且可以使学习更快。
大多数程序员习惯于单打独斗,并常常抵制结对编程的过渡。但是,通过实践,他们最终可以进行此过渡。
根据Laurie A. Williams和Robert R. Kessler的书,“我真正需要了解的我在幼儿园学到的结对编程的全部知识”,这很好地说明了如何培养我们在幼儿园学到的技能来通常建立团队凝聚力,尤其是结对编程。
结对程序员的过渡和持续成功通常涉及实践日常礼节。
以下各节是本出版物的摘录,可帮助您成为有效的结对程序员。
在幼儿园,我们学到了以下内容-
分享一切
平等游戏
不要打人
把东西放回找到它们的地方
清理自己的烂摊子
不要拿不属于你的东西
说当你伤害别人时你很抱歉
吃之前先洗手
冲洗
热饼干和冷牛奶对您有好处
过着平衡的生活–学习一些,思考一些,每天画画,唱歌,跳舞,娱乐和工作
每天午睡
当您外出逛逛时,请注意交通情况,手牵着手并肩并肩
注意奇迹
接下来,我们在上述给定的教学背景下研究结对编程的原理。
在结对编程中,
两个程序员坐在一起,共同产生一个工件(设计,算法,代码等)
一个人正在打字或写作,另一个人正在不断地审查工作。都
在过程中平等参与
负责工件的各个方面
拥有一切
在结对编程中,
一个人开车,即控制键盘或记录设计想法,而另一个人则在不断审查工作。
他们定期更换这些角色,即使其中一个的经验比另一个明显多,也可以确保平等参与。
当开车的人在考虑实现时,其他人则在不断审查代码,并在考虑可能的更简单的设计,即当前的开发如何适应整个系统。
在结对编程中,
确保您的伴侣保持专注和专心。
您可以保持专注并专注于任务。
确保您的伙伴遵守规定的编码标准,从而保持对团队其他成员的承诺。
在配对编程调查中,发现可以实现巨大的生产率提高和质量提高。这是因为-
每个人都让自己的伴侣专注于工作,没有懈怠的可能。
每个工件在生产过程中都会不断进行审查,以确保质量。
在配对编程中,
您需要相信自己的技能以及伴侣的技能。这方面的任何负面想法都应放入垃圾桶中。
您必须确保表达自己的知识,并在需要时愿意向您的伴侣学习。您可以通过观察对方或立即获取对方的反馈来向对方学习。
您需要确信-
只要有滞后的可能,您都可以立即从您的伴侣那里接机。
一对在一起,您可以解决您无法单独解决的问题。
您可以帮助提高彼此的技能。
在结对编程中,借助“守望先锋”技术,
您会发现,知道您的伴侣发现了多少明显但未注意到的缺陷真是令人惊讶。
您可以消除这些缺陷,而不会在正式检查会议中产生自然的敌意。
表征缺陷预防和缺陷清除效率。
结对编程的一个非常有益的方面是让合作伙伴连续客观地审查设计和编码。在结对编程中,您需要确保工作时没有过多的自我或过分的自我。
这是必要的,因为
过度的自我可以通过两种方式表现出来-
具有“我的方式或高速公路”的态度可能会阻止程序员考虑其他人的想法。
采取防御措施可能会导致程序员不接受建设性的批评或将其视为不信任。
这两种自我表现方式都破坏了合作关系。
另一方面,一个总是与伴侣保持一致以免产生紧张感的人也会使协作工作的收益最小化。为了进行有益的思想交流,在需要时应该有一些健康的分歧/争论。
因此,在显示过多和过少的自我之间需要一个很好的平衡。有效的结对编程人员会在可能需要数小时或数天的初始调整期间,根据个人,工作的性质以及他们过去结对编程的经验来平衡这种平衡。
程序员必须能够并排坐着并编程,同时查看计算机屏幕并共享键盘和鼠标。极限程序员有一个“滑动键盘/不要移动椅子”的规则。
为了确保在协作对内部以及与其他协作对之间进行有效的通信,而无需付出太多努力,程序员需要互相了解,互相问问题并就诸如集成问题之类的事情做出决定。程序员还可以通过旁听其他对话来受益,他们可以对此做出重要贡献。
为了使结对编程成功,两个合作伙伴都必须了解协作在编程中的价值,收益和体验的乐趣。在这方面的任何怀疑都必须在一开始就停止。
经验表明,拥有一个非常积极和/或具有结对编程经验的程序员,可以带领结对胜利地成为一个果冻的协作团队。
这样一个团队的生产能力要比那些以非果冻形式工作的人的生产能力更大。
考虑到工作本身的性质,人们从工作中获得的乐趣比您期望的要大。
一旦团队开始争吵,成功的可能性就会大大增加。
结对程序员可以独立进行某些工作。但是,当他们重新加入时,他们必须在合并独立工作之前对其进行审查,或者冲洗并重写该独立工作以及对工作进行连续审查,以识别其他缺陷。
未经合作伙伴的审查,切勿纳入任何独立的工作。这是因为研究表明与两对作品相比,独立作品存在缺陷。
结对编程人员使彼此始终专注于任务。它可能非常紧张并且令人精神疲惫。因此,请定期休息以保持耐力,以进行另一轮高效的结对编程。
在休息期间,最好断开与任务的连接,并在重新启动时以新鲜的方式进行处理。建议的活动是检查电子邮件,打个电话,浏览网络或休息一下。
定期与他人沟通是过上平衡生活的关键。与您的合作伙伴和其他程序员进行非正式讨论,可以交流有效的想法并有效地传递信息。
不必每天下午单独工作,但是可以单独工作10-50%的时间。这是因为-
许多程序员更喜欢单独进行实验性原型设计,棘手的,专心的问题和逻辑思维。
单独的程序员可以更有效地完成简单,定义明确且常规的编码,然后与合作伙伴一起审查。
在配对编程中,
两者之间不应有竞争。两者必须一起工作,就好像工件是由一个人产生的。
合作伙伴需要信任彼此的判断以及彼此对团队的忠诚度。
合伙人绝不能因任何问题或缺陷而责备对方。
当两个人一起工作时,每个人都有一套自己的知识和技能,包括:
这些知识和技能的通用集合,使他们能够有效地进行沟通。
独特的技能,使他们能够为完成任务做出贡献。
在一起,一对将-
提出的解决方案是单独工作时提供的解决方案的两倍以上。
更快地确定最佳解决方案。
更快,质量更好地实施它。
因此,结对编程是一项强大的技术,因为有两个大脑始终专注于同一问题。它迫使人们完全专注于眼前的问题。