本文是“松结对编程”系列的第一篇。(之一,之二,之三,之四,之五,之六)
传说中的结对编程,大致结构是两个人共用一台电脑,一个开发,一个测试,以随时评审来抵消返工时间损失。
传说归传说,谁也没有见过。问题出在哪里?有两种主要原因。
一是来自高层的,高层感觉两个人只有一个人干活,实在是有点浪费。“评审抵消返工时间”虚无缥缈,但每天只有一个人干活却是现实情况。
二是来自基层的,两人若有高低,高手肯定觉得还不如我一个人干的快;两人若旗鼓相当,难免产生争执。
其实在我们身边一直有一种方法很像结对编程:“师徒制度”,就是每个新人来到公司,都指派一个师傅带着,在技术与业务方面提供指导。他们既不用一台电脑,也不是老死不相往来,这其实就是一种“松散”的结对编程。只不过多数企业虽然有这种制度或实践,但却很少有很清晰的定义,难免限制了这种实践的效果。本系列的目标,就是从人员结构、计划实践、日常工作实践、绩效考核等各个角度,来完整地思考和建立这种制度。
-------------------------------------------
挑选小组长(师傅)基本原则
乐于助人,有责任心,善于沟通,擅长管理,技术精湛,业务精通……很可惜,好词汇越多,越难找到符合的人。不过,一些基本原则还是要考虑的:
1. 尽量找对业务有兴趣的人
整体上偏业务的人未来有更好的发展(这是我2001年的上司的原话,事实证明很对),由于有行业壁垒也较少跳槽。由于小组长角色未来将被提拔为更高的项目经理、产品经理,对业务的了解也会为此做好铺垫。
2. 尽量找善于沟通的人
善于沟通的程序员成长更快(还是那位上司的原话),也更能帮助别人成长。
挑选组员(徒弟)基本原则
1. 徒弟能力一定要低于师傅(应该说:师傅一定要高于徒弟)
很常见的一种做法是把几个水平相当的人放在一起工作,认为这样他们可以互相学习,其实不然。
之前我们在的项目组经常发生技术“争论”,发生的次数多了,我们发现一个规律:每次争执不下的,都是两个技术相当的人,而每次争执的解决,都是一个水平更高的人给出一个截断众流的方案,然后大家散去。
2. 徒弟年龄不要太大
如果有两个水平相当、月薪要求都是6000的程序员,当然找年轻的了,有发展潜力,后劲足。
挑选组长(大项目经理)基本原则
1. 项目经理必须喜欢业务胜过技术
项目经理是掌舵的而不是干活的,因此必须对业务有深刻理解。
2. 项目经理最好精通技术
这里不讨论是否存在“不懂技术却精通管理”的项目经理,但是如果目标是项目成功而非证明奇迹的确存在,项目经理应该首选那些从小组长成长起来的既懂业务技术又精湛的人选。
这里的“精通技术”不是从技术实现层面考虑的,而是从“技术想象力”层面考虑的,就是说他必须能想象到有某种技术存在。比如以前我们遇到一个程序员写了一大堆重复代码,原因就在于他的想象力受到了局限,明明有虚函数、模板等各种方法来简化代码,却没有想到。“没有学到”是无法避免的现实情况,但“没有想到”是可以避免的。
团队结构和运行理念
既然待在某个“位置”上,每个人必有不同的职责。这里就不一一列出了,因为猜都猜得出来(比如师傅要带徒弟之类)。下面只列出松结对编程与一般小组的核心差异。
1. 对每个小组(师傅+1~3个徒弟)整体考核
也就是师傅要负责到底,不能出现“他刚来所以把事情办砸了”的情况。这里的负责到底,包括计划、估算、跟进、进度、质量、徒弟成长……等一干事情,本系列的其他文章中都将展开描述。
2. 在工作中学习
尽管“松”,但还是“结对编程”,学习和指导过程实在生产过程中集成的,因此师徒关系的成败不只是人员成长,还包括任务和项目的成败。这首先是一个生产团队,其次才是学习团队。
------------------------------------------------
人员挑选好了,接下来就是要进行计划、跟踪等日常工作,请参考本系列的其他文章。
由于这是本系列的第一篇文章,因此其他文章尚未完整出台,请关注本博客blog.csdn.net/cheny_com。
点击下载免费的敏捷开发教材:《火星人敏捷开发手册》
分享到:
相关推荐
结对编程(Pair Programming)是敏捷开发(Agile Development)中的一种实践方法,它是指两名开发者坐在一起,共享一台电脑,共同编写代码的过程。 结对编程的优点: 1. 提高代码质量:通过结对编程,可以减少编码...
总之,自组织团队与松结对编程是一种高效的软件开发模式,它通过增强团队协作和自主性,提高了开发效率和代码质量。在实践中,需要综合考虑团队的特点和项目需求,灵活运用各种方法和工具,以达到最佳效果。
敏捷软件开发方法中,结对编程是一种实践,它要求两名开发人员在同一台计算机上协同工作。这一方法源自于国际大学生程序设计竞赛(ACM/ICPC)中的团队合作模式。结对编程强调的是两个人的协作,与传统方式相比,它...
极限编程(XP)是敏捷开发的一种具体实践,由Kent Beck提出。XP包含了十二个关键实践,如完整团队,强调所有项目参与者共同工作,增进沟通和协作;计划游戏,通过定期规划确保团队按照优先级开发;客户测试,让客户...
《敏捷软件开发原则、模式与实践》一书是由著名软件开发专家、软件工程大师Robert C. Martin所著。这本书自出版以来,就被视为敏捷开发领域内的经典之作,对于软件开发人员、项目经理以及软件项目领导者来说,它提供...
**结对编程(Pair Programming)**是极限编程(XP,Extreme Programming)中的一项核心实践,旨在提高软件开发的效率和质量。在这个过程中,两位程序员坐在同一台电脑前,共同编写代码,一人为主程序员(Driver),...
### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸和发展。本文旨在深入探讨交换编程的基本概念、实施背景及其在软件开发中的应用价值,并通过实例来...
《敏捷软件开发:原则、模式与实践》是Robert C...通过学习,开发者不仅能理解敏捷开发的基本理念,还能掌握具体实践技巧,从而提高团队的开发效率和软件质量。无论是初学者还是经验丰富的专业人士,都能从中受益匪浅。
书中内容结构清晰,除了对敏捷开发方法的介绍,还包含了一系列实践案例和模式的详细讲解。它不仅关注理论,还注重如何将这些原则和模式实际应用到软件开发的过程中。因此,这本书为那些想要了解和掌握敏捷开发精髓的...
极限编程是另一个重要的敏捷框架,包括测试驱动开发(TDD)、结对编程、持续集成等实践,这些方法旨在提高代码质量,减少缺陷,并促进团队协作。 5. **设计模式**: 在敏捷开发中,设计模式是解决常见问题的有效...
1. 完整团队:一个完整的敏捷团队通常包括开发者、测试者、产品经理和设计师等角色。所有成员共同参与决策,协作完成项目,确保团队内部沟通高效,从而快速响应变化。 2. 迭代开发:敏捷开发将大型项目拆分为一系列...
3. **实践技巧**:书中涵盖了测试驱动开发(TDD)、重构、结对编程等敏捷实践,这些技巧有助于确保代码质量,减少缺陷,并促进团队协作。 4. **源码示例**:附带的源码文件,可能是为了便于读者理解和应用书中的...
- **结对编程**:两名开发人员共享同一台电脑,共同编写代码,提高代码质量和团队协作能力。 #### 五、总结 敏捷开发的核心在于通过灵活的开发流程、高效的团队协作以及持续的学习与改进,来应对市场的快速变化和...
《敏捷软件开发:原则、模式与实践》是软件开发领域一本经典的著作,它深入探讨了敏捷开发的方法、理念以及在实际工作中的应用。本书对于新手来说,是一本极佳的入门指南,它不仅介绍了敏捷开发的基本概念,还通过...
Martin深入解析了极限编程中的各种实践,如持续集成、测试驱动开发(Test-Driven Development, TDD)、重构、结对编程等,这些都是敏捷开发的核心实践。 此外,书中还探讨了UML(统一建模语言)和设计模式在面向...
结对编程是一种敏捷软件开发方法,它在Java Web开发课程实践教学中有着重要的应用价值。本文将对结对编程在Java Web开发课程实践教学中的应用进行探讨,并对其效果进行分析。 结对编程的概念源于极限编程(XP),它...
《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念、方法和技术的经典著作。作者通过本书向读者展示了如何在实际项目中运用敏捷原则,以提高软件开发的效率和质量。书中不仅包含了敏捷开发的基本概念,...
"火星人敏捷开发手册 2012-12-31.pdf"可能是一本详细介绍敏捷开发理念、原则和实践的手册,其中可能涵盖了敏捷的核心价值观、十二项原则,以及不同敏捷框架如Scrum、XP(极限编程)、Kanban等的具体应用。...
敏捷开发是一种快速响应变化、以用户需求为中心的软件开发方法论。它强调团队协作、迭代式开发和持续改进,旨在提高软件项目的效率和质量。在本文中,我们将深入探讨敏捷开发的核心理念、实践策略以及其在实际项目中...