现在,如果有人问我要不要在项目中实施结对编程,我会第一个站出来大声地说:“坚决要实施结对”。
这个项目初次尝试走敏捷,从一开始对敏捷的不了解,团队成员的点滴摸索,到中间的渐入佳境,到最后的打回类CMM的原点,这种在一个项目中“大起大落”的经历使我倍加爱上敏捷,倍加怀念结对走过的日子。
项目启动初期,没有尝试结对编程,还是走CMM的老路子,一个人分配一个任务,然后各自拿着领到的任务,开始“孤零零”地在自己的电脑前埋头苦干:造代码、做测试、改问题,还好是项目初期,大家心情都比较轻松,不觉得枯燥无味,不觉得累,就这样走过了敏捷的摸索阶段。
到了第二个迭代,由于有了前期的摸索、经验教训,大家知道如何划分story、task,知道一个task必须控制在一两天就能完成的范围内,然后就有人提出尝试结对编程的想法,就这样揣着“先尝试下,不行再按老路子走”的策略开始走上了结对的路子。不试不知道,一试整个团队都爱上了这种开发模式。
和很多XP书上介绍的一样,两个人一台电脑,两个人一起讨论实现的细节,然后就编码,一个人在敲键盘,一个人在旁边“盯”着。负责“盯人”的人发现敲出的代码有问题,就立即指出来并讨论,然后“盯人”的操作鼠标选中有问题的代码,敲键盘的开始改选中的代码,有时“盯人”的人直接夺过鼠标键盘直接操刀写代码。敲码人在编码过程中,盯人的人也有时间去进一步思考细节,如边界情况是否处理了等,当然敲码人也经常会在敲码过程中提出疑问。就这样两个人边编码,边讨论,一起解决问题,质量提高了,整个过程大家也很愉悦,因为不再是“孤零零”一个了。结对也让人更加高效,更加专注,没有了经常间歇性的查看邮件的功夫。
实施结对,结合合理的task周期的制定,更能提高团队成员的战斗力,因为每天或每两天就能有一个任务、功能完成,这使得大家每天都很有成就感,大家都喜欢上了这样的韵律与节奏。
虽然中间实施结对使团队的效率高了很多,但由于在前期摸索过程中欠了一些“债”(一些本该在前面完成却没有完成的工作),感觉有点“一着错,满盘皆错”的感觉,这些债一点点的拖到了后面几个迭代中,外加对测试工作投入的不充分等等因素,项目到了后面一两个迭代,不再实施结对,又走回了单兵作战的路子,大家又是“孤零零”的作战单位,我自己觉得效率低了不少,编码过程中由于没有人“盯”,经常出现一些低级的问题,而且也没有了那种一两天就能完成一个任务,有功能出的节奏,所以现在我深深地怀念那些结对的日子。
我倡导项目中自始至终都实施结对,不管是编码、还是解决问题,我认为都可以结对,两个人的智慧绝对比一个人的大,考虑的问题绝对比一个人全面。从我们这个项目的实施中看,结对绝对不会是效率的瓶颈,结对只会提高效率、提高质量。而且通过结对,可以提高团队的技能,在结对的过程中,结对双方可以互相学习、分享设计、编码经验。
不过,结对的过程也要注意配合方式,否则就有可能会出现“怠工”的现象,尤其是那种对系统中原有功能进行扩展或者改造,且结对的两个人中有一个人对该功能比较熟悉,而另一个没有接触过该功能的情况,这时如果光顾实现的话,那么熟悉的人就会在电脑面前猛敲代码,另一个人在旁边只能干瞪眼,这样子就失去了结对的意义了。在这种情况下,实施结对的过程更应该注重“互动”,可以由熟悉该功能的人先讲解下该功能的已有实现以及后面打算如何进行扩展、改造,双方订下实施方案后,由不熟悉该功能的另一个人来编写测试用例(UT),这样可以增加它对该功能的了解,然后由熟悉该功能的人来实施编码,最后由写测试用例的人来跑测试代码,通过这种方式,一来达到完成任务的目的,二来也培养了可以维护该功能的后备人员,一举两得。
分享到:
相关推荐
"结对编程——敏捷开发" 结对编程(Pair Programming)是敏捷开发(Agile Development)中的一种实践方法,它是指两名开发者坐在一起,共享一台电脑,共同编写代码的过程。 结对编程的优点: 1. 提高代码质量:...
敏捷软件开发是一种以灵活性和快速响应变化为核心理念的开发方法论,旨在应对现代软件项目中常见的需求不确定性与频繁变更。敏捷开发强调通过迭代和增量的方式交付软件,以确保软件始终能满足客户的需求。这种方法...
这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。 ·讲述在预算和实践要求下,软件开发人员和项目经理如何使用敏捷开发完成项目。 ·使用真实案例讲解如何用极限编程来...
"ThoughtWorks文集II——敏捷实践的秘密"是该公司分享其在敏捷开发领域的深入理解和实践经验的集合,旨在帮助读者深入了解如何有效地实施敏捷方法并从中获益。 在敏捷开发的世界里,核心理念是迭代和增量式开发,...
在教育领域,"青蓝工程"是一个非常重要的师徒结对项目,旨在通过资深教师的指导,帮助新入职的教师快速提升教育教学...通过这样的师徒结对,我们可以快速融入教育行业,更好地实现自我价值,为我国的教育事业贡献力量。
《敏捷建模:极限编程和统一过程的有效实践》是一本深入探讨敏捷开发方法的书籍,主要聚焦于极限编程(XP)和统一过程(RUP)这两种广泛应用的敏捷框架。在这个快速变化的IT行业中,敏捷方法论已经成为软件开发的...
4、手拉手,共进步——红绿领巾友谊中队结对仪式整理.pdf
《敏捷软件开发——原则、模式与实践》是软件工程领域一本经典的著作,它深入探讨了敏捷方法论在软件开发中的应用。源代码是书中理论与实践相结合的重要载体,提供了具体的实现示例,帮助读者更好地理解和掌握敏捷...
这展示了一条从传统的开发工作到成为敏捷教练的成长之路。 9. 敏捷实践的扩大和影响 徐毅在演讲中也提到了如何扩大影响力,比如鼓励开放式沟通、建设专业的团队、推动持续集成和ATDD等实践,并成为社区的积极分子。...
敏捷方法在Ruby On Rails项目中的应用 一、敏捷方法概述 敏捷方法是一种基于迭代和增量式的开发方法论,强调团队...在BOSCO系统的开发过程中,敏捷方法和结对编程发挥了重要作用,帮助我们成功地开发了BOSCO系统。
结对编程在敏捷开发中并不是强制性的,但它可以帮助团队更好地适应变化,通过两个人的紧密协作提升软件质量。在实践中,结对编程的好处已经被许多实践者所认可,尽管它也面临一些批评和争议。无论如何,结对编程都是...
敏捷宣言是敏捷开发的基石,其四个价值观——个体和互动高于流程和工具,工作的软件高于详尽的文档,客户合作高于合同谈判,响应变化高于遵循计划——体现了敏捷的核心思想。这些价值观并非排斥右侧的元素,而是强调...
《Web开发敏捷之道》这本书是IT行业中关于敏捷开发方法在Web开发领域的深度探讨。敏捷开发是一种以人为本、迭代、增量的软件开发方法论,强调快速响应变化,提高开发效率和产品质量。书中涵盖了敏捷开发的核心理念、...
总结来说,这个信息管理系统设计与实现项目是一个综合性的信息系统,它有效地整合了数据管理、用户交互和后台处理等多个方面,为教育慈善活动提供了高效、可靠的信息化支持。通过 Delphi 和 SQL Server 的结合,实现...
在敏捷环境中,持续集成是关键实践,它要求开发人员频繁地将代码集成到主分支,配合自动化测试确保每次集成的质量。自动化测试包括单元测试、集成测试和验收测试,有助于快速发现并修复问题,提高软件质量。 5. ...
在"XP实践结对编程demo"中,我们可以看到两个关键的目录——`src`和`test`。`src`目录通常包含项目的主要源代码,而`test`目录则用于存放测试代码。在XP实践中,测试驱动开发(TDD, Test-Driven Development)是另一...
Scrum是目前最流行的敏捷开发框架之一。它围绕三个核心角色——产品负责人、开发团队和Scrum Master展开。产品负责人负责维护产品的待办事项列表(Product Backlog),确保团队对需求的理解清晰;开发团队是自我组织...