我们认为敏捷实践经历的误区和陷阱大致可以分成如下七个方面:特性团队、人、浪费、局部优化、软件质量、测试自动化、流程。

  特性团队(Feature Team)

  在组织中想要达到真正的Feature Team是一个很漫长的过程,当在组织中实现局部的端到端的组的时候,更大的端到端的组的演变要求会出现,因为这时组织中新的瓶颈会展现出来,这也是为什么敏捷虽不能解决问题,但却使问题更显现地表现出来的原因之一。

  在组织的转型中,产品有非常庞大的老代码:

  1、通常早期的Feature Team所包括的功能性测试不完全,外部的测试对于这些Feature Team所起到的保护作用还是相当重要的;

  随着时间的推移,Feature Team对于自己feature自动化测试加强以及测试能力的提高,发布给外部的产品质量会大大提高;

  2、对于外部其他组的依赖接口会很多,特别是组在不同的时候,沟通、交接和等待的浪费会很大;

  3、当产品中开发部门和开发部门的依赖减少后,开发和测试的瓶颈会更突出;

  4、当产品中各个功能部门的依赖减少的时候,产品和产品间的瓶颈会凸显。

  想象一下从客户提需求到终提交功能需要经过多少个过程,特别是大型组织中的产品,端到端意味着几十个过程甚至更多,Feature Team中能容纳多少个这样的过程意味着这个Feature Team的灵活度有多高,本质上敏捷是为了减少相互的依赖、等待和传递所带来的消耗。

  一个组织是一个庞大的系统,Feature Team的转变过程意味着减少整个系统中的Limitation。

  在向Feature Team演变的过程,在相对比较短的时间把原先十几或者几十Component Team打破组成新的Feature Team,这中间的风险在于:

  1、组的成熟度:成熟度需要时间,也需要一些错误的代价;

  2、组的长期成长和短期项目计划:由于为了项目的进度而把对某领域很熟悉的组移出去做不熟悉的领域;

  3、组织的产出效率:怎样合理的利用现有的有经验人员和新人,建立新结构所需要的基础会使组织整体的产出效率减低;

  4、不可控和无序:怎样让这些组高质量的发布产品在转变过程变的不可控。

  理想和现实中的平衡是Feature Team所面对一个问题,剧烈的变动意味着剧烈的阵痛。

  人

  我们的转变是基于Scrum+XP的方式,转变的影响巨大,之前存在的许多职位、头衔都会面临变化甚至消失的可能。例如将不再会有项目经理来集中处理项目管理的工作,对于产品需求研发顺序的管理也由以往的项目经理手中转为产品负责人来负责。算是基层的开发人员和测试人员,他们的日常工作方式以及职责范围也面临着极大变化。这也意味着转变可能会遇到非常大的阻力,人天性会抗拒未知的变化。

  某平台部门的转变尤其特殊,研发的老大意志坚定,在初期Pilot成功后,大刀阔斧地进行组织架构改革,仿佛一夜之间所有的项目经理全部消失。而以往围绕功能模块所组建的分散的测试团队以及开发团队也被重组,每一个Scrum团队都拥有好几名来自不同功能模块领域的开发和测试人员,从某种角度来看,这是我们所倡导的跨功能特性团队的雏形。

  各种形式的人员流失造成很大的困难,有人因为个人或家庭的原因离开公司,也有人在新成立的产品线谋得职位,也有人被提升。但这一切都造成原来位置上的熟手损失殆尽,尤其是测试相关人员的流动,曾是很大的隐患。在以往的研发模式中,测试被严格划分为多个层级,由不同的测试部门执行,彼此之间通过高级别工程师以及文档和流程体系来沟通,确保各个层级的测试得到执行。新的组织架构中,除了Scrum团队后,是系统测试团队,而Scrum团队测试和系统测试之间的衔接则出现了灰色地带,原因是彼此对对方的职责各有不同假设,却未能发现及解决。