转载自:http://blog.csdn.net/cheny_com/article/details/6581741#
本文是“松结对编程”系列的第二篇。(之一,之二,之三,之四,之五,之六,之七,之八,此系列之九及之后文章请见栏目总目录。)
新人其实很少偷懒,因为一方面正处于入门学习的高峰期,另一方面工作时间不长需要得到企业和团队的认可。可为何他们工作总是不得力呢?
新人的真正问题在于无心办错事和好心办错事。
无心办错事包括没学过某种好的方法、不知道企业已经有某些可用代码或库、不懂业务等种种问题。
好心办错事包括想做一个比领导想想的更好的功能、过度思考了可复用性可维护性等。
这两个问题笔者都经历过(作为新人和老人),“避免”是最好的方法,而不是事后改正,这就需要在设计阶段和计划阶段从技术、管理两个方面来提前预防。
--------------------------
技术:轻量级设计
如果要把一个任务分配给一个“不放心的人”,有两种办法保证成功:师傅把设计做出来交给徒弟做,但是“设计文档”的详细程度很难把握,写少了做不出来,写多了等做出来了很多内容又多余了;师傅徒弟结对编程,但是很占用师傅的时间,尤其是倘若徒弟“实际上”(可惜只有上帝知道)完全可以胜任这个任务。
有两种解决方法。
1. 事前轻量级设计:预想陈述(有点隐喻的意思)
预想陈述是微软很久以前就使用的一种方法,任何人(不只是徒弟)有什么设计,不用写下来因为太费时间了而且还可能被抛弃,而是给大家讲一下。大家会给出评价和意见,以保证其正确性。然后此人就按这种方法去实现了,倘若成功了也被认可了,就简单写下来以供日后参考使用。由于系统已经存在,这个简单写下来的设计可以真的很简单。
在“松结对编程”里边,有两种类似的做法。
一种是师傅把自己的想法告诉徒弟(一般用一个白板,或一张白纸),徒弟提问师傅回答,到差不多为止。
二种相反,徒弟讲给师傅听,师傅师傅质疑和指导,到差不多为止。
两者都不要事先形成永久文档,但都在被证明可行(就是编码完成后)写一个简单文档记录。任何代码之外的能帮助理解当时做法的文字/图片都可以称为文档,没有字数限制。如果能和用户故事放在一起则更好,一个描述做了什么,一个描述怎么做的。
2. 前检查点
就是在某事开始的时候进行临时结对编程。一般发生在某个功能刚开始做的时候,详情会在之后的“日常活动篇”做详细描述。
管理:共同计划(共同估算,扑克牌估算)
预想陈述、前检查点虽然已经很轻量级了,但是如果师傅和徒弟都刚刚对需求(用户故事)有所了解,还给不出很清晰的思路的时候,比如在Scrum计划会上,怎样快速知道徒弟有没有理解需求,有没有大致的实现思路呢?那就是共同估算(扑克牌估算是共同估算的一种最好的实现形式)。
1. 共同估算
共同估算的原理和做法还是很复杂的,这里只简单说说,以后会有文章详细讲述。
共同估算就是师傅和徒弟基于相同的信息(一般是在计划会上听PO讲完故事的时候),一起说出自己认为做完这件事情需要多久。基本原理是:若两个人对某件事情的工期认识是相同的,那么他们的实现方法不分高下,用哪种方法都差不多。
为了防止人云亦云,一般需要采用匿名方法,而扑克牌估算就实现了高效有效的共同匿名估算(另有文章详述)。
2. 验收标准
为了基于相同的目标建立共同估算,也为了防止需求镀金或最终软件不能满足需求,师傅和徒弟要建立对需求的共同理解。
简单方法就是两者(其实是师傅和多个徒弟)一起参加估算会,一起听PO讲解故事。但最好是在此之后,建立一个“文档化”的验收标准。比如在一张故事卡/Excel表里……上写上“需集成;无性能要求……”等最简单的描述(请参考本博客的敏捷开发分类下一片关于验收标准的文章)。
共同估算+验收标准,使得师傅和徒弟(推广为高手和新手)使用大致相同的方法,做大致相同的东西。共同估算既是一个工作的过程,也是一个学习的过程,因为在理解做什么和怎么做的同时,徒弟也向师傅学到了东西。
--------------------------------------------
这里描述的基本上都是前期工作方式,基于莫非定理(只要事情能出错,就一定会出错)只在事前预防还是不够的,在日常工作中仍需要师傅与徒弟进行配合工作,具体细节将另有文章描述。
点击下载免费的敏捷开发教材:《火星人敏捷开发手册》
分享到:
相关推荐
"结对编程——敏捷开发" 结对编程(Pair Programming)是敏捷开发(Agile Development)中的一种实践方法,它是指两名开发者坐在一起,共享一台电脑,共同编写代码的过程。 结对编程的优点: 1. 提高代码质量:...
在实践中,将自组织团队理念与松结对编程方法相结合,可以进一步提升软件开发团队的工作效率和产品质量。 **应用实践案例:** 1. **角色分配与轮换**:团队内部可以根据成员的能力和兴趣进行角色分配,并定期进行...
敏捷开发和极限编程是两种现代软件开发方法论,旨在应对传统开发模式中面临的挑战,特别是对变更的响应能力和快速交付高质量软件的需求。 敏捷开发源于2001年,由一群业界专家提出的敏捷联盟,强调了人与人之间交互...
《敏捷软件开发原则、模式与实践》一书是由著名软件开发专家、软件工程大师Robert C. Martin所著。这本书自出版以来,就被视为敏捷开发领域内的经典之作,对于软件开发人员、项目经理以及软件项目领导者来说,它提供...
极限编程是另一个重要的敏捷框架,包括测试驱动开发(TDD)、结对编程、持续集成等实践,这些方法旨在提高代码质量,减少缺陷,并促进团队协作。 5. **设计模式**: 在敏捷开发中,设计模式是解决常见问题的有效...
《敏捷软件开发:原则、模式与实践》是Robert C. Martin(也被业界称为Uncle Bob)的经典著作,这本书深入探讨了敏捷开发的核心理念,并通过实际案例介绍了如何在项目中运用这些原则、模式和最佳实践。这本书分为两...
敏捷软件开发方法中,结对编程是一种实践,它要求两名开发人员在同一台计算机上协同工作。这一方法源自于国际大学生程序设计竞赛(ACM/ICPC)中的团队合作模式。结对编程强调的是两个人的协作,与传统方式相比,它...
3. **实践技巧**:书中涵盖了测试驱动开发(TDD)、重构、结对编程等敏捷实践,这些技巧有助于确保代码质量,减少缺陷,并促进团队协作。 4. **源码示例**:附带的源码文件,可能是为了便于读者理解和应用书中的...
本书《敏捷软件开发:原则、模式与实践》是由全球知名的软件开发专家和软件工程大师Robert C. Martin所著,该书是关于敏捷开发与极限编程的综合性、实用性指南。书中深入探讨了软件开发人员、项目经理以及软件项目...
敏捷开发强调模式的使用,书中的“模式”部分可能涵盖各种设计模式和技术实践,例如重构、持续集成、测试自动化、结对编程等。这些模式可以帮助团队更好地适应变化,提高代码质量和可维护性。例如,重构是改善现有...
**结对编程(Pair Programming)**是极限编程(XP,Extreme Programming)中的一项核心实践,旨在提高软件开发的效率和质量。在这个过程中,两位程序员坐在同一台电脑前,共同编写代码,一人为主程序员(Driver),...
"敏捷开发方法与实践交流.pdf"这本书籍可能更侧重于实际操作和案例研究,分享了敏捷开发在实际项目中的应用经验和教训,帮助读者理解如何在团队中实施敏捷,如何进行敏捷规划、需求管理、迭代开发、每日站会、回顾...
### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸和发展。本文旨在深入探讨交换编程的基本概念、实施背景及其在软件开发中的应用价值,并通过实例来...
《敏捷软件开发:原则模式与实践》是由著名软件开发专家、软件工程大师Robert C. Martin(别名Uncle Bob)所著的指导书籍,旨在为软件开发人员、项目经理以及软件项目领导提供解决实际问题的方法和策略。本书将敏捷...
敏捷开发的核心在于通过灵活的开发流程、高效的团队协作以及持续的学习与改进,来应对市场的快速变化和客户需求的不确定性。极限编程作为一种典型的敏捷开发方法,强调技术实践的同时,也非常注重团队协作和个人能力...
XP强调编程实践和技术上的卓越,如测试驱动开发(TDD)和结对编程。 3. 用户故事与迭代开发 在敏捷开发中,用户故事是描述用户需求的简短叙述,它帮助团队理解功能的实际价值。每个迭代都会完成一组用户故事,形成...
《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念、方法和技术的经典著作。作者通过本书向读者展示了如何在实际项目中运用敏捷原则,以提高软件开发的效率和质量。书中不仅包含了敏捷开发的基本概念,...
"英语组师徒结对师傅计划"旨在通过资深教师与新入职或经验较少的教师之间的合作,提升整个团队的专业能力,确保教学质量,并促进教师间的知识共享和技能传递。 首先,这个计划的核心是“师徒结对”。在这个模式下,...
《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念和技术的权威书籍,中文高清版使得读者能够更加清晰地理解其中的精髓。这本书是提升编程技能和项目管理能力的重要参考资料,对于IT行业的从业者来说,...
《敏捷软件开发:原则、模式与实践(C#版)》是一本深入探讨敏捷开发方法在C#编程语言中的应用的书籍。这本书旨在帮助开发者理解并掌握敏捷开发的核心理念,同时提供具体的C#代码示例,使理论与实践相结合。 1. ...