提高效率 Or 增加成本,开发人员应如何理解结对编程?
作者:Michael Yang,云智慧架构师
什么是结对编程
结对编程(Pair programming)来自于极限编程 XP(eXtreme Programming),是它的最佳实践之一。顾名思义,结对编程就是两个程序员坐在一起,用一台开发机进行结对开发。
需注意,在国内“老带新”,“师傅带徒弟”的结对方式并非严格意义上的结对编程。由于“老带新”的结对方式资深程序员有更多的话语权,故而失去了结对本身的意义,因此这种结对形式只能算是新人培养的一种形式。
结对编程的实践形式
在采用结对编程实践时,不同的团队有不同的方式:
-
分工明确型:
- 一个人负责编写代码,另外一个人审查代码,负责代码的正确性和可读性;
- 一个人负责详细设计,一个人负责代码实现;
- 一个人写功能代码,一个人写测试用例。
-
共同合作型: 两个人共同讨论关于所开发功能的架构设计、编码实现、测试方法等,然后轮流做输入和观察的工作。此模式很好地做到了信息共享,得到互补的效果。
结对编程如何提高工作效率
结对编程是通过两个开发人员在同一个项目或者任务上并肩协作,轮流编写代码并检查合作伙伴的输出来提高工作效率,下面将详细讲解结对编程提高工作效率的具体方式。
-
打破知识壁垒,互相学习编程技巧,并降低产品需求设计缺陷;
-
互相配合,增强代码和产品交付质量,有效减少 BUG,从而减少测试人员工作量;
-
互相督促,减少“摸鱼”时间,有效提高工作时间;
-
互为 Backup,在能保证项目顺利进行的同时,可更好地处理人员流动。
结对编程的价值
-
从项目角度,提高了产品质量
在一般工作编程中,由于个人的想法难免有疏忽,遗漏和局限性,就会产生“自己看自己写的代码怎么都对”的误区。而在结对时,因为是两个人共同完成一个产品功能,所以双方可以站在不同的角度看到彼此的错误,从而避免了个人主观误区。另一方面,在结对编程过程中,由于代码已被至少一个程序员进行了审查,因此可以让代码的设计、测试和编码更加友好,减少了缺陷,从而提高了产品质量。
结对编程的形式也保证了产品的一个功能,代码实现结构至少可以被两个人知道,两个人可互相形成 Backup,而不会出现像常规编程一个人请假或者离职,后续项目无法推进的情况。此外,有些团队通过定期更换结对编程人员组合,以此保证团队中的每个成员都能熟悉项目的各个功能模块,从而形成项目集体所有的氛围,以及避免了“一人责任制,自扫门前雪”的现象。
更重要的是,在业务需求开发过程中,难免会出现缺陷。在排查问题过程中,结对编程的开发人员无需自己主观排查判断,而是可以通过与自己协同伙伴商议的形式攻克缺陷,这样的效果在最终也往往会是翻倍输出。
-
从团队角度,更好的促进了团队协作氛围以及知识传递分享
从团队角度出发,相比于传统独立工位“栅栏”的工作方式,结对编程一方面更好的实现了知识传递分享,另一方面,结对编程这种即时的沟通交流方式也让团队成员关系变得更加融洽,从而更有利于创建和谐的团队氛围。
根据“乔哈里视窗(沟通视窗)”的理论,在实际工作和人际交往中,共同的开放区越多,沟通起来也就越便利,越不易产生误会。当我们向别人扩大我们的公开象限时,就会更多的和对方建立良好的关系,结对编程便是很好的一种沟通形式。
沟通视窗四象限:
-
公开象限:自己知道,别人也知道;
-
隐私象限:自己知道,别人不知道;
-
盲点象限:自己不知道,别人知道;
-
潜能象限:自己不知道,别人也不知道。
第一个区域,自己知道别人也知道的信息叫做公开区信息;第二个区域,自己知道别人不知道的信息叫做隐私;第三个区域,自己不知道别人知道的信息叫做盲区信息;第四个区域,自己不知道别人也不知道的信息叫做未知区(潜能区)信息。
-
从个人角度,提高了个人能力与工作效率
从个人角度出发,在结对合作时,个人不仅会从结对合作伙伴那里学到新的知识和技能,还能受到对方工作方式和态度的影响。尺有所短,寸有所长,每个人都有自己的优点和长处,值得被学习和尊重。当团队中的每个人的能力提高了,其实就是整个团队能力的提高。
工作效率上,结对编程让大家更专注在工作上,工作外的一些个人活动将不会进行。每个人都有自己要负责的任务,某种程度上,结对编程让两个人内部形成了一个互相监督,共同进步的小团队,为了团队任务的完成,两个人都会专注在自己的任务上,从而大幅提高工作输出的效率。
总结
结对编程其实是在结对磨合中慢慢形成的一种团队共同价值观和文化。这个过程是漫长且潜移默化的,在结对编程中必然经历分歧和统一的过程,而很多团队在分歧中就直接停止了实践,也就无法看到结对带来的好处。因此,在开始结对编程之前,管理人员应全面地考虑你的团队是否真的适合结对编程。
开源福利
云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现符合自己业务需求的炫酷可视化大屏。 同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置, 面向复杂需求场景能够保证高效开发与交付。
点击下方地址链接,欢迎大家给 FlyFish 点赞送 Star。参与组件开发,更有万元现金等你来拿。
GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish
Gitee 地址:https://gitee.com/CloudWise/fly-fish
万元现金活动: http://bbs.aiops.cloudwise.com/t/Activity
微信扫描识别下方二维码,备注【飞鱼】加入AIOps社区飞鱼开发者交流群,与 FlyFish 项目 PMC 面对面交流~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TT 语音落地 Zadig:使用 Helm 场景数百微服务接入,环境治理搞得定!
Zadig on Github Zadig on Gitee TTChat 是趣丸科技(TT语音)旗下的一款针对海外用户的游戏社交产品,包含实时语聊房、IM、开黑交友、赛事等一系列业务场景。团队对云原生技术非常推崇,加之在国内的 TT 语音产品上也有了一定的技术探索与积累,所以在新业务创立之初,我们就全面使用了 Kubernetes 与 Istio 进行服务治理。 本文作者:吴畏TTChat技术负责人@趣丸 01回望过去 起初在团队规模较小的时候,我们简单使用 GitLab CI 搭建了流水线,实现完全容器化的构建和部署,维护了开发与生产两套环境。经过了一年多的产品迭代,团队“创造”出了近两百个微服务,也因为团队规模变多,不断产生出了协作问题,比如多分支开发与单一共享环境经常引起的服务覆盖问题、缺少不同功能的环境以便提供给不同角色的人使用等等。这就催生出了多套环境的需求,面对如此多的服务,亟需一个合适的工具/平台来帮助我们快速地“复制”多套新环境出来,正当我们一筹莫展的时候,我们看到了号称具有「强大的云原生多环境能力」的 Zadig。 02共创之路 从去年的 10 月开始,我们开始尝...
- 下一篇
云原生行业应用崛起,从“可用”到“好用”有多远?
云原生与数字化转型正在相互促进。 根据中国信通院发布的《云计算白皮书》,2020年我国云原生在金融、制造、服务业等行业的应用快速崛起,行业数字化转型的带动效应初步显现。另一方面,采用云原生架构的生产集群规模显著提升,但规模化应用带来的安全、性能和可靠性等问题仍需考虑。 如何破除这些用户侧的顾虑,让云原生成为行业IT架构的重要组成部分真正发挥价值?网易数帆轻舟云原生平台负责人冯常健表示,实现云原生技术从“可用”到“好用”的转变,有四个关键点: 高可用架构:通过应用多活架构,将金融业务的管理层、流量层、应用层、数据层等高可用方案互相结合与联动,保证企业端到端业务的连续性。 稳定性治理:云原生稳定性治理“运维经验”可交付,建立“稳定性改进循环”, 具备稳定性经验沉淀能力,解决复杂动态异构环境的稳定性保障难题。 历史兼容性:构建无侵入式服务框架 + 服务网格“双引擎”微服务治理模型。实现进化型架构,从微服务框架平滑过渡到服务网格。 规模化支持:大规模破除单K8s集群容量、弹性、容灾、隔离等方面的限制和约束,实现分布式技术平台基础架构的水平扩展和版本演进。 冯常健围绕这四个方面分享了团队针对典型...
相关文章
文章评论
共有0条评论来说两句吧...