干货!极狐GitLab APP 「极限编程 XP」实践

3 天交付新需求?

极狐GitLab APP 「极限编程 XP」实践

极限编程(XP)是一个中小规模团队在面对模糊或者快速变化需求时,开发软件使用的轻量级方法论。

XP 由 KentBeck 在 1996 年提出,是敏捷软件开发中富有成效的几种方法学之一,它能够让客户满意度更高,更好地维护团队关系,更灵活且适配性更高。

XP 由一系列简单却互相依赖的实践组成。接下来,我们以软件开发的流程为主线,逐个讨论实用而具体的 12 个核心实践。

| 实践一:用户故事

用户故事主要解决需求澄清的问题。客户在提出需求之后,作为产品经理,需要对客户需求进行描述,形成相应的用户故事。

用户故事需要用户价值视角出发,是最小价值交付单位,例如手机号登录功能,对用户而言是有价值的;而如果描述为 “接口”,则是开发侧的任务。

| 实践二:计划游戏

计划游戏是研发团队与利益相关者举行的计划会议,包括两个层级:发布计划和迭代计划。客户以及团队中的所有开发人员都要参与到游戏中,实现合力。

  • 发布计划:团队和利益相关者/客户,基于用户故事共同决定在生产中交付的需求和功能以及时间。
  • 迭代计划: 团队将从列表中挑选最有价值的需求,并将其分解为任务,然后进行估计和承诺,在迭代结束时交付。

| 实践三:频繁发布

频繁发布(小发布,指需求很小)是指做完一个需求立刻发布,可以以最快的速度得到真正的市场价值,如果发现有问题也可以更快速度纠正;跟瀑布模式有着本质区别。

实践频繁发布,需要在开发的过程中,始终保持与客户的双向沟通,及时处理用户的反馈,长期去影响并且使得客户获取真正的商业价值,形成一个正向循环,实现成就客户。

| 实践四:简单设计

简单设计即不要超前设计,以能够满足需求的最简单的设计来完成任务;不要有重复的功能。

我们平时会碰到一些比较复杂的场景,在这些场景下,在极限编程中也有 Spike(探针,一个用来探索/寻找潜在解决问题的方法) 方式;后续有改动怎么办呢?还有重构与 TDD 来解决。

| 实践五:重构

重构是根据需要来重构,而不是根据猜测来重构,更不要在重构时变更外部行为。

同时,我们在实现产品的时候,有最小可行性产品(MVP)的概念,如果现阶段我们还不知道产品是否可行,那么,重构是一个实现最小可行性产品的具体技术方法。

| 实践六:测试驱动

测试驱动开发(TDD)指先写测试用例再写开发,确保后续的开发都可以以最快的速度形成反馈,并且得到极高的覆盖率(后端 90% 以上,前端 70% 以上);并且是开发来写单元测试用例。

包括 4 步:写测试用例 → 确保测试用例失败 → 写代码确保测试用例成功 → 有必要时重构。

| 实践七:结对编程

结对编程由指所有的源代码都是两个开发人员在同一台电脑上编程的,可以形成实时的 Code Review。两个开发人员其中一人是编程的角色、另一人是策略角色。并且定时进行角色互换。

| 实践八:持续集成

持续集成是指每次提交之后在服务器构建,并且在提交到主干之后,再在主干进行集成构建。

主干合并使用极狐GitLab 预合并分支功能,这样可以提前做一些预合并,防止对主干造成问题。持续集成的优点显而易见:可以快速发现问题,避免合并地狱,并且实现快速发布。

| 实践九:现场客户

现场客户即客户是团队的一员,参与团队开发,快速反馈需求,时刻跟进进展。

| 更多实践:代码集体所有制、代码标准、可持续发展

1. 代码集体所有制:团队中每个人都拥有 check out 任何模块并对其进行修改的权力,每个人并不是独立的,都不会被限制在自己的专业领域。

2. 代码标准:在 XP 中,团队开发人员都遵循着相对统一的编码标准,强调通过制定严格的代码规范来进行沟通,尽可能减少不必要的文档。

3. 可持续发展:软件开发不是百米短跑,而是一场马拉松。要以结果为导向,团队成员必须以一种有节奏的可持续的速度前进。

极狐GitLab APP 是极狐GitLab 团队在 2022 年底启动的项目,通过外包,全远程开发,实现了 90% 以上的代码测试覆盖率,目前已经在 Apple Store 上架。这个项目应用了极限编程在内的诸多相关实践。我们重点分享其中 6 项:

| 计划游戏

首先,我们用了极限编程的计划游戏。极狐(GitLab) 作为客户,通过每日站会,每周迭代计划会以及需求梳理会,与外包供应商保持沟通。

除了实时同步沟通还有异步沟通,异步沟通使用极狐GitLab 中的议题看板,根据需求挪动需求状态。同时,我们注意到,看板上的所有项目,其 label 可以自定义而且互斥,这样可以更好地对需求进行更新。

| 用户故事实践

我们将极狐GitLab APP 关键需求形成用户故事,启动 3C 公式、DoD、AC、故事点

1. 3C 公式:卡片(Card)、交谈(Conversation)、确认(Confirmation);

2. DoD(Definition of Done) :明确 Done 的标准;

3. AC(Acceptance Criteria ):明确制定验收标准;

4. 故事点:预估每一个用户故事的大小,更准确算出团队的吞吐量。

| 简单设计 + 按需重构实践

如下图,有一个把 RESTful 改成 GraphQL 来提升速度的提交。这在最开始阶段是不需要的,最开始需要把 MVP 做出来,当后期性能不足时,在进行性能提升。

这里使用了极狐GitLab 推送规则功能,让每一条提交都讲明白它是做什么事情,以及它的 issue 号是什么,使得整个提交都非常干净。

另外,项目还使用了极狐GitLab 自动化流水线,实现自动检查、自动打包(包括安卓和苹果制品包)与每天超过十次以上的构建。

| 测试驱动实践

极狐GitLab APP 也使用了 TDD 测试驱动实践,每次都是先写测试用例,再写开发,测试覆盖率是在 93% 左右。这不仅仅是一个数据,最主要的是我们可以在不影响老需求下,更快地将新的需求上线。

同时我们使用了极狐GitLab 合并请求批准功能,限制了用户不能随意提交只有功能没有测试的代码,强制执行 TDD。

最后,从价值度分析可以看出来,交付时间是非常快,一个需求从提出到上线只需要 3.1 天,即可投入到市场,提供商业价值。

以上就是今天的分享,谢谢大家!

#极狐Gitlab##技术栈##编程#
全部评论
美好的一天从这篇干货开始
点赞 回复 分享
发布于 2023-03-25 11:51 山东
进来狠狠学习知识
点赞 回复 分享
发布于 2023-03-25 11:57 甘肃

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点??? 还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力………… 感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务