Good Practice in Agile

字数 1391阅读 1159

敏捷开发是一种提倡拥抱变化, 控制风险的一种方法论。本文将讲述在实施敏捷团队时的一些Good Practice。

识别团队中的Bad Smell

文档

“hey, 帮我写个文档被, 以后我好回顾, 以后来人就按照这个文档操作, 省的你一遍一遍说”.

碰到这种情况一定说, NO. 当面沟通最有效, 我已经交给你了, 再来新人, 你教. 如果认为有必要写文档, 谁提倡谁写.
这种方式, 除了拒绝文档这种低效率的沟通方式, 还要拒绝团队为”只提意见,不主动实践”的人提供土壤。

我们拒绝文档,提倡高效沟通。试想一下,刚进项目的时候,客户的人做我旁边,找我问技术问题竟然发邮件。

站会

"xxx没来, 等等他吧, 我希望听听他的工作. "

依然say no. 我们不能为了站会而站会. 站会不等人, 准备或者提前开始, 团队快速catch up, 然后迅速开始一天的工作.
不用担心有人缺席站会会有影响, 如果有人非常需要跟缺席人的沟通, 自己会去找他, 反之依然.

沟通

“hey, 我发现一个小bug, 能不能现在修一下, 很简单, 估计也就10分钟”.

拒绝. 请JIRA建卡, 或者story上添comments , 简单描述bug, Owner在需要时自己去take卡

此时要培养的习惯

  • 优先级的概念
  • 再小的任务也有effort, 当前工作被打断, 再拾回也是effort
  • 任务的简单与否, 会耗费多长时间, 一般由熟悉本任务的Dev决定, 其他人替Dev做预估都是非常不专业的表现. 一定要培养沟通习惯, 专业的事情, 找专业的人沟通,由专业的人评估。

让每个环节更有效率

站会

go through 每天大家做的事情.

站会时只讲三件事儿, 时间控制在5分钟内(10个人)

  1. 我昨天做了什么
  2. 我今天要做什么
  3. 碰见什么问题,需要谁或者什么帮助.

站会主持者需要及时识别站会中的bad smell

  • 站会时进行细节讨论
  • 讲述story中, 不需要每个人都知道的细节
  • 把站会当开会, 当中宣布一些显而易见事情. 这种事情邮件就可以做到, 不需要大家每个人, 把聆听宣讲当做优先级最高的事情.

提高站会效率的手段

  • 准备一个token, 只有拿token的人才能说话
  • 站会时计时5分钟, 然后告诉大家我们需要5分钟内结束站会. 会后记录使用时间, 在团队养成习惯后可以不用追踪时间
  • 展会前将站会内容按照Yestoday, Todo, Question分类, 写在卡片上, 站会时按照卡片上的讲
  • 及时打断不必要的讨论
  • 及时打断问对方要承诺式的对话. (例如, xxx你今天能不能完成 xxx? 然后也渴望的眼神看着对方)

Continuous Integration / Continuous Deliver

CI/CD没有你想象那么难, CI/CD会带来持续的效率增长. 越早引入成本越低,反之成本越高。无论多困难困难,都建议排在最高优先级。

CI最小集合

  • build script ( maven, gradle, rake, gulp.js …)
  • git repository
  • Jenkins Job

CI能保证的内容

  • project 能够在一个干净的机器上build, 避免本地依赖
  • 每个人都可以使用build script构建相同的开发环境(mvn idea:idea / gradle idea)
  • 构建结果能够发布, 客户可以时刻拿到QA过的更新

CI标准集

  • run check style
  • run unit test
  • build package
  • run functional test

Continue deliver标准集合

  • 将构建结果自动化发布
  • 自动化更新到终端(eclipse plugin开发,自动更新到update site)

结对编程

有些客户对结对编程并不理解,虽然不进行100%的full time结对,有些场景结对编程会带来很好的效果。坚持下来后,这种结对方式也赢得了客户的认可。

需要结对编程的信号

  • 传递知识, 包括带新人
  • story涉及两个人做的内容, 可以double check
  • 需要帮助的时候

不适合做结对的情况

  • spike
  • 需求不清晰的Story

如何结对

  • 先就story沟通思路
  • 一个人写测试, 一个人写实现

Code Review

每天必不可少的环节,并且需要坚持每天进行。

目的

  • catch up 今天的工作,
  • 分享代码技巧
  • check代码, 保持良好的代码风格

步骤

  • 先讲做了什么, 如果条件允许, 先做showcase
  • 按照解决思路讲解代码
  • 重构(当天发现的问题, 当天重构), 站会时需要有人专门记录refactor建议

关注点

  • 别人在做什么, 如果以后碰到相关问题, 知道要怎么做, 或者找谁问.
  • 了解别人解决问题的思路
  • 关注代码的bad smell

Retrospective meeting

一个安全的环境, 大家讨论团队中遇见的问题.可以采用如下方式:

  • Well/Less Well/Question or Suggestion
  • Star Fish (Start/Stop/More/Less/Keep)

个人推荐采用Star Fish, 每个象限都是action, 会让回顾会议更容易产生action, 效率更高。

推荐阅读更多精彩内容