一、前言
回想自己在技术团队里的这些年,真可谓是见证了公司从一个只有2、3个人的小团队,发展到如今百人规模的技术团队。技术栈和系统架构也从最初的简陋,逐步演进到了如今的高可用、可扩展的现代架构。团队的技术、架构和运维模式更是经历了翻天覆地的变化。今天,我想复盘一下自己走过的路,分享一些经验和教训,特别是那些年我们在研发团队从传统瀑布模式转向敏捷开发模式过程中遇到的一些问题,以及我们是如何一步步解决它们的。
添加图片注释,不超过 140 字(可选)
二、转型阵痛:从瀑布到敏捷
敏捷开发模式的引入,无疑是公司发展过程中的一个重大变革。它带来的最直接的变化就是发版频率的大幅提高。从前项目2~3个月才发布一个版本,现在变成了2周甚至1周一版本。这种变化对团队的协同能力和快速发版能力提出了极大的挑战。
记得当时,我们团队刚刚转型敏捷开发,大家对新的开发模式还处于摸索阶段。项目组使用的是TAPD,腾讯出品的协作平台,号称“王者荣耀”使用的平台,主打敏捷开发。
添加图片注释,不超过 140 字(可选)
在使用TAPD之后,团队逐渐规范了敏捷开发的全生命周期,方便了每个需求的分配与跟踪。产品的需求在敏捷开发中被称为“故事”,以用户的视角用故事的方式描述需求。这种方式强调从用户的实际使用场景和价值出发,使团队成员更易理解用户的期望。
添加图片注释,不超过 140 字(可选)
然而,转型过程中也暴露出不少问题:
- 研发组长的抱怨:
- “我们这个功能还没开发完,按计划下一个迭代又开始了。”
- “单元测试不追着开发,基本不写。”
- “哪有时间来管编码风格与规范。”
- 测试组长的抱怨:
- “动不动就得回归测试。”
- “你们的代码能不能靠谱点,各种冒烟不通过。”
这些问题让我们意识到,敏捷开发不仅仅是改变开发流程,更是一次团队文化和工作习惯的变革。
三、工具赋能:团队规范化
面对转型过程中的种种问题,我们开始思考如何通过工具来解决这些问题,提升团队的效率和质量。
项目管理:从混乱到有序
添加图片注释,不超过 140 字(可选)
项目管理工具的使用,是团队转型敏捷开发的重要一步。TAPD帮助我们规范了敏捷开发的流程,但也有一些团队成员不适应这种新的工作方式。为此,我们开始探索其他项目管理工具,如Jira、Redmine、PingCode、禅道等,最终选择了最适合我们团队的工具。
通过项目管理工具,我们实现了需求的透明化管理,每个成员都能清晰地了解自己的任务和进度,减少了沟通成本,提升了协作效率。
单元测试:从被动到主动
import static org.junit.jupiter.api.Assertions.fail; import static org.junit.jupiter.api.Assumptions.assumeTrue; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; class StandardTests { @BeforeEach void init() { } @Test void failingTest() { fail("a failing test"); } @Test @Disabled("for demonstration purposes") void skippedTest() { // not executed } @Test void abortedTest() { assumeTrue("abc".contains("Z")); fail("test should have been aborted"); } }
单元测试是保证代码质量的重要手段,但在实际开发中,往往因为时间紧张或习惯问题,被开发人员忽视。
当时,我们的团队也经历过同样的问题。后来,我们将Junit集成到Jenkins中,实现了代码提交自动触发Junit,统计Junit的覆盖率及成功率,通过后才算完成。这种强制性的措施,虽然一开始遭到了开发人员的抵触,但最终还是让大家养成了写单元测试的好习惯。
添加图片注释,不超过 140 字(可选)
代码质量检查:从散漫到标准化
代码规范与单元测试、静态代码分析工具的使用以及代码审查,这些内容不仅有助于提高代码质量,也帮助我们养成良好的编程习惯。
添加图片注释,不超过 140 字(可选)
我们引入了静态代码质量分析工具,如Checkstyle、FindBugs、阿里的P3C等,以及SonarQube这样的代码质量管理平台。通过这些工具,我们实现了代码规范的自动化检查,减少了代码评审的工作量,提升了代码质量。
自动化构建与测试:从手动到自动
添加图片注释,不超过 140 字(可选)
随着发版频率的提高,手动构建和测试已经无法满足需求。我们开始引入自动化构建和自动化测试工具,如Jenkins、Selenium等,实现了从代码提交到构建、测试、发布的全流程自动化。
自动化构建和测试的引入,大大减少了人为错误,提升了发版效率,也让我们有更多的时间和精力去关注代码质量和功能实现。