提高软件开发团队协作的6个原则

提高软件开发团队协作的6个原则

风险投资公司 Andreessen Horowitz 联合创始人兼普通合伙人 Marc Andreessen 表示:“软件正在吞噬世界。”随着数字设备的普及,新技术改变了我们的生活,软件已成为所有企业不可或缺的因素。即使你在房地产或医疗行业工作,你也必须使用一些系统或应用程序。因此,有效和高效地开发软件是所有企业生存和成功的关键。

然而,尽管出现了许多理念和项目管理框架,如敏捷、Scrum、极限编程 (XP)、看板和团队拓扑,但只有少数企业知道如何高效地开发软件。我遇到过许多反模式,导致进度延迟、软件质量恶化和客户满意度下降。为了防止无效管理并实现更高的绩效,您应该了解软件项目/产品管理的最佳实践、理念和原则。

最有影响力的实践之一是组织如何形成团队结构。许多研究(如康威定律)证明,如果你以错误的方式形成团队结构,你的团队绩效将受到极大制约。在本文中,我将根据我的经验和深入研究,解释如何在组织中形成有效的团队结构的原则。我保证你的软件团队将得到大幅提升。

1. 先进行系统设计

第一个原则是,在设计团队结构之前,先设计你想要生产的系统。美国计算机科学家和计算机程序员梅尔文·爱德华·康威 (Melvin Edward Conway) 于 1967 年创造了康威定律,该定律描述了组织的结构和沟通将制约其生产的系统设计。例如,如果一个组织构建了一个设计团队、业务团队、前端团队和后端团队,那么系统的输出也将是业务文档、设计组件、前端组件和后端组件,这需要大量的团队间沟通才能整合并交付给最终用户。康威定律是最普遍的反模式之一,至今仍被许多组织使用。

提高软件开发团队协作的6个原则

康威定律还有一种理论,叫做逆康威策略(ICM)。顾名思义,ICM 策略是康威定律的逆向策略,即组织先设计系统,再组建团队。这种团队结构不需要频繁的团队间沟通,可以让团队独立地向最终用户交付价值。(虽然不可能完全独立)它也被称为流程对齐团队、功能团队或跨职能团队。

提高软件开发团队协作的6个原则

2.考虑认知负荷

Matthew Skelton 和 Manuel Pais 于 2019 年出版的《团队拓扑:组织业务和技术团队以实现快速流动》一书描述了软件组织中的四个基本团队:流程对齐团队、支持团队、复杂子系统团队和平台团队。这四个基本团队背后是一个重要的心理学理论:认知负荷,指使用的工作记忆资源量。

在团队拓扑中,第一个原则中解释的团队结构称为流程一致团队。流程一致团队是跨职能的,是独立向最终用户提供价值的主要团队。但是,流程一致团队太忙了,无法跟上新事物,例如新技术、管理方法或领导力,也无法处理基础设施。如果流程一致团队承担了太多责任,他们就无法处理任务,他们的绩效就会下降。因此,为了减少他们的认知负荷(责任),其余三个团队(支持团队、复杂子系统团队和平台团队)支持流程一致团队。

提高软件开发团队协作的6个原则
  • 支持团队帮助流程一致团队学习为最终用户提供更高价值所需的新知识,例如技术、架构、UI/UX、管理方法等。支持团队可能由内部/外部导师、教练或顾问组成,他们可以在流程一致团队中教授和实施新知识。
  • 复杂子系统团队负责处理需要特殊技能或可以与正常交付隔离的特定组件,例如机器学习模型、特殊图形/动画或身份验证 API。复杂子系统团队负责处理的组件将通过讨论确定,因为与流程一致团队没有明确的界限。
  • 平台团队构建并提供一个平台,以便流程一致的团队能够顺利部署和发布,从而为最终用户提供价值。在团队拓扑的背景下,平台是一个综合的概念,包括文档、说明、DevOps 和基础设施,以协助流程一致的团队顺利部署。

3. 缩小规模

第三个原则是小团队。许多研究和领先公司证明,小团队比庞大的团队更有效率,表现更好,因为沟通有效,团队中的每个人都能随时了解情况,并能提高参与度。例如,亚马逊自成立以来就一直实行双披萨规则,即组建少于 7 到 9 人的团队和会议,并取得了真正的成功。

最广泛使用的敏捷框架 Scrum 的作者 Jeff Southerland 也在 Scrum 指南中解释道:“Scrum 团队足够小,可以保持敏捷,也足够大,可以在一个 Sprint 内完成重要工作,通常只有 10 人或更少。总的来说,我们发现较小的团队沟通更好,效率更高 ”

4. 仆人式领导

丹尼尔·平克在他的著作《驱动力:关于我们动机的惊人真相》中提出了“动机3.0”的概念。他认为,自工业时代以来,人类的动机发生了变化,并定义了三种人类固有的本质:目的性、自主性和掌控力,这三种本质可以持续激励我们。

  • 目的:人类寻求意义。
  • 自主性:人类想要决定如何做。
  • 精通:人类想要成长。

仆人式领导由罗伯特·K·格林利夫提出,体现了激励 3.0 的概念。这是领导哲学之一,其主要实践是服务团队,使团队成员以高参与度、积极性和可持续成长的方式工作。在传统领导中,领导者(老板)以命令和控制的方式命令团队成员(下属)做什么和如何做。传统的领导风格不会激励个人或提高他们的参与度和绩效。

仆人式领导者设定目标和愿景(目的),将实现目标和愿景的权力委托给个人(自主),并提供学习新事物的机会(掌握)。

5.持续改进

截至 2024 年 1 月,丰田是世界上最大的汽车公司,并以其实践和理念影响着所有商业行业,例如 7 种浪费、5S(整理、整顿、清洁、标准化、持续)和 3M(Muri:负担过重、Muda:浪费、Mura:不一致)。最引人注目的理念之一是 Kaizen,即持续改进,可持续地改善业务流程。无论业务类型或情况如何(即使一家公司在行业中拥有最高的市场份额),100% 总是有改进的空间。没有完美的业务,所以我们必须不断发展。

持续改进会产生长期的复合效应。该术语最初来自金融中的“复利”,这意味着利息在长期内呈指数增长并产生被动收入。同样,如果团队和企业持续改进,他们的业务流程将大幅改善并成倍增加销售收入。陷阱是大多数人停止进行持续改进,因为他们无法在短期内看到显着的结果。然而,它会产生长期的巨大成果,因此需要一致性和耐心。

提高软件开发团队协作的6个原则

最受欢迎的敏捷框架 Scrum 源自丰田,同样实践持续改进。在 Scrum 中,持续改进发生在“Sprint Retrospective”期间,Scrum 团队会讨论未来工作中可以做得更好的地方。这是 Scrum 解决团队绩效问题并成为最广泛使用的敏捷框架的最大原因之一。

6.稳定性

最后一个原则是稳定性,这意味着团队结构/成员和工作流程应该稳定。不稳定会导致团队混乱,并降低生产力和绩效。

第一个稳定性是团队结构和成员,这意味着他们不应该频繁更换或调动。例如,如果组织经常在团队之间调动开发人员,那么每次被分配到新团队时,开发人员都需要跟上工作风格、代码库和文档,从而降低他们的生产力。

第二个稳定性是工作流程的流动。如果工作流程不标准化和一致,团队成员会对如何工作感到困惑,产出质量也会不一致。丰田将标准化定义为其业务中最关键的实践之一,正如大野太一强调的那样,工作应该顺利进行,没有障碍和浪费。作为丰田生产系统 (TPS) 的成果,看板的创建是为了可视化工作流程和任务状态。

结论

依据康威定律,在团队成立前就应进行系统设计,从而打造产出驱动、跨职能的团队,比组件团队更有生产力、绩效更高。

如果组织将太多职责交给一个团队,该团队将无法处理这些职责,其绩效会下降,因为认知负荷(人类的工作记忆量)是有限的。为了避免这个问题,组织会组建支持团队:支持团队、复杂子系统团队和平台团队来协助核心团队,这在团队拓扑中称为流程对齐团队。

小团队比大团队表现更好,因为团队越大,沟通就越复杂。亚马逊从创立之初就践行小团队,Scrum 也明确规定团队人数应少于 10 人。

人类有三种与生俱来的欲望:目标、自主和掌控,这被称为丹尼尔·平克提出的动机 3.0。仆人式领导会协助、帮助和支持其他团队成员,从而激励其他团队成员实现更高的绩效。仆人式领导与传统的命令和控制式领导不同。

丰田几十年来一直在实践持续改进,并已成为世界上最大的汽车公司。持续改进对企业至关重要,因为它会在长期内产生巨大的成果。即使一个组织处于行业领先地位,它无论如何都必须蓬勃发展,因为总有进步的空间。

团队和工作流程的稳定性对于提高团队绩效至关重要,因为不稳定会导致混乱和追赶成本。团队结构和成员应该稳定,以避免每次变动或调动时产生追赶成本。工作流程也应该稳定,以便团队成员能够顺利工作。

文章标题:提高软件开发团队协作的6个原则,发布者:Yang,转载请注明出处:https://worktile.com/kb/p/3485335

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Yang的头像Yang

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部