传说中的结对编程,大致结构是两个人共用一台电脑,一个开发,一个测试,以随时评审来抵消返工时间损失。
传说归传说,谁也没有见过。问题出在哪里?有两种主要原因。
一是来自高层的,高层感觉两个人只有一个人干活,实在是有点浪费。“评审抵消返工时间”虚无缥缈,但每天只有一个人干活却是现实情况。
二是来自基层的,两人若有高低,高手肯定觉得还不如我一个人干的快;两人若旗鼓相当,难免产生争执。
其实在我们身边一直有一种方法很像结对编程:“师徒制度”,就是每个新人来到公司,都指派一个师傅带着,在技术与业务方面提供指导。他们既不用一台电脑,也不是老死不相往来,这其实就是一种“松散”的结对编程。只不过多数企业虽然有这种制度或实践,但却很少有很清晰的定义,难免限制了这种实践的效果。本系列的目标,就是从人员结构、计划实践、日常工作实践、绩效考核等各个角度,来完整地思考和建立这种制度。
-------------------------------------------
挑选小组长(师傅)基本原则
乐于助人,有责任心,善于沟通,擅长管理,技术精湛,业务精通……很可惜,好词汇越多,越难找到符合的人。不过,一些基本原则还是要考虑的:
1. 尽量找对业务有兴趣的人
整体上偏业务的人未来有更好的发展(这是我2001年的上司的原话,事实证明很对),由于有行业壁垒也较少跳槽。由于小组长角色未来将被提拔为更高的项目经理、产品经理,对业务的了解也会为此做好铺垫。
2. 尽量找善于沟通的人
善于沟通的程序员成长更快(还是那位上司的原话),也更能帮助别人成长。
挑选组员(徒弟)基本原则
1. 徒弟能力一定要低于师傅(应该说:师傅一定要高于徒弟)
很常见的一种做法是把几个水平相当的人放在一起工作,认为这样他们可以互相学习,其实不然。
之前我们在的项目组经常发生技术“争论”,发生的次数多了,我们发现一个规律:每次争执不下的,都是两个技术相当的人,而每次争执的解决,都是一个水平更高的人给出一个截断众流的方案,然后大家散去。
2. 徒弟年龄不要太大
如果有两个水平相当、月薪要求都是6000的程序员,当然找年轻的了,有发展潜力,后劲足。
挑选组长(大项目经理)基本原则
1. 项目经理必须喜欢业务胜过技术
项目经理是掌舵的而不是干活的,因此必须对业务有深刻理解。
2. 项目经理最好精通技术
这里不讨论是否存在“不懂技术却精通管理”的项目经理,但是如果目标是项目成功而非证明奇迹的确存在,项目经理应该首选那些从小组长成长起来的既懂业务技术又精湛的人选。
这里的“精通技术”不是从技术实现层面考虑的,而是从“技术想象力”层面考虑的,就是说他必须能想象到有某种技术存在。比如以前我们遇到一个程序员写了一大堆重复代码,原因就在于他的想象力受到了局限,明明有虚函数、模板等各种方法来简化代码,却没有想到。“没有学到”是无法避免的现实情况,但“没有想到”是可以避免的。
团队结构和运行理念
既然待在某个“位置”上,每个人必有不同的职责。这里就不一一列出了,因为猜都猜得出来(比如师傅要带徒弟之类)。下面只列出松结对编程与一般小组的核心差异。
1. 对每个小组(师傅+1~3个徒弟)整体考核
也就是师傅要负责到底,不能出现“他刚来所以把事情办砸了”的情况。这里的负责到底,包括计划、估算、跟进、进度、质量、徒弟成长……等一干事情,本系列的其他文章中都将展开描述。
2. 在工作中学习
尽管“松”,但还是“结对编程”,学习和指导过程实在生产过程中集成的,因此师徒关系的成败不只是人员成长,还包括任务和项目的成败。这首先是一个生产团队,其次才是学习团队。
------------------------------------------------
人员挑选好了,接下来就是要进行计划、跟踪等日常工作
ref:http://blog.csdn.net/cheny_com/article/details/6581517
分享到:
相关推荐
松结对编程是一种灵活的结对编程方式,它结合了传统结对编程的优点(如代码质量的提升、知识的快速传播等),同时也允许一定的灵活性,以适应不同的项目需求和个人偏好。 **优势:** 1. **提高代码质量**:两个人...
- **结对编程**:两名开发人员共享同一台电脑,共同编写代码,提高代码质量和团队协作能力。 #### 五、总结 敏捷开发的核心在于通过灵活的开发流程、高效的团队协作以及持续的学习与改进,来应对市场的快速变化和...
结对编程,作为一种创新的软件开发实践,源自敏捷开发的理念,旨在提高代码质量和团队协作效率。"结对编程启示录"这本书深入浅出地探讨了这一主题,为小团队提供了宝贵的资源,帮助他们在有限的人力条件下产出高质量...
6. **结对编程**:两名开发人员共享一个工作区,共同编写代码,促进知识共享和即时反馈。 7. **每日站立会议**:团队成员每日简短讨论进展和问题,提高透明度和协作效率。 8. **用户故事**:将客户需求转化为可...
总之,《敏捷软件开发:原则、模式与实践》不仅是一本技术书籍,更是软件开发人员了解和掌握敏捷开发方法的必备指南。它将帮助读者理解敏捷开发的核心理念,掌握关键实践,并在软件开发实践中取得成功。
Martin是软件工程领域的权威人士,他不仅是敏捷开发运动的先行者之一,还是多本畅销书的作者。他的贡献不仅限于著书立说,还体现在他在Object Mentor公司的职务上,该公司为全球各地的客户提供软件咨询与培训服务。...
书中内容结构清晰,除了对敏捷开发方法的介绍,还包含了一系列实践案例和模式的详细讲解。它不仅关注理论,还注重如何将这些原则和模式实际应用到软件开发的过程中。因此,这本书为那些想要了解和掌握敏捷开发精髓的...
6. **结对编程**:一种开发实践,两个程序员共享同一台计算机,一起编写代码,提高代码质量,促进知识共享。 7. **持续集成**:开发人员频繁地将新代码集成到主分支,通过自动化构建和测试,确保代码的稳定性和兼容...
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法论,旨在适应快速变化的需求。在当前信息技术(IT)行业中,敏捷开发已经成为项目管理与软件开发的主流实践。本官方文档将深入探讨敏捷开发的核心理念、原则和...
在这个“敏捷开发教程”的课件中,你可能会学习到如何实施这些原则,以及如何规划敏捷项目、进行用户故事管理、进行结对编程、使用计划游戏来调整项目进度等。这些实践将帮助初学者理解如何在实际项目中应用敏捷开发...
XP的关键实践包括:小批量发布、结对编程、单元测试、持续集成、重构、计划游戏、简明设计、现场客户和集体所有权。这些实践旨在提高软件质量,减少风险,并允许团队迅速适应需求变化。 统一过程(Unified Process,...
- **结对编程**:这是一种强调合作与即时反馈的技术。通过一人编写代码、另一人进行审查的方式,可以显著提高代码质量和团队沟通效率。 - **持续集成**:通过频繁地合并代码到主分支中,并进行自动化构建和测试,...
敏捷开发是一种以人为核心、迭代、逐步交付的软件开发方法论。它强调灵活应对变化,鼓励团队间的协作和沟通,以提高软件质量和满足客户需求。敏捷开发的核心价值观包括个体和互动高于流程和工具,可工作的软件高于...
而XP则是一系列实践的集合,比如测试驱动开发、持续集成、结对编程等,以促进开发过程的高效率和高质量。 在敏捷开发中,团队的自组织和协作精神至关重要。团队成员通常具有跨功能的技能,能够互相协助完成各种任务...
极限编程(XP)是敏捷开发的一个具体实践,它在Scrum的基础上强调了几个关键原则,例如先测试后编码、结对编程和客户参与。XP的实践与Scrum相辅相成,两者都是为了增强开发团队的敏捷性和客户满意度。 总的来说,...
1. **敏捷开发**:敏捷开发是一种以人为本,迭代且适应变化的软件开发方法论。它强调快速响应需求变化,提高团队协作效率,重视软件的可维护性和质量。敏捷宣言是其核心,包括四个价值观:个体和互动高于流程和工具...
《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念、方法和技术的权威著作。这本书由著名软件开发专家Robert C. Martin撰写,旨在帮助开发者和团队更有效地进行软件开发,提升软件项目的成功率。书中...
7. **结对编程**:两个程序员一起工作在同一台电脑上,互为对方的审查者,促进知识共享,提高代码质量。 8. **重构**:在保持系统功能不变的情况下改进代码结构,提高代码的可读性和可维护性。 9. **站立会议...
敏捷开发强调模式的使用,书中的“模式”部分可能涵盖各种设计模式和技术实践,例如重构、持续集成、测试自动化、结对编程等。这些模式可以帮助团队更好地适应变化,提高代码质量和可维护性。例如,重构是改善现有...