写点什么

将持续交付与结对编程相结合:经验教训

  • 2025-10-14
    北京
  • 本文字数:1364 字

    阅读完需:约 4 分钟

大小:685.17K时长:03:53
将持续交付与结对编程相结合:经验教训

结对编程和持续集成可以相辅相成。Ola Hast 和 Asgaut Mjølne Söderbom 在他们在QCon London关于结对编程的持续交付的演讲中提到,每天多次推送到主干分支上在孤立工作时很难实现,这会导致延迟、大型 PR(Pull Request)和合并问题。结对编程使得即时代码审查成为可能,更容易重构,减少了缺陷,提高了团队的韧性。


在之前的文章中,Hast 和 Mjølne Söderbom 提到他们的团队使用结对和群体编程与TDD(测试驱动开发);没有单独的任务或单独的代码审查。这种方法提高了代码质量,减少了浪费,并促进了知识的共享。频繁的休息有助于保持专注和流畅。


结对编程和持续集成(CI)相互支持。真正的 CI 意味着每天多次推送到主干分支,或者在你完成一个小任务后尽快推送,Mjølne Söderbom 说。当开发者孤立工作时,这很难实现,因为每个变更都需要外部审查和协调:


如果我们的四人开发者团队孤立/单独工作,几乎不可能实现真正的 CI。他们将不得不一直打断彼此。这直接导致他们产生更大的任务和更大的拉取请求。这也打乱了我们自己的流程。然后整个 CI 的概念就崩溃了。我们经常看到其他团队发生这种情况。


Hast 说,如果人们孤立地工作,重构将变得特别困难,通常会被推迟,并承诺“以后”进行,而这永远不会发生。当人们孤立工作时,它增加了一层协调,以进行急需的重构,这要么导致合并地狱,要么更多地承诺以后进行。


在组织中,有太多的时间被浪费在等待上,尤其是在软件行业。这种浪费的时间很少得到组织的关注,因为它可能很难清晰地被看到,特别是对于管理层来说。他们的工作方式意味着通常作为开发流程一部分的许多流程是多余的,Mjølne Söderbom 解释道:


例如,由于我们将非常小的块部署到生产环境中,并且能够将功能隐藏在特性开关后面,因此不需要在其他环境中进行测试。


Mjølne Söderbom 提到,他们花很少的时间审查来自拉取请求的代码,因为他们在结对编程时持续进行所有审查。这不是我们特意去做的;这只是这种工作方式的自然结果,他说。


当一起工作时,你不仅减少了任务期间的浪费,还大大减少了我们所说的返工浪费;所有可能在任务“完成”后发生的事情,Mjølne Söderbom 提到:


由于我们使用 TDD、结对编程和 CI,我们留下了可以显著的可测量的高价值。


这导致生产环境中的错误更少,更重要的是,代码更容易更改,我们可以更快地开发未来的软件,他总结道。


InfoQ 采访了Ola HastAsgaut Mjølne Söderbom,内容涉及重构以及他们的工作方式给他们带来的好处。


InfoQ:你们是如何进行重构的?


Asgaut Mjølne Söderbom:进行必要的重构是非常困难的,因为它需要与每个人协调。人们倾向于说:“我们稍后会在另一个拉取请求中进行这个重构”。也就是说永远不会。


当以小步骤工作并迅速将代码投入生产时,我们可以轻松地进行一些整理/重构,将其部署到生产环境中,然后回到我们正在做的事情。这对于改进遗留代码是一个巨大的好处。


InfoQ:你们从团队合作的方式中得到了什么好处?


Ola Hast:当你长时间与一个小团队紧密合作时,你会非常了解他们。因此,心理安全感很高,压力水平很低,我们在一起工作时有很多乐趣。


团队中的共享知识给了我们韧性,这在我们都有小孩的情况下非常有帮助,就像生病或学校会议一样。有人缺席通常不会影响我们的进度,因为我们有连续性。


原文链接:

https://www.infoq.com/news/2025/10/continuous-delivery-pairing/

2025-10-14 14:004160

评论

发布
暂无评论

netty系列之:搭建客户端使用http1.1的方式连接http2服务器

程序那些事

Java Netty 程序那些事 http2 11月日更

算法的本质是什么?程序员如何学好算法?

Sakura

Java 架构 面试 算法

毕业设计项目 电商秒杀系统

面向对象的猫

架构实战营 毕业总结

一雄

架构实战营 毕业总结

这都是什么

冇先生

数字化转型浪潮滚滚 区块链造就可信“数字经济底座”

CECBC

双十一来袭,阿里技术官终于把高并发系统设计整理成册了(全彩版开源)

Sakura

Java 架构 面试 后端 高并发

10种黑客类型,你知道几种?

喀拉峻

黑客思维 黑客 网络安全 信息安全

架构实战营 - 毕业总结

燕燕 yen yen

架构训练营

如何在 Spring 中使用事件

码界行者

Spring Boot Event 事件

2021全屋智能为何依然进展缓慢?

脑极体

linux之我常用的20条命令(之二)

入门小站

Linux

拥抱时序数据库,构筑IoT时代下智慧康养数据存储底座

华为云开发者联盟

数据 IoT 时序数据库 华为云 智慧康养

用得上的 JavaScript 代码片段和技巧

devpoint

JavaScript LocalStorage reduce 11月日更

防抖&节流

达摩

js 防抖 节流

CANN5.0黑科技解密 | 别眨眼!缩小隧道,让你的AI模型“身轻如燕”!

华为云开发者联盟

AI CANN 昇腾 模型压缩 模型缩小隧道

架构实战营模块毕业总结

老猎人

架构实战营

《重学Java高并发》手写生产者消费者模型

中间件兴趣圈

高并发 java; 11月日更

MatrixDB 4.3 发布:持续聚集等6大特性解读!

YMatrix 超融合数据库

数据库 时序数据库 分布式时序数据库

财经大课:运用现代经济学分析中国经济的关键常识

石云升

学习笔记 财经思维 11月日更

老板再也不用担心我不会K8s了,哪里不会点哪里,15个开放学习K8s的网址

奔着腾讯去

运维 云原生 Docker Desktop k8s资源 Go 语言

软件工程师的专业素养解读

卢卡多多

11月日更

重新认识 nginx 反向代理

liuzhen007

11月日更

架构实战训练营 - 毕业结语

NewBranSTONE

「架构实战营」

毕业总结

面向对象的猫

毕业总结

CSS架构之Acss层(中)

Augus

CSS 11月日更

制度密码经济学:了解区块链的经济影响

CECBC

架构实战营毕业总结

xyu

架构实战营

架构训练营毕业总结

老实人Honey

IDEA免费激活至2099年教程,亲测可用

Tom弹架构

Java 工具 IDEA

【设计模式】第九篇 - 适配器模式 - 你多大鞋,我多大脚

Brave

设计模式 适配器模式 11月日更

将持续交付与结对编程相结合:经验教训_后端_Ben Linders_InfoQ精选文章