禅道博客

分享专业技术知识,文章内容干货满满

如何实施极限编程?

2022-09-05 09:00:00
春哥
原创 80
摘要:极限编程是一种复利型的投资,越早实施,回报率越高。

极限编程虽然是敏捷开发的一种主要方法,但真正实施极限编程的团队比率很低,只有可怜的7%(数据来源:《2021年度敏捷状态报告》)。是什么原因阻碍了极限编程的推广和实施呢?结合我们自身实施极限编程的经验体会来看,我觉得可能有如下的原因:


首先 极限编程并没有Scrum和看板那么酷。Scrum会对流程有明显的改动,很容易让团队感知到变化。作为改革的推动者,Scrum教练也更能体现自己的价值。看板本身就非常强调可视化,所以在价值呈现方面有先天的优势。但是极限编程的实践更多的是集中在工程侧,流程方面相关的实践又与Scrum有相似的地方,不太容易体现自己的价值。


其次 极限编程的实施需要长期的过程,坚持下来并没有那么容易。就拿极限编程里面最简单的实践编码规范来讲,相信每一个研发团队都有自己的编码规范,但实际的执行情况如何呢?我想大部分的团队是形同虚设吧。


还有些 实践的落地实施比较有争议。极限编程大多是修炼内功,做内部质量,但这些对于交付项目和功能、满足交付时间来说,贡献在于长期,而短期看来是会影响交付日期的。


比如结对编程是一个很好的的实践,但很多团队的管理者第一反应就是:太浪费时间了,怎么可能用两个人的时间做同一件事呢?再比如测试驱动开发(TDD),有的敏捷教练会坚持认为不做TDD就不是敏捷。但在实践中,TDD除了写功能代码之外还要写测试代码,对开发人员对编码习惯和意识也是很大的挑战,时间上的投入也会比较多,这些因素都会阻碍TDD的推行。代码Review也是同理,这段时间并没有短期内的产出,在管理者看来就是花费了额外的时间。


有的 实践落地实施起来比较有难度和挑战。比如重构,在没有充分的自动化测试覆盖的前提下,对现有的代码进行重构很可能是一件费力不讨好的事情。很有可能改了一个地方,反而引发了更多的问题——那就多一事不如少一事。


阻碍团队实施极限编程还有一个 客观原因是研发团队普遍处在资源极度紧张的状态。时间和人力资源都要最大限度地做新功能,在这种状态下没有人会主动来做自动化测试、做重构。


极限编程实施的效果也很难度量。现在的研发团队普遍缺少有效的度量体系,所以实施极限编程前后的变化很难让团队和公司的管理层认知到。

总结下来,一个并不是那么酷的方法,容易做的不容易坚持,有挑战的又做不来,即使做下来效果又没有那么明显,再加上时间又很紧,所以很少有人采用也是常理。

尽管极限编程实施起来有各种的困难, 团队更应该实施极限编程,而且应该尽早实施。一个团队要想做到持续交付,工程能力是基础。极限编程是目前市面上提升研发团队工程能力最有效办法。通过实施极限编程,提高团队的工程交付能力,可以在竞争中建立自己的优势。而且 极限编程是一种复利型的投资,越早实施,回报率越高。

那么应该如何做来真正实施极限编程呢?

首先极限编程需要 一位对团队有足够影响力的管理者来推动。如果有可能的话,这个角色最好是CTO这样level的管理者。只有自上而下的推广,才有可能真正促进极限编程实践的落地。毕竟做极限编程是需要做一些资源投入,如果高层不给足够的支持和授权,单纯靠研发团队自发推动,是很难坚持的。

其次 逐步实施极限编程。实施极限编程不会对现有的项目管理流程进行变革性的改动,团队可以从比较简单的实践开始,到逐步采用比较复杂的实践。比如编码规范、代码集体所有权等,都是比较简单易行的实践,而且实施效果比较好。而有一些比较有挑战的实践,则可以先从细小的地方开始。比如 持续集成,我们可以先做到每日提交。只要能够及时更新代码并将自己的改动提交到库里面,其他同事也及时更新代码并及时提交,这就是一个集成的过程。再比如TDD,可以先从单元测试开始。如果单元测试还有难度,可以先从整理测试用例开始。通过整理测试用例,培养开发人员的测试意识。当一位开发人员有了测试意识之后,再来写代码的时候就会有相应的标准,从而写的更稳重、更严谨。

把“公司要求做极限编程”变为 “我要做极限编程”。可以在平时的迭代过程中,给团队预留一定的时间,让大家来尝试一些以前没有做过的实践,并鼓励大家在团队内部进行分享。每个团队都会有比较积极活跃的开发者,他们也会有提升自己的诉求。只要给他们一些支持,他们会很乐意尝试新东西的。万事开头难,只要有人开始做,就可以慢慢地影响其他人。

积极地 推进结对编程和代码评审实践。如果一个团队决定开始做极限编程,在做好编码规范的前提下,可以积极推进结对编程和代码评审。这两个实践非常有利于 好的规范、知识和经验在团队内部传承。我们团队的结对编程和代码评审是常态,随时都会进行。

万事开头难,决定了就去做,一份努力就有一份的收获。种一棵树最好的时间是十年前,其次是现在,实施极限编程,任何时候都不会晚。

发表评论
评论通过审核后显示。