实现一个目标是很难是因为一路上会有很多障碍,对于每个障碍,如果你没有应对方法,很可能就跨越不了障碍,跨越不了障碍很可能就实现不了目标了。
以消灭TT这个目标为例,就有以下难缠的障碍:
- 在开发新功能时,对已有功能的影响考虑不充分,很可能会破坏已有功能。
- 遗留代码复杂,而且没有测试保护。
- 新同事对代码不熟,很可能会破坏已有功能。
- DEV交付给QA测试时间晚,挤压了QA测试时间,测试不够充分。
- 回归测试时间短,回归测试不充分。
- 产品问题占用了DEV很多时间,挤压了开发时间,降低了开发质量。
每个障碍都要有应对方案,当然有应对方案不一定能跨越障碍,但是没有应对方案和行动是肯定跨越不了障碍的。比如应对上述障碍的行动计划如下:
- 在Design Review中加入影响点分析,在开发和测试时都要涉及影响点。
- 教大家如何在遗留代码上安全地修改代码,如何写单元测试,以最小的成本测试代码改动。
- 新同事的代码(第一次接触这块代码的同事都叫新同事)一定要做好Code Review,对于新同事的代码QA一定要认真测试。
- QA在时间不够的情况下,要优先把时间花在容易出错的功能和容易引入问题的开发者上,多做一些组合测试和探索性测试。
- QA每个迭代要补充自动化测试,集中在用户常用的功能上(可以通过ART和产品数据分析得出)
- 在产品问题支持上要花费很多时间的DEV要思考怎么减少产品支持的时间,或把产品支持的工作外包出去。
其实这个目标最大的障碍是如何让消灭TT成为每个人的目标,每个人都能有能力并能尽自己最大的努力避免TT。这个需要靠Team Lead, DEV Lead, QA Lead, BA Lead持续的言传身教和引导培训。