用户故事专注于交付给客户的具体价值,也就是该用户故事能够帮助客户实现什么样的功能和成就。而为实现用户故事,通常会把用户故事分解为一系列要完成的任务,比如最常见的设计、编码、测试、集成、部署等。所以不同角色的团队成员主动认领自己最擅长的任务并高效完成之,是最合理和高效的做法。
当然,在某些情况下,为了更加明确项目产品待办事项的职责,会指定某个人负责跟踪和协调某个用户故事的所有任务,以确保所承诺的所有用户故事需要的任务都能如期完成。但这种用户故事的负责人,不过是项目管理和项目工作跟踪与原理的一种方式,与敏捷开发中自组织、跨功能团队成员主动认领的需要承诺完成的工作是不同的范畴。
书上这样说:功能团队包括了完成软件开发和交付工作所需要的全部技能类别,开发、测试、需求、设计、用户体验、数据库等。虽然当前“全栈工程师”的概念颇为流行,但随着现代软件工程向着更加精细的专业化、分工化发展,每一个细分的专业方向都差别巨大。后台数据库的设计和开发与前端界面的美丑、布局是否合理等,不仅仅体现在用户能接触到的多少。一个工程师不可能了解和掌握开发和交付软件所需要的全部技能。因而团队必然是各种技能工程师的组合,大家每人专注于开发和交付高客户价值软件所需要的各个方面,需求、编码、测试、设计、界面优化、用户体验等人员的工作紧密配合、相互协作才能交付高质量的软件。
我就在想,是不是说,“猪”类角色将用户故事估算完毕,所有的用户故事在经过排序之后,组成了产品待办事项列表。在每个计划中,包括“鸡”类角色在内的团队针对优先级最高的用户故事,进行讨论、分析,并将之分解为一个个的任务,这些任务细化到实现和交付用户故事所需要采取的每一个步骤。不同的团队角色都要对用户故事的实现和交付做出必要的贡献。这个时候,每个角色根据自己的能力和优势,认领相应的任务,并估计自己所认领任务的工作时间。这就是“谁承诺任务,谁负责任务,谁估算任务”,因为“做这个事情的那个人是最了解那个任务的人,也是最适合对之做出估计的人”。