BA全称Business Analyst,即业务分析师。经常会被别人问起,“BA平常到底都在做些什么呀”?
在一个不熟悉的人眼里,BA的工作看起来就是不停的沟通、写写用户故事、主持一下会议什么的。最风光可能是在showcase(产品展示会议)的时候,产品受到了用户和客户的肯定;最落魄可能是在IPM(迭代计划会议)的时候,被开发们不停地挑战需求的合理性和完整性。除此之外,有时BA自己也感觉忙忙碌碌、但却又不知道在忙些什么。
有文章介绍了在ThoughtWorks做BA是怎样一种体验,也有新BA分享她的ThoughtWorks BA初体验。
接下来,我想从一个“老BA”的视角,分享一下在一个软件交付项目中BA到底都会做些什么?
BA的工作因产品所处的阶段不同而略有不同
首先要说的是,本文主要说的是BA在产品Delivery阶段需要做的事情。项目从前期的探索发现(Discovery)——定义要解决的问题和原型方案,到启动(Inception)——对产品定位、MVP范围、迭代计划达成一致,再到进入开发(Delivery)——完成产品的第一个MVP版本,最后通过产品运营收集反馈,迭代地进行产品演进(Evolution)。在这一系列环节中,BA做的事情不尽相同,各有各的侧重点。
Discovery中的BA:负责行业研究,企业业务的快速梳理,并和用户体验设计师(UX)一起通过用户访谈、现场调查等方式收集需求,定位问题并形成粗粒度的解决方案。
Inception中的BA:在梳理业务需求的同时能够对方案进行收敛,定义MVP和产品路线图,并配合开发进行工作量估算和给出具体的发布计划。
Delivery中的BA:将粗粒度的方案进一步细化,并将需求沟通给整个交付团队,保证需求可以正确地交付。如果有新的需求涌现出来,也需要按照Discovery和inception阶段中的方法来进行分析和交付。
Evolution中的BA:在产品上线后收集线上用户的反馈,参与产品运营和持续演进。
其中,Delivery环节往往是时间最久、精力耗费最多的一个环节,也往往是一个新BA起步的地方。所以接下来主要关注在这个环节。
BA都有哪几个方面的工作?
作为连接业务和开发的桥梁,BA的主要工作可以分成三个部分:第一部分是围绕需求展开的,涉及需求生命周期的各个环节。第二部分是围绕交付展开,包括确保需求在各个角色之间的流动过程中不失真,确保需求被正确地开发出来。第三部分是一些“杂事”。项目中大大小小的事情往往都需要BA的照料,只要能够推动整个项目按正确的方式做事,那就义不容辞地纳入自己的工作范围。
所以简单来说,BA的工作就是确保整个团队做正确的事,以及正确地做事。
详细来说,包括以下:
需求发现、收集和方案提议
虽然在产品开发之前会有一个产品定位和业务全景图,但是任何产品在进入开发之后一定还是会源源不断地涌现出新的需求。这些需求或来自各个层面的反馈,或来自客户领导,或来自客户其他的业务部门,或来自我们的主动挖掘。持续不断地发现、接受和处理这些新需求是BA的一个工作常态。
比如,一个汽车行业的客户,兄弟业务部门提出需求:希望我们的产品可以支持他们的汽车售后保修业务。对于客户而言,需要思考要不要接下这个需求?
- 大致要做什么功能?对现在的产品定位、业务流程和价值有什么影响。
- 如果要做的话,需要多少人天,对预算有什么影响?
对于BA而言,接下来要做的就是回答上面的问题,把信息提供给客户辅助他们做决策。
可是需求太粗略了,怎么办呢?于是,BA计划了一次用户走访,搞清现在的业务流程和痛点。搞明白其他业务部门提的需求到底是在说什么,是不是真实的需求,有没有什么坑。接着,根据走访的结果梳理需求,然后和UX一起讨论粗粒度的业务方案,这个过程跟Inception很像。
接着拿着这个方案跟客户大致过一下,没有什么问题的话就叫上开发一起估算工作量,这时候估算只是粗略的,可能以20人天为一个单位。有了大致的方案、低保真的原型图和粗略的工作量估算,就可以把这些整理一下汇报给客户了。
最终的结果可能是一个做或者不做的决定,以及对应的排期计划。有了这些,那么这块BA的工作就算告一段落了。一般一个100人天+的大块新需求分析下来,可能至少需要1~2周的时间。注意你还有日常的交付要做,这些只能抽时间精力来搞。
这一块的工作对于BA往往比较有挑战,虽然有可能并不会进入后续的交付,但却是体现BA核心价值的一部分工作。
需求分析与方案落地
一个大块的新需求有了方案之后,接下来就是把它细化,然后拆成用户故事并写出验收条件。这就是BA的基本功了。
从这时开始,思考粒度会从粗到细迅速下降。BA会和UX一起讨论:页面上具体该有什么信息呈现,有什么样的功能按键,交互和体验是怎样的。会针对各种细节争论不休,就为了呈现最好的用户体验。
然后就是把脑子里的想法写出来啦。按照用户故事的格式,思考怎么写可以让开发和业务部门都能看的明白清晰。写的过程中还可能会有新的想法出来,然后又跑去跟UX或者Dev讨论。
最终这一部分工作的产出就是拆分后的用户故事列表,以及已经填充好内容的用户故事。
如果一定要说BA的核心职责,那这部分应该算得上。又快又好的把这部分工作完成,然后腾出精力去做其他的事情。不要满足于停留在这里,毕竟这只是BA的基本功。
需求和方案对齐
因为Thoughtworks是一家专业服务公司,也就是说我们为客户提供解决方案。基于这样的合作模式,意味着BA需要将自己设计的方案和客户进行沟通,确保大家对于需求以及对应的方案有一致的理解。
为了这个目的,理想的方式是和客户一起工作。增加客户的参与感,让他们也参与到自己的产品设计过程中去。这样就不用花费过多的精力去跟客户同步方案,然后来来回回的修改、汇报。但鉴于每个项目客户的情况不同,有时候BA可能需要专门安排一些Story Review或者Solution Review的会议来跟客户过方案。
这块的工作其实很考验BA的软技能,因为在这个过程中往往充满了各种意见上的冲突。怎么样能把自己的想法有条理地表达出来,怎么样能管理好客户的期望,怎么样去应对客户的质疑都是一门学问。
需求沟通与交付
如果客户拍了板,那么接下来就可以进入开发了。BA工作中的沟通部分从主外变成了主内。也就是说,外部跟客户之间已经达成了一致,接下来主要是把需求和方案准确地传达给交付团队,然后保证用户故事可以被准确的开发出来。BA主要做的事包括,制定迭代计划、主持IPM、参与Story Kickoff和Desk Check、组织Showcase、追踪迭代速率,以及随时澄清Dev,QA提出的各种问题。
别看这个过程貌似简单,却可能会有很多意料之外的情况发生。如果前面的工作做得好,这里可能会比较顺利,否则很多问题都会在这时候暴露出来,让BA疲于应付。比如:
- 开发说这个用户故事卡的功能比想象中的复杂,可能做不完了。
- 有些新功能与旧功能有冲突,事前没有想到。
- 正在开发的过程中,客户提出了一个新的需求。
- Desk Check的时候发现功能实现与设计的有出入。
等等。
理想情况下,在保证效果的同时,这部分工作所花的时间和精力越少越好。如果主要精力都花在了这上面,就要思考是不是哪些环节出了问题。
第三方集成支持
对于大客户而言,很少有不涉及集成的项目。有些项目,集成是一个大部头。以我上一个项目为例,涉及到的集成系统有将近10个。BA有时会花大量的时间在讨论集成方案、梳理接口字段、制定集成计划上。
BA也要关心集成么?当然。集成也事关业务场景、数据流。这些接口在什么业务场景下被调用,我们需要发什么样的数据给第三方,需要从第三方拿什么样的数据。从索要第三方的数据样例文件,到一个一个地分析这些字段的业务价值以判断哪些可以为我所用,再到撰写需求文档给第三方,这些都需要BA的参与。
而且集成最大的精力消耗在于沟通和谈判。比如,按对齐的接口文档开发,却发现第三方的实现没有按照文档来;单方面的接口变动没有事前通知;接口传的数据有误,污染了自身系统的数据,等等。
集成可能是BA最不喜欢参与的事情了。
上线和线上支持
如果以上的工作都顺利扛过来了,那么恭喜你,产品终于可以上线了。
这部分的工作包括上线过程的准备和上线之后的支持。比如写一大推的文档:用户手册,发布版本说明书等等。然后是密集的showcase, 毕竟新产品要上线,各个干系人都闻讯而来。某个客户方的大老板来了要show一下,用户代表来了要show一下,其他部门的人来了也要show一下。
千辛万苦终于上了线,接下来还要面对一大堆的线上问题。一般会有一、二、三线的产品支持团队,帮助将一些简单的问题进行过滤。但最终到BA这里的问题也不在少数。
除此之外,BA可能还会需要思考如何收集反馈进行产品演进。比如,用一些用户行为检测工具对产品埋点,追踪用户使用产品的情况。或者有计划地安排一些用户走访来收集反馈。还要对各个渠道收集到的反馈进行整合,划分优先级,排进计划。
新人培养
对于一个项目制的公司来说,一个项目团队在稳定运行一段时间后就要开始考虑人员更替的问题。保持适度的人员更替率是一个团队健康的表现。不仅对于个人还是对于团队而言都是好的。
在人员更替的过程中,知识传递和能力培养是必不可少的。
一个新人上项目,不论什么角色,BA都要给他们讲解行业背景,业务知识,当前产品的功能模块,未来产品的走向等等。如果新加入的是一个BA,项目上的老BA还需要承担起Buddy的职责,负责BA的能力成长。除了日常项目上的事情,可能还需要计划一些针对性的讲授和练习,利用工作之余开展session。而作为新BA,也要投入巨大的精力快速了解业务上下文,在面临日常项目上的挑战之外,还得抽时间给自己充电。
一个交付压力比较大的项目,往往会疏于人员培养,平常项目上的事都忙不过来哪还有时间去带新人呀。这样的局面往往造成老人们越来越忙,承担越来越多的上下文,变得越来越重要,也越来越不可替换。最终老人们抱怨在项目上做的太久却下不了项目,新人们抱怨没有人带自己,帮不上忙。所以,带新人是一个一劳永逸的事情,每个项目上的BA都应该做好带新人的准备。
项目管理
BA最后的一块工作就是项目管理。ThoughtWorks是敏捷的倡导者,所有的团队也都是敏捷团队,它们是自组织跨职能的。所以,有很多团队并没有项目经理这样的角色。项目经理的职责被分散到整个团队身上,由整个团队共同承担。
而BA由于本身工作职责的原因,具有更大的视野,离客户更近,天然地具有承担项目管理的优势。所以,也应更加义不容辞的承担起部分项目管理的职责。
需求变更的处理,迭代计划的指定,客户关系的管理,还有组织日常大大小小的会都可以BA来做。
BA也会扮演起敏捷管理教练的角色,对于敏捷实践进行裁剪找到最适合这个项目的实践。引导团队成员如何正确的站会、IPM、DeskCheck、Retro。及时指出团队日常实践中的问题,慢慢的形成团队自己的敏捷文化。
BA的工作因项目的不同而略有不同
以上大约是BA在产品Delivery阶段的工作内容全景。
以我上一个项目为例,BA工作的各个部分精力分配大约如下:
不要担心,并不是在所有的项目中BA都要做这么多的事情。每个项目因为所处阶段,客户合作方式,团队组成方式的不同,BA的工作侧重点也不同。
比如,对于离岸交付类型的项目,客户和交付团队分处两地。这样在需求和方案对齐方面花费的精力就会更多。反之,对于在岸项目,交付团队在客户现场工作,那么这部分的工作就相对少一些。
对于Time & Material,也就是按人天收费的项目。由于项目风险主要落在甲方,所以为了减少风险,客户往往会把需求把控的比较严格,攥在自己手里,给予我们BA的分析空间不大。因此,这种项目的需求发现和收集部分的工作就会比较少,主要精力在需求分析和方案落地方面。由于一般这种项目乙方不会配备专门的项目经理,所以BA也会兼职来做项目管理的事情。而对于Fix Bid,也就是一口价收费的项目,项目风险落在乙方。所以我们会配备自己的项目经理,并且对需求和产品的把控度更大。这样,需求发现和收集部分的工作就会很多,而项目管理的事情也可以有项目经理承担起来。
还有对于比如3-4个月的短期项目,没有换人的需要,BA自然也就没有带新人的工作了。而对于某些超过一年的长期项目,BA就需要花一部分精力在带新人上。
写在最后
在ThoughtWorks与其说BA是一个职位,不如说是一系列职责的集合。在这里,没人会清晰的告诉你一定要做什么,或者不能做什么。
对于一个敏捷团队,与众不同的一点在于,BA要做的工作不是写在Job Description上的,而是需要自己去定义的。所以刚上项目的新BA可能会感到些许迷茫,不知道自己该做什么,不知道自己与其他角色的分工是怎么样的,不知道该如何与其他人合作。我常常会告诉新人,上项目后的第一件事就是找出自己在这个团队中的定位,明白自己能够或者应该提供什么样的价值。同样是BA,每一个项目中的定位都会与以往不同,相应的工作内容也不尽相同。
怎么去找定位呢?不妨和项目里的BA,PM或者TL聊一聊:
- 说说你对这个项目的期望,你希望从这个项目中获得什么?得到哪方面的成长?希望这个项目提供给你哪方面的机会?
- 让PM、TL、BA说说团队对你的期望是什么?希望你承担什么样的职责,做出什么样的贡献。
两边对齐的期望即是BA的定位。
其实,BA的工作没有说明书,也不必照本宣科地工作。可以做的事情可能非常的多,但应找准重点并适当地分配自己的精力,以免陷入忙碌的当下,迷失了方向。
名词解释:
BA:业务分析师
UX:用户体验设计师
Dev:程序员
User Story: 用户故事,敏捷中用以表述一小块产品特性和用户价值的载体。
IPM:迭代计划会议,在每个迭代开始之前举行的团队会议,用来澄清下个迭代的开发任务和规划下个迭代的工作范围。
Story Kick-off: 用户故事卡“开卡”,在进行每个用户故事的开发之前,由BA、DEV、UX、QA等相关人员一起参与的活动,以便澄清将要开发的需求内容和范围。
Story Desk Check: 用户故事卡快速验收,在用户故事开发完成之后,由BA、DEV、UX、QA等相关人员一起参与的活动,以便快速验证开发的功能是否符合需求。
Showcase: 产品展示会议,在一个开发迭代完成之后,对该迭代的产品功能进行展示。
Retro: 回顾会议,在一个迭代完成之后,对该迭代中团队的各个方面进行回顾,提出建议以便持续改进。
文/ThoughtWorks汪泽远
更多精彩洞见,请关注微信公众号:ThoughtWorks洞见