笔者经历过大到600人、小到20人的项目团队,很多团队中会引入敏捷尤其是scrum实践,其中一个重要的实践是站立会议,遇到过团队成员抱怨站立会议浪费时间,甚至在有些团队中leader也持这种观点,最后坚持不了几次就不了了之了。那么,站立会议(甚至说敏捷)是否有必要呢?
我很能理解团队成员抱怨站立会议浪费时间,开发人员是软件工程的直接实施者,他们的感受一定是来源于实践的,他们说浪费时间那肯定是存在这种问题的。软件工程的一切实践都是为了提升效率与质量,如果不能起到这个作用,那么一切活动都是形式,都是浪费大家的时间。某项实践有没有意义,在于团队成员对于这项活动意义的理解是否正确,以及实施方式是否富有成效。拿站立会议来讲,首先得想清楚为什么要这样做?是为了解决什么问题?期望达到什么效果?
站立会议的目的,总结起来有以下几点:
- 团队对齐下一个关键节点是什么时候?要达成哪些目标?为了达成这个目标目前还缺少什么?
- 了解团队的工作进展。
- 识别出团队成员的工作方向是否与团队总体目标有偏差,减少走弯路的情况。
第一点是核心,leader必须确保团队的每一名成员的工作都是奔着项目的下一个节点去的,也许项目的目标是攻下3个山头,但是下一个节点就是要攻下第1个山头,那么leader就要确保团队成员的子弹不要往第2、第3个山头发射。
我一直强调,敏捷或者DevOps最核心的理念是尽早得到“反馈”,力求所做的每一件事尽可能都是对的,有偏差的时候能及时纠正,这样才能少走弯路。
实践中,以笔者个人的经验,项目越是到了攻坚阶段站立会议越是频繁,基本每天进行,因为越是时间紧迫的时候越要保证所有人目标一致、少走弯路。相反,如果接下来处于迭代中的编码阶段,工作方向和任务相对明确,那么也就可以少进行或者不进行站立会议。我们所做的每一件事,都要目的明确。
总之,对于敏捷团队,站立会议是跟进项目进度、识别项目风险最好的方式;对于不敏捷的团队,站立会议确实只是一个形式。