本节书摘来自异步社区出版社《软件开发践行录——ThoughtWorks中国区文集》一书中的第2章,第2.5节,作者: ThoughtWorks中国,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.5 发挥团队其他成员在业务分析中的作用
在频繁交付的项目中,如果BA独自承担业务分析工作,难免会出现疏漏。ThoughtWorks曾与ABC公司的IT部门合作完成其业务系统的一些集成工作。在合作过程中发现,ABC公司IT部门的开发人员在业务分析中参与度很低,由此造成了如下问题。
(1)BA需要写大量需求文档,所以从需求分析到软件交付的周期较长。
(2)设计缺陷的发现滞后。
(3)在需要频繁交付的情况下,解决方案质量较差,方案优化能力较弱。
而ThoughtWorks的开发人员在业务分析中的参与度较高,因此有效地避免了以上问题。
开发人员如何参与分析
开发人员是软件功能的实现人员,对方案的实现工作量有较准确的估计。在明确项目目标或业务问题后,BA如果能够和开发人员一同分析解决方案,将会更有效地为客户找到兼顾成本和效果的方案。
在收集到客户需求后,BA可根据业务价值对需求进行分析,判断客户提出的功能或解决方案是否能很好地满足该业务价值或要解决的业务问题;或者按照自己的理解设计出满足该业务价值的功能实现或解决方案。
完成上述工作之后,BA应与开发人员就需求和业务价值进行充分沟通,验证功能实现的可行性,同时积极探寻更优方法。如果开发人员提出符合业务价值的不同方案,BA则可以要求开发人员提供一些关于开发工作量、方案优劣、技术风险方面的比较数据,从而帮助自己有效地与客户沟通并挑选最佳方案,甚至可以根据分析结果帮助客户调整该需求的优先级。对于技术难度和风险较高的功能点,建议邀请资深开发人员参与讨论。
与开发人员沟通中遇到的挑战与解决方法
由于上述方法需要与开发人员大量沟通,有些BA在应用以上实践时也遇到了以下挑战。
1.开发人员缺少参与业务分析的热情
在ThoughtWorks,大多数开发人员都喜欢积极思考、主动为业务分析提供帮助,大大减少了需求分析上的漏洞。然而在ABC公司的IT部门中,开发人员很少主动为业务分析出谋划策,尤其是团队中资历较浅的成员,甚至不愿意参与解决方案的讨论。团队成员的优势没有得到充分发挥,开发人员只管按需求埋头苦干,结果功能和解决方案中的问题往往在测试或者验收阶段才暴露出来,不可避免地造成了浪费。
站在开发人员成长的角度,从ThoughtWorks实践来看,积极地理解业务、思考解决方案能够更快地提高技术能力。因此BA可以找出一些实际案例,协同项目经理与团队各成员进行沟通,鼓励大家积极参与业务分析,逐步形成开发人员与BA协作的良好氛围。
2.开发人员容易就客户需求或解决方案产生争论
开发人员在积极参于分析的过程中,有时会对软件功能的价值吹毛求疵,在细节上与BA产生较多争论,使BA在应付开发人员的问题以及与客户求证答案之间疲于奔命。
解决此类问题,BA可采取以下方法。
BA在收集需求时,尽可能充分地了解客户要解决的业务问题,以便能够快速回答开发人员的问题。
面对开发人员对解决方案的质疑时,应保持良好的心态,清楚地了解开发人员顾虑的问题和原因。
如果自己掌握的信息确实不能证明现行方案的合理性时,协同开发人员,找到更优方案并与现行方案进行优缺点比较。
将新旧方案与客户沟通,则可快速帮助客户做出判断。
不要忽略测试人员在业务分析中的贡献
由于测试人员所处角度和对细节的关注,他们往往可以发现一些功能细节的设计漏洞。所以在用户故事进入开发前,BA与质量保证人员对相关业务价值进行充分沟通,可以在功能进入开发之前为BA创造更正某些设计缺陷的机会。
作为质量保证人员,如果充分了解功能背后的业务价值,对比于只了解功能需求,将可以写出更加完善的测试用例,提高测试覆盖率。这会为交付高质量的软件把好最后一道关。