- 团队不断扩大,研发团队忙的不可开交,而客户仍然抱怨“想要的功能怎么还没做"
- 总是被突然的需求打乱开发计划,加班加点,到处协调资源
- 产品/功能做了不少,而用户量,活跃量缺增长缓慢
- 长期存在的,团队成员待在一起,使得能够保持团结和高效率工作;随着时间推移,他们交付一个接一个的功能特性。
- 跨功能和跨组件
- 同一开发团队的成员位于相同的物理位置,可以进行团队成员之间的面对面协作。
- 围绕同一个完整的以客户为中心的功能特性,由多职能混合的多技能(比如分析,编程,测试等)成员组成。
- 一般由技能专家组成
- 在敏捷中,通常7±2人
对Feature Team下文简称FT团队,一个完整的 FT团队包含了完成用户价值功能的专业成员,他们集中在一起,共同承担责任和目标(有些组织里有共同的OKR)。 优势
- 简化的计划
- 高效沟通
- 加快产品上市时间
- 以用户价值为中心交付完整的功能
- 组织结构的支持
- 成员面对改变的阻力
- 学习曲线长
- 更多工具的需要(比如CI)
- 团队共同责任
- 促使团队产生更好的代码和质量更高的设计
- 减少浪费
- 促使团队学习
垂直切分 概念:将一个用户故事细分成较小的用户故事,这些单个较小的用户故事仍然可以正常工作,是可以演示的软件或是对用户有用的特定功能。 就像切蛋糕,竖着切(垂直切),每块蛋糕上都有草莓,奶油和面包。
水平切分,或者垂直是我们看待业务的角度。对比两种情形,我们看到FT团队的特点。 FT团队具有执行任务和完成工作的所有技能,比如:一个功能团队里包含了产品经理,app研发,后端研发人员。 组件团队 组件团队主要关注领域集中在系统的特定组件或一组组件上。他们利用自己的技术技能和兴趣,专注于构建可靠的组件,以提供可靠性,关注点分离,促进重用和改善可测试性。 传统的方法是将产品在逻辑上分解为组件(比如,UI设计,网页部分,java端),并为它们分配完成该组件的组件团队。但是,这些组件与客户的观点完全无关。 组件团队组织的最大缺点:它减慢了价值流。大多数情况下各个组件之间存在依赖关系,这些依赖关系要求各团队之间紧密合作以构建,部署并最终发布。团队花费大量时间讨论团队之间的依存关系以及跨组件测试行为,而不是能够交付最终用户价值。 FT团队 FT团队具有执行任务和完成工作的所有技能,比如:一个功能团队里包含了产品经理,app研发,后端研发人员。 FT团队方法已成为敏捷团队组织的公认方法,尤其是在持续交付方法中,它强调的是可以解决用户需求的功能,通常可以加速被重视的用户价值功能或软件的交付,并缩短来自真实用户的反馈循环。 4. 怎么过渡到FT团队 FT团队需要更多的工具支撑,CI 持续集成工具是基本保障,自动化测试和 TDD 通常也被使用。分支的合并过程中的冲突解决需要制定一个策略,多个 feature team 同时工作,对分支的管理和版本的发布提出很大的挑战。 从传统团队过度到FT团队时,不同的团队组织需要不同的策略。一般来说,逐渐过度是一种安全且缓慢的方法,即先从现有组织中建立第一个FT团队,待表现良好好,再创建第二支FT团队。这里的表现良好要根据组织自己的情况来看,它反映了组织对团队表现的满意。 5. 总结 FT团队提供在产品研发的一种快速响应市场的研发方式,选择FT团队还是组件团队,没有标准的解决方案,有些Scrum组织推荐使用混合模型,该模型包含了FT团队还是组件团队共存,专业线的组件团队看成大的资源池使用,不过它也包含两种模式的缺点。总之,我们需要根据自身的情况做出选择。