由小型开发团队支持的多种产品

Multiple products supported by small development team

我管理着一个由七名开发人员组成的团队,他们拥有十多种产品和 20 种产品之间的集成。一年前我接手了这个团队,我们努力在团队中传播知识。一年前,每个开发人员基本上都是几个产品和集成的孤岛,这让我们非常脆弱。这已经有了很大改善,我们今天的处境要好得多。这已经通过共同开发和结对编程有机地和临时地处理了。

最近,一些开发人员建议采用更加结构化的方法来确保我们所有的产品和集成在团队中广为人知。他们希望每个开发人员都对可能被要求更改的系统负有特定范围的责任。因此,系统 X 中的开发只能由开发人员 x、y 或 z 完成 - 而不能由开发人员 a、b 或 c 完成。

首先,我认为这是个好主意 - 每个人都不应该无所不知。但仔细想想,我也能看出这种方法的一些缺点。由于这些限制,计划冲刺和确保工作平均分配变得更加困难。我们可能会遇到开发人员在冲刺结束时无事可做,而其他人负担过重的情况。这感觉不像是团队负责冲刺。此外,我们可能被迫在 sprint 中做一些不太有价值的工作,以确保每个人都有工作。

关于拥有一支没有太多弱点的灵活团队,您是否有任何最佳实践或经验可以分享?例如,如果有准确的语言和框架、通用的代码实践、文档完善的代码、经过良好测试的代码和良好的审查流程,那么要求开发人员在许多产品中工作是否现实?还是我们必须将某些开发人员分配给某些产品?

当然,scrum 只是一个框架,你可以根据自己的需要定制,但据我的经验,它不适用于有多个项目的团队。对于这种情况,看板是更好的方法。

另外,学习一个项目就是学习一个特定的历史时代;光靠读书是达不到的。开发人员应该阅读代码和文档,与以前的 developers/business 利益相关者交谈,练习解决一些实际问题。而这需要时间。如果你把它乘以多个产品,并保持开发人员的流动率,你会发现实现你的想法是不可行的。

我建议可以为每个项目准备一个运行手册,并使用导航器和驱动程序模型进行结对编程会话,并尝试实现至少有 2 名开发人员掌握产品,并可选地让其他人在入门级了解这至少可以帮助他们构建和调试它。 Here's my article about this approach.

我不认为看板是真正的解决方案。我使用看板解决生产问题,使用 Scrum 解决标准开发问题。

所以基本上,问题是组建 A 团队和 B 团队并分担责任,答案实际上在于产品的复杂性和这些产品产生的工作量。交叉培训非常好,但总有一个限制,作为经理,您最了解情况,必须进行判断电话或一些 AB 测试。根据我的经验,变化和变化确实避免了倦怠。

你也可以问资源不足?或者产品已经过时,需要更换或重建?

我希望我有我建议的灵丹妙药,但实际上这最终取决于你和你的团队,所以我的建议是避免倦怠,改变并拥抱改变,跳出框框思考,可能会退休一些产品,在团队 a 中进行 3 个月的团队轮换,在团队 b 中进行其他 3 个月的轮换,开始一些重建,以便团队保持积极性并学习新事物,其他可以聘请额外的远程开发人员更具成本效益。

您和团队在过去一年的努力似乎打破了知识孤岛(通过 co-development 和结对编程)。如果是这样,则开发人员具有 T-shaped 专业知识;对大多数 products/integrations 的广泛理解和与特定产品及其技术技能相关的深厚历史专业知识。如果继续前进,我将遵循分阶段责任小组方法:

社区规则:与每个责任组关联的定义需要共同定义。它们不应该太窄,以至于在 Sprint 时责任很少与 DEV 成员保持一致(认为 OR 不是 AND)。最初的想法是 languages/frameworks、特定产品的历史专业知识或流程角色(例如质量保证),但您和团队最了解。责任组和开发团队的定义 self-assignment 应记录在案并在团队可访问的位置提供。

代码审查: 责任组中的一个人在合并前审查拉取请求。无论 person/pair 是否在责任组内,这都会生效。特别是当代码由责任组内的一个人提交时,由责任组内的另一个人审查确保技术专长得到分发(peer-to-peer 学习技术领域)。

如果团队正在享受在他们的专业领域(责任组)内做出贡献的过程,那么所有 DEV 成员都以平衡的方式为代码审查做出贡献(如果不是审查责任组),他们仍然想接受更进一步,我将介绍一个实验时间框架和容量规划王牌。

实验时间范围:这是一个有结束日期的实验,而不是永远的流程更改。实验持续时间应该足够长,以了解基于责任组的能力分配流程变化是否具有团队正在寻找的积极影响(由于技能 fit/reduce 倦怠风险、提高速度等而提高工作场所的快乐度。 ). pre-defined 结束日期提供了反思和决策点(继续或停止)的机会。如果团队预先就成功指标达成一致,这会使审查更加顺利。

容量规划王牌:如果代码审查以平衡的方式进行,那么跨冲刺的容量规划通常也应该有效。在冲刺计划中,重点是与社区规则保持一致。然而,如果能力(与责任组分配一致)与冲刺工作量不匹配,那么冲刺完成将胜过责任组分配。根据能力小组成员,根据责任分组,填补空白。冲刺冲刺,相同的 DEV 成员不应该被迫离开他们的责任组。如果是这样,社区规则需要审查。