本文是“松结对编程”系列的第一篇。(之一,之二,之三,之四,之五,之六)
传说中的结对编程,大致结构是两个人共用一台电脑,一个开发,一个测试,以随时评审来抵消返工时间损失。
传说归传说,谁也没有见过。问题出在哪里?有两种主要原因。
一是来自高层的,高层感觉两个人只有一个人干活,实在是有点浪费。“评审抵消返工时间”虚无缥缈,但每天只有一个人干活却是现实情况。
二是来自基层的,两人若有高低,高手肯定觉得还不如我一个人干的快;两人若旗鼓相当,难免产生争执。
其实在我们身边一直有一种方法很像结对编程:“师徒制度”,就是每个新人来到公司,都指派一个师傅带着,在技术与业务方面提供指导。他们既不用一台电脑,也不是老死不相往来,这其实就是一种“松散”的结对编程。只不过多数企业虽然有这种制度或实践,但却很少有很清晰的定义,难免限制了这种实践的效果。本系列的目标,就是从人员结构、计划实践、日常工作实践、绩效考核等各个角度,来完整地思考和建立这种制度。
-------------------------------------------
挑选小组长(师傅)基本原则
乐于助人,有责任心,善于沟通,擅长管理,技术精湛,业务精通……很可惜,好词汇越多,越难找到符合的人。不过,一些基本原则还是要考虑的:
1. 尽量找对业务有兴趣的人
整体上偏业务的人未来有更好的发展(这是我2001年的上司的原话,事实证明很对),由于有行业壁垒也较少跳槽。由于小组长角色未来将被提拔为更高的项目经理、产品经理,对业务的了解也会为此做好铺垫。
2. 尽量找善于沟通的人
善于沟通的程序员成长更快(还是那位上司的原话),也更能帮助别人成长。
挑选组员(徒弟)基本原则
1. 徒弟能力一定要低于师傅(应该说:师傅一定要高于徒弟)
很常见的一种做法是把几个水平相当的人放在一起工作,认为这样他们可以互相学习,其实不然。
之前我们在的项目组经常发生技术“争论”,发生的次数多了,我们发现一个规律:每次争执不下的,都是两个技术相当的人,而每次争执的解决,都是一个水平更高的人给出一个截断众流的方案,然后大家散去。
2. 徒弟年龄不要太大
如果有两个水平相当、月薪要求都是6000的程序员,当然找年轻的了,有发展潜力,后劲足。
挑选组长(大项目经理)基本原则
1. 项目经理必须喜欢业务胜过技术
项目经理是掌舵的而不是干活的,因此必须对业务有深刻理解。
2. 项目经理最好精通技术
这里不讨论是否存在“不懂技术却精通管理”的项目经理,但是如果目标是项目成功而非证明奇迹的确存在,项目经理应该首选那些从小组长成长起来的既懂业务技术又精湛的人选。
这里的“精通技术”不是从技术实现层面考虑的,而是从“技术想象力”层面考虑的,就是说他必须能想象到有某种技术存在。比如以前我们遇到一个程序员写了一大堆重复代码,原因就在于他的想象力受到了局限,明明有虚函数、模板等各种方法来简化代码,却没有想到。“没有学到”是无法避免的现实情况,但“没有想到”是可以避免的。
团队结构和运行理念
既然待在某个“位置”上,每个人必有不同的职责。这里就不一一列出了,因为猜都猜得出来(比如师傅要带徒弟之类)。下面只列出松结对编程与一般小组的核心差异。
1. 对每个小组(师傅+1~3个徒弟)整体考核
也就是师傅要负责到底,不能出现“他刚来所以把事情办砸了”的情况。这里的负责到底,包括计划、估算、跟进、进度、质量、徒弟成长……等一干事情,本系列的其他文章中都将展开描述。
2. 在工作中学习
尽管“松”,但还是“结对编程”,学习和指导过程实在生产过程中集成的,因此师徒关系的成败不只是人员成长,还包括任务和项目的成败。这首先是一个生产团队,其次才是学习团队。
------------------------------------------------
人员挑选好了,接下来就是要进行计划、跟踪等日常工作,请参考本系列的其他文章。
由于这是本系列的第一篇文章,因此其他文章尚未完整出台,请关注本博客blog.csdn.net/cheny_com。
点击下载免费的敏捷开发教材:《火星人敏捷开发手册》


分享到:
相关推荐
结对编程(Pair Programming)是敏捷开发(Agile Development)中的一种实践方法,它是指两名开发者坐在一起,共享一台电脑,共同编写代码的过程。 结对编程的优点: 1. 提高代码质量:通过结对编程,可以减少编码...
总之,自组织团队与松结对编程是一种高效的软件开发模式,它通过增强团队协作和自主性,提高了开发效率和代码质量。在实践中,需要综合考虑团队的特点和项目需求,灵活运用各种方法和工具,以达到最佳效果。
结对编程作为敏捷软件开发方法之一,自被提出以来就一直受到业界的广泛关注。在这一背景下,王鹏生先生的研究《结对编程开发人员之间若干关系问题的探讨》为我们深入分析了结对编程在实践中的应用及其带来的人员关系...
Martin深入解析了极限编程中的各种实践,如持续集成、测试驱动开发(Test-Driven Development, TDD)、重构、结对编程等,这些都是敏捷开发的核心实践。 此外,书中还探讨了UML(统一建模语言)和设计模式在面向...
《敏捷软件开发原则、模式与实践》一书是由著名软件开发专家、软件工程大师Robert C. Martin所著。这本书自出版以来,就被视为敏捷开发领域内的经典之作,对于软件开发人员、项目经理以及软件项目领导者来说,它提供...
敏捷结对编程实践管理资料.pptx
**结对编程(Pair Programming)**是极限编程(XP,Extreme Programming)中的一项核心实践,旨在提高软件开发的效率和质量。在这个过程中,两位程序员坐在同一台电脑前,共同编写代码,一人为主程序员(Driver),...
### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸和发展。本文旨在深入探讨交换编程的基本概念、实施背景及其在软件开发中的应用价值,并通过实例来...
1. 完整团队:一个完整的敏捷团队通常包括开发者、测试者、产品经理和设计师等角色。所有成员共同参与决策,协作完成项目,确保团队内部沟通高效,从而快速响应变化。 2. 迭代开发:敏捷开发将大型项目拆分为一系列...
- **结对编程**:两名开发人员共享同一台电脑,共同编写代码,提高代码质量和团队协作能力。 #### 五、总结 敏捷开发的核心在于通过灵活的开发流程、高效的团队协作以及持续的学习与改进,来应对市场的快速变化和...
结对编程是一种敏捷软件开发方法,它在Java Web开发课程实践教学中有着重要的应用价值。本文将对结对编程在Java Web开发课程实践教学中的应用进行探讨,并对其效果进行分析。 结对编程的概念源于极限编程(XP),它...
"火星人敏捷开发手册 2012-12-31.pdf"可能是一本详细介绍敏捷开发理念、原则和实践的手册,其中可能涵盖了敏捷的核心价值观、十二项原则,以及不同敏捷框架如Scrum、XP(极限编程)、Kanban等的具体应用。...
敏捷开发是一种快速响应变化、以用户需求为中心的软件开发方法论。它强调团队协作、迭代式开发和持续改进,旨在提高软件项目的效率和质量。在本文中,我们将深入探讨敏捷开发的核心理念、实践策略以及其在实际项目中...
- 分布式结对编程为软件开发提供了一种新的协作模式,尤其适用于地理位置分散的团队。 - 尽管存在技术挑战,但通过适当的培训和支持,这些障碍是可以克服的。 - 分布式结对编程不仅能够保持传统结对编程的优势,还能...
本篇将深入探讨敏捷开发的关键理念、核心原则以及九大实践,旨在帮助软件开发团队提升效率、质量和响应速度。 ### 敏捷开发概述 敏捷开发起源于极限编程(XP),由一群软件开发专家于2001年在美国犹他州雪鸟...
3. **XP(极限编程)**:提倡频繁发布、结对编程、测试驱动开发(TDD)、持续集成等实践,以提高代码质量。 4. **DSDM(动态系统开发方法)**:注重快速交付,强调业务参与和时间盒管理。 ### 四、敏捷实践与工具 ...
极限编程(Extreme Programming, XP)是敏捷开发的一种具体实践,它倡导团队协作、持续集成、测试驱动开发以及客户反馈的即时响应。XP的关键实践包括:小批量发布、结对编程、单元测试、持续集成、重构、计划游戏、...
《敏捷建模:极限编程和统一过程的有效实践》是一本深入探讨敏捷开发方法的书籍,主要聚焦于极限编程(XP)和统一过程(RUP)这两种广泛应用的敏捷框架。在这个快速变化的IT行业中,敏捷方法论已经成为软件开发的...