试想,项目已启动,团队却并不了解整个系统、功能的目标和范围,未对系统、功能的需求达成共识,那么项目开发的方向随着时间的推移而逐渐偏离。明明需求要的是一个苹果,最终却做了个梨出来。要让团队达成共识,就离不开团队各个角色的沟通与协作。
经常听到同行朋友、软件工程师吐槽需求又变了,在地铁里面也常听到程序员们聊天吐槽说需求的变动。
是的,现实中客户的需求并不是一成不变的,客户的需求也不是一开始就生长在那里,就好像在茫茫森林中的一棵树木,等待我们去“发现”它。
相反,客户需求最开始可能只是一个idea,一个想法,它就比好一粒种子,需要土壤、阳光与水分,在人们的精心呵护与培植下才能茁壮成长。因此,我们无法“发现”需求,而是要和客户一起“培育”需求,并在这个培育过程中逐渐成熟。
今天简单聊聊Scrum敏捷开发也是现在企业内用得比较多的研发方式,Scrum 思想强调个体和团队的协作与沟通,强调快速反馈与及时响应。
盲人摸象,由于每个人获得的信息不同,知识背景不同,又因为角色不同因而导致设想的上下文也不相同,诸多的不同使得我们在对话交流中好像被蒙了双眼的盲人,我们共同捕捉的需求就好似一头大象,各自只获得局部的知识,却自以为掌控了全局。或许有人会认为客户提出的需求就应该是全部,我们只需理解客户的需求,然后积极响应这些需求即可。
比如,我们与客户聊需求的时候并不是一遍就能聊清楚、聊明白。需求方想要的结果与我们理解的可能不一致,因此,在“培育”需求的过程中需要双向的沟通、反馈。如果没有正确的沟通与交流方式,团队达成的“需求一致”不过是一种假象。比如,我们最近在做的“裂变活动”,与需求方沟通了一天后的结果形成脑图,下午团队内部沟通,团队成员就提出了不一样的问题与疑问。然后结合这些问题再次与需求方沟通确认,然后再反馈到研发团队。通过这样反复的沟通与反馈,将需求达成一致。
在《用户故事地图》中作者给出了一副漫画来描述共识达成的问题。
这幅漫画形象地表现了如何通过可视化的交流形式逐渐在多个角色之间达成共识的过程。
Scrum 思想强调个体和团队的协作与沟通,强调快速反馈与及时响应。我们如何通过敏捷思想来减少目标共识不一致问题呢?Scrum 的游戏规则里,主要有计划会议、例行会议、评审会议和回顾会议四项主要活动。
计划会议,计划会议标志着开始,所有利益相关成员都需要参加,目的是和利益相关人的沟通,来确定系统的业务与愿景。另外可通过分析、评估已有的产品清单或者功能,能否满足客户的需求。比如,我们最近做裂变分享的活动,通过梳理当前产品的功能板块,将裂变流程拆细后,发现已有的领取优惠券、核销、查看等一系列功能已经满足,通过将优惠券作为原子服务,只需要满足裂变规则即可。
在此次计划会议中需要确定最有价值的目标,或者紧急重要的工作事项,将功能进行拆分到人并以人为单位列出来计划表,从而形成整体计划表。
例行会议,Scrum Master 则要求大家每天站着开,也就是晨会。这个会议的主要目的是明确目标,也就是我现在在哪里,我们将要去哪里?会议中主要回顾昨天,做了什么?今天,要做什么?也就是回顾昨天,与今日目标。站立会中可以很清晰的知道团队的进展,同时知晓研发团队的理解是否存在偏差可及时的进行调整。
评审会议,我们没有实际上的评审会议,我们产品功能首先是程序员自测,很多人说自测会降低研发的时间,个人认为研发开发完后即可对其进行测试,或者产品、测试等角色立即进行测试,这样开发人员便能够快速响应,大大的降低修改Bug 的成本。因为无数研究与实践证明了,修改Bug 的成本会随着时间的推移而增加。
因此,我们是程序员自测,因为我们没测试,然后再由产品进行测试查看,通过在线文档记录反馈到研发进行调整。
回顾会议,我们将该会议作为周例会进行放在了周五,回顾本周工作完成的情况,总结工作中的经验与教训。会议的核心的总结,总结错误并总结解决方案,避免再相同的业务逻辑上犯相同的错误。
自我管理,Scrum并没有特定的工程实践惯例,团队成员通过自我管理朝着产品的研发进展方向规划自己的计划、日计划,并主动完成工作。Scrum 思想强调个体和团队的协作与沟通,强调快速反馈与及时响应。
很多人会陷入快速的误区,以快速就等于“敏捷”,实则不是。上文提到的程序员吐槽需求又变了的问题,大多数是想到哪里设计哪里,不和客户保持沟通,只要客户说的不论成熟与不成熟都扔给开发团队。这就会造成产品、功能三天一小改、一星期一大改的局面,导致程序员们吐槽并且Scrum 团队也不知道所措,刚做完又改。
因此,完善业务需求设计环节很重要,也就是第一环节计划会议,计划会议中要明确目标与落地执行计划,成员严格按照此计划进行,中间有问题及时反馈与沟通。
总结,Scrum 思想强调个体和团队的协作与沟通,强调快速反馈与及时响应。只有频繁的沟通,才能就业务需求达成整个团队的共识。团队良好的协作,才能有助于大家建立统一的语言,实现统一目标。