阿里内贸团队敏捷实践(三)结对编程

本文主要从提升项目质量、促进知识传递及减少项目风险等角度出发,讲述作者所在团队在结对编程实践中的一些经历,以及如何避免或减少其所带来的负面影响。

你了解结对编程吗?你尝试过结对编程实践吗?也许你还未曾尝试甚至还不曾了解,那么我们一起来学习和了解敏捷结对编程实践,相信对敏捷感兴趣的你会有收获。

什么是结对编程

结对编程(Pair Programming)是一种敏捷软件开发实践,指两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘和鼠标一起工作。一个人输入代码, 而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员), 两个程序员定期互换角色。他们在一起完成需求分析、系统设计、编码、单元测试、整合测试(Integration Test)、写文档等工作。基本上所有的开发环节都一起肩并肩地、平等地、互补地进行工作(如图1所示)。

上面是极限编程(eXtreme Programming,XP)对结对编程的描述,它有如下主要的优点:

  • 有利于提升项目质量,减少Bug;
  • 有利于知识传递,降低学习成本;
  • 多人熟悉同一段代码,减少项目风险;
  • 与别人一起工作会增加责任和纪律性等。

尽管结对编程有诸多诱人的优点,但实行结对编程实践的却为数不多,其主要原因可能有:

  • 结对编程需要投入更多的资源;
  • 结对双方需同时注意力集中,否则效率更低;
  • 结对人员能力要求相适,否则起不到观察者的作用,甚至产生依赖;
  • 不成功的配对,经常引发争吵,产生内耗,导致团队不和谐等。

结对编程是颇具争议的敏捷实践之一,除上述一些优缺点外,可能大家还有更多不同的看法,但分析利弊不是本文所要讨论的重点。

实践经验

就我所在的项目团队而言,6人左右的开发团队需要支持多个中小型独立产品的需求开发,在繁重的业务压力下,用户价值的快速交付是首要的,所以想尝试 共用一台电脑进行结对开发的实践只能是一种奢望。让团队开发人员尽可能熟悉相互间的产品代码,提升项目开发效率以及保证良好的项目质量,是我们在项目开发 过程中需要重点解决的问题。

我们试图通过集体Code Review和设计交流分享等活动,来提升代码质量以及相互间业务代码的熟悉度,但一直收效甚微。问题主要在于这种集中式活动时间较难安排,人多交流效果 不佳,性价比不高。后来,得益于公司的导师机制,在一对新人和导师身上,找到了敏捷结对的原型。由于他们的紧密合作,遇到问题及时沟通,新人在项目进度和 质量都有不错表现,很好地融入了团队。在后续的项目过程中,我们不断地尝试和优化这种结对形式,逐渐形成相对固定的工作方法。

与XP结对编程相比,敏捷结对编程最为显著的差异是结对进行需求分析、系统设计和问题讨论,但分别编码实现,通过过程中频繁的Review来实现结 对的效果。开发人员两两结对,共同认领开发任务,一起对所承担的开发任务负责。在需求理解、设计阶段双方一起设计和讨论,然后分工各自编码实现,并通过 Code Review以确保实现与设计一致。对结对过程中发现的问题,随时沟通和讨论。由于产品业务逻辑相对不是特别复杂,所以通过这种小范围、高效的沟通,可以 解决项目中的绝大部分问题,实现更高的开发效率并确保代码质量。目前,在开发流程中的主要结对活动如图2所示。

结对活动(如图3所示)给我们带来了哪些好处?

  • 提升项目质量。结对开发人员在需求理解、设计思路上进行了充分的沟通和讨论,能尽早地发现和解决问题,避免前期因需求理解偏差、设计缺陷问题造成返工。
  • 知识传递。对于新员工或经验略逊的开发人员,通过经常性的沟通和讨论,能迅速地进入角色和积累经验,发挥了传帮带的作用。
  • backup,规避项目风险。结对人员之间互为backup,有利于团队成员之间熟悉业务代码,若有人员异动时有利于项目风险控制。

无论新老结对还是强弱结对,都要尽力避免一方对另一方产生依赖,要给新人足够的成长和锻炼空间,让其独立思考和解决问题,并允许在可控范围内尝试失 败,以获取宝贵经验得到成长。否则,团队只会多一个执行者,结对难以达到预想的效果。同时,一定程度的独立活动,可以让大家保留自己的工作习惯,而且形式 更为自由和灵活。当然,大家可能会有疑问,如何保证结对人选中资深工程师工作的正确性,因为新人和弱者很有可能无法提出想要的Review帮助。这个问题 在我们的结对中不可避免,有选择地邀请其他资深专家Review,也许会是个不错的解决方案,特别是对于一些重要的复杂业务逻辑。

参加结对的工程师应具备独立思考和解决问题的能力,并且具备较好的团队协作意识。否则,不仅不能有好的结对效果,反而会带来一些新问题。此外,结对也不仅限在研发工程师之间,研发和测试工程师之间或同产品经理之间的结对(如图4所示),同样可以带来不错的效果。

引入敏捷实践,贵在充分理解、结合实际,能扬长避短,且是一个适应、发展的过程,而按部就班绝对不是个好主意。有选择地结对对我们来说也许是上策,在结对的人选、场合、结对的环节等方面进行选择性的实施。


文章转自 并发编程网-ifeve.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45029.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊生产者消费者模式

在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在…

聊聊并发 生产者消费者模式

http://ifeve.com/producers-and-consumers-mode/ 本文首发于InfoQ 作者:方腾飞 校对:张龙 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。 为什么要使…

阿里内贸团队敏捷实践-敏捷回顾

回顾review是敏捷开发中的一个必不可少的实践也是把整个敏捷开发过程连接成一个闭环的关键节点本文将阐述我们是如何做敏捷回顾的。 敏捷回顾最高指导原则 无论我们发现了什么考虑到当时的已知情况、个人的技术水平和能力、可用的资源以及手上的状况我们理解并坚信每个人对自己…

java 生产者消费者模式_聊聊并发(十)生产者消费者模式

本文首发于InfoQ 作者:方腾飞 校对:张龙 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。 为什么要使用生产者和消费者模式 在线程世界里,生产…

基于Trtc的内贸站视频聊天服务【二】

基于Trtc的内贸站视频聊天服务【二】 上一节课和大家聊了一下web端视频聊天的技术演变和发展,需要满足web端视频聊天的基本条件。以及介绍了一下腾讯云提供的Trtc服务,大概说了下腾讯云的sdk。本节课就以实际开发内贸站视频聊天的项目(Swan&…

谷歌外贸sem与百度内贸sem的不同

1,国内的话,不用在乎是否使用在家用,起订量问题一般不用特别注意,如果家用零售的话,大家会很自觉地想到淘宝,拼多多。但是进出口的话,必须是商用,批发,大批量货物类型&am…

外贸软件进出口内贸综合型管理解决方案

外贸公司综合型业务模式,指的是公司涉及自营、代理进出口业务、内贸业务、转口业务等等多业务模式,涉及的产品种类多,像这样的综合型外贸公司就需要通过信息化管理实现业财一体化,完善资金流向,简化工作流程&#xff0…

使用Azure OpenAI服务创建聊天机器人

创建聊天机器人步骤: 1、开通 Azure OpenAI 服务 在 Azure 国际版注册账号。注册后创建OpenAI 服务。申请提交后需要等待审核,审核通过后就可以对接接口了。 2、创建 Azure OpenAI 服务 当你的申请通过后,就可以到 Azure 上创建 OpenAI 服…

C#探索之路(9):深入理解C#代码编译的过程以及原理

C#探索之路(9):深入理解C#代码编译的过程以及原理 文章目录 C#探索之路(9):深入理解C#代码编译的过程以及原理一、前言:概念解析1、编译器:2、JIT是什么?3、AOT是什么?4、如何理解这个“基于运行时”的概念…

办公必备!不再被格式问题困扰,轻松搞定文档转换!

大家平时在工作中会需要将文档转换为其他格式吗? 日常工作中,经常碰到需要文件格式转换的情况,对于掌握了一些转换技能的朋友说,文件格式转换自然不在话下 对于不熟练的朋友来说,想要轻松转换文件格式,就…

微信dat文件用什么软件打开,如何转成jpg常用格式

微信dat文件是在PC端微信软件产生的图片文件,这个文件实际上是一个图片,微信把聊天过程中产生的图片进行了加密,更改了后缀存储为dat文件。 有时候删除了聊天记录或者被系统清理软件清理了,但还想查看曾经的微信聊天图片。这个时候…

PDF转Word怎么调整格式?这个方法轻松解决

在日常工作中,我们可能会遇到需要将PDF文件转换为Word文档的情况。虽然现在的PDF转Word工具越来越智能化,但仍然有一些格式调整需要我们手动进行。最近就有个小伙伴说接到了一份由客户提供的PDF文档,需要将其中的内容转换为Word文档&#xff…

新闻发布系统(java实现)+论文

java新闻发布系统以及论文,有需要联系QQ:1240952102 java源码以及论文 数据库脚本 以及开发工具齐全 只需安装即可使用 有需要联系QQ:1240952102

2020秋 英文科技论文写作与学术报告-期末

2020秋 英文科技论文写作与学术报告-期末 搜索答案不易,切勿白嫖

开题报告:基于java新冠疫苗在线预约系统 毕业设计论文开题报告模板

开发操作系统:windows10 4G内存 500G 开发环境:JDK1.8 Tomcat8 开发语言:Java 开发框架:springboot 模板引擎:Thymeleaf 开发工具:Idea 数据库:mysql8 数据库管理工具:nav…

大学计划《数字化转型赋能教育创新发展高峰论坛》成功举办

2023年4月8日,由航天科技控股集团股份有限公司(简称“航天科技”)主办,CFF上海与上海电子信息职业技术学院承办、智慧树网支持的《数字化转型赋能教育创新发展高峰论坛》线上会议顺利召开。此次会议邀请到了众多教育界专家、教学名…

可复现、开放科研、跨学科合作:数据驱动下的科研趋势及应用方案

信息技术的快速发展,催化了数据科学场景下科研组织提高科学研究的可复现性、实现开放科研、开展跨学科领域的交叉研究等协同诉求。本文剖析了此三类诉求的实现难点,并提供了系统化的解决方案。 欢迎进入ModelWhale 官网注册试用,个人专业版与…

教育信息化时代,如何打造中学理科信息化实验操作考场方案

近年来,我国考试招生制度不断改进完善,初步形成了相对完整的考试招生体系。但随着教育事业的逐步发展,国务院明确提出了改革考试形式和内容:完善中学学业水平考试,规范中考学生综合素质评价,加快推进中学院…

论文导读 | 社交网络上的信息传播预测

作者:北京大学苟向阳 编者按: 现代社交网络极大地促进了信息的生成和传播,也加剧了不同信息对用户注意力的竞争。 对于一条信息的传播范围进行预测,能够帮助运营者和用户提前发现潜在的热点,从而为其决策提供指导。 …

风变MTP管理课,助力职场乘风破浪

相信很多人在自己的职场规划中,最终都是奔着管理岗而去的。然而,管理人员也并不是那么容易做的,因为做了管理岗就意味着要有一定的领导力,要会管理员工,要学会把任务分发给员工,学会识人、用人等。所以对于…