五步搞定结对编程,你也能行!

敏捷开发
• 阅读 366

结对编程是极限编程(XP)中的工程实践之一。但大家对结对编程的态度,褒贬不一,有人很喜欢,觉得它有利于团队的知识共享,打破成员间的知识孤岛,还利于促进团队的协作,提高效率等等好处;而有的人则很讨厌,觉得结对编程会降低效率,是在增加成本,尤其是两个开发人员经验差距较大时,而且这种发生会让开发者无法集中注意力,每个人的工作方式都不同,在同一台电脑上工作,挑战性很大。

一、为什么要结对编程?

我们需要明白的一点是,结对编程是一把双刃剑,有优势也有劣势。虽然它不能解决所有问题,但对比其他方法,它也是降低工作难度的一个行之有效的方法。

对于管理者来说要明白,结对编程虽然在项目开始时会增加成本,但结对编程可以减少很多Bug的产生,显著降低后续的成本。 另外通常情况下,人会倾向关注整体而非具体细节。结对编程就是为了能更好地兼顾二者,通过结对让程序员及时发现编程中的错误。

编程时由两名程序员分别扮演“驾驶员”(负责编写代码)和“导航员”(负责审查代码)。

“世界上没有两片完全相同的树叶”,同样没有任何两个程序员会以完全相同的方式看待代码,特别是面对一些复杂的代码时,关注的点或者角度的不同,及时发现问题的能力也会大大提高,也可以尽可能地减少Bug的产生。

二、让结对编程更易成功的技巧

下面就分享5个结对编程的技巧以及一些注意事项,帮助大家更好地实现结对编程。

1.开发相同的代码

使用结对编程的最佳方式就是并排坐在显示器前,开发人员使用两个键盘,两个鼠标,共用一个屏幕和一台电脑。开发者控制并编写代码,扮演驾驶员的角色,另一位担任导航员的角色,专注于确保代码是正确的,并考虑改进应用程序的设计,遵循最佳实践。

为了确保大家饱满的动力,可以以半小时的节奏,角色互相交换进行。让两位程序员都保持动力和细心。除了角色可以互换,结对的伙伴也可以变化。

2.根据任务进行编程分组

不同的程序员之间实力和经验都是不同的。如果是以分享知识和技能转化为主,那么初级和高级程序员可以组在一起,以获得最佳的学习体验。但如果要求代码质量,避免错误或者开发困难的任务,那么建议两位经验丰富的程序员一起,这样能保证任务的高效率和低错误率。

3.组织团队会议,互相交流鼓励

每天约三到五分钟的短会,让所有的同事聚集在一起讨论当前项目的细节,交流想法,这样可以更好地激励团队。此外,每个成员都有机会进行个人接触,这样也能积极促进团队氛围的形成和合作。

4.和产品经理保持密切沟通

在项目初期,软件的需求并不会非常明确清晰且确定,所以和产品经理保持密切的沟通联系,可以让程序员保持对需求有最新和准确的理解,便于后续开发。通过和产品经理的沟通,也能不断给出反馈意见,从而让项目更好地实施和推进。

5.不断测试

开发人员首先模拟测试错误的代码,然后再开发一个足以通过测试的代码。最后,修改代码以符合标准。

总之,结对编程是对一个人的心智、道德修养更高的要求。 编码不再是私人的工作,而是一种公开的“表演”,程序员的代码、工作方式、技术水平都变得公开和透明。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Stella981 Stella981
3年前
Python Challenge Level 18
初学Python,挑战一下流行的PythonChallenge,很不幸,卡在了18关~~被字符字节码之间的转换搞得焦头烂额,不过终于搞定了还是很happy的~~~主要的问题就是16进制形式的字符如何转成字节码(注意:不是encoding)如:\'89','50','4e','47','0d','0a','1a','0a','00
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
C 编程实现打印 0
有效进制范围\2,36\;include<cstdioinclude<windows.hintmain(){system("chcp437");for(inti0;i<256;i){switch(i){case0:printf("%03
Stella981 Stella981
3年前
Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)
本文首发于:Jenkins中文社区(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjenkinszh.cn)!huashan(https://oscimg.oschina.net/oscnet/f499d5b4f76f20cf0bce2a00af236d10265.jpg)
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
敏捷开发 敏捷开发
6个月前
无结对,不编程
极限编程里面有一个比较有争议实践就是结对编程。很多团队的管理者在谈到结对编程的时候,第一反应是浪费时间:本来一个人可以干的事情要安排两个人干,不是浪费时间吗?那结对编程到底会不会浪费时间呢?结合我们禅道团队自身十几年的结对编程实践,跟大家做一下分享。首先来
敏捷开发
敏捷开发
Lv1
女 · 产品经理
公众号:敏捷开发 网址:www.minjiekaifa.com
文章
44
粉丝
2
获赞
0