或是项目的原因,或是写作的原因,一直在思考『如何在云原生时代设计团队的协作?』以及『如何在云原生时代,重新定位开发人员的位置?』。起初,我只有一些细碎、不成体系的定义,直到这周公司大佬在内部分享了团队拓扑的理念之后。我终于找到一种合适的方式(基于这个体系),建立起有理论支撑的协作设计、体系化的开发者定位。
所以,在这篇文章里, 我们将:
从理念上看,本文可以帮助你寻找到自身的定位,并帮助团队更好演进。
这个概念的来源是《高效能团队模式:支持软件快速交付的组织架构》,但是标题中没有体现核心『Team topologies』(团队拓扑),又是一个失败的标题。
直接进入正题,我们这里直接进入这本书的核心部分 —— 四类基本团队拓扑。如下图所示:
四种类型的团队,相互协作,共同来创造价值。概念定义如下(经过重新的定义):
PS:产品导向团队(Stream-aligned team),在书中译为流动式团队,一个容易产生歧义的翻译。我的同事建议翻译成价值流团队。在这里,我还是使用产品导向团队,方便于大家能快速理解 。
如果单纯从组织来看,平台、赋能、复杂子系统团队都是为产品导向团队服务的,即为业务价值服务。只是呢,随着各个公司对外提供技术能力,每个平台既可以为组织内部服务,还能在组织外产生价值。
基于上述的定义方式,我尝试将我所了解的模式、实践与原则,融入到四种类型的不同团队中。构建了第一个简单版本的团队拓扑能力模型,以定位每个团队所做的内容。
如下是产品导向团队(Stream-aligned team)的核心能力与相关的技术实践(第一版本,暂时比较粗糙)。
产品导向团队的关键是,实现快速反馈。从用户痛点出发,并能快速实现用户的价值。这就要求团队具体完整的端到端能力,采用诸如于看板等敏捷实践,良好的架构实践等。
所以,从核心能力来看,它应该包含产品运营、产品创设、用户体验设计、开发与编码、架构设计、质量保障、敏捷实践等能快速高用户价值的能力。
进而,对于技术人员来说,我们需要掌握:可用性工程、服务化架构、遗留系统迁移、自动化测试、持续交付、整洁架构、演进架构、持续部署、持续设计、规范化、整洁代码、面向生产编码等相关的技术实践。
如下是赋能团队(Enabling team)的核心能力与相关的技术实践(第一版本,暂时比较粗糙)。
赋能团队的关键是,实现规模化,即如何规模化的赋能给各个团队。从模式来看,他们需要为团队带来一些新的视角,帮助团队进行演进、转型等。
所以,从核心能力来看,它需要技术实践推广、敏捷运作、研发效能、人才赋能、创新孵化、演进式架构、DevOps 转型、云原生转型等能进行规模化的能力。
进而,对于技术人员和管理人员而言,我们需要掌握:专项辅导、体系设计、构建全功能团队、可视化管理、成熟度评估、胜任力评鉴、技术领导力、种子培养、成熟度模型、过程改进组织、生机型文化、度量等相关的技术赋能和管理实践。
如下是复杂子系统团队(Complicated-subsystem team)的核心能力与相关的技术实践(第一版本,暂时比较粗糙)。
复杂子系统团队的模式是,领域特定。在这个特定领域的模式下,我们难以抽象出一个核心的能力模型。其实也是有的,只是都是研究相关的,只需要抽象出研究的模式,那么我们就能写出这个模型。
等下次,我有空看能不能补上。
如下是平台团队(Platform team)的核心能力与相关的技术实践(第一版本,暂时比较粗糙)。
平台团队的关键是,实现共创,即与其它团队一起产生价值。从模式来看,他们需要提供更好的服务,以改善开发者们的体验。
所以,从核心能力来看,它需要开发者体验、新手体验设计、平台布道、xx 自服务、交付基础设施、开放 API、技术产品化运营、内部开源、等能进行大量与开发者们进行协作设计的能力。
进而,对于团队和平台而言,我们需要掌握:文档体验、协作者培育、技术营销、开发者即服务、内部社区、培养意见领袖、开放式协作、贡献激励、协作体系、开放文化、新手引导等核心的实践。
基于上述平台的核心能力与基础模型,我们可以再看看每个平台需要怎样的开发者:
对应不同的角色,再次的我们可以定义他们的主要的开发者角色:
在有了对于这些角色的定义之后,我们可以简单地再定义每个角色的能力模型。
PS:这部分的内容,只用于展示如何进行能力模型,未经过充分的证明与调研。
在我们定位了不同的角色之后,便可以:
下图是我们初步(拍脑袋定的,不准确)定义的业务开发者所需要的能力模型:
在这个粗糙的版本里,我定义了这九个维度:
同样的,对于其它角色来说,我们也可以定义一些相关的模型。由于篇幅所限,这里就不展开了。
(PS:其实是我懒得写,后续可以在:https://devops.phodal.com/maturity/team-topologies 上进行查看)。
PS:这部分的内容,只用于展示如何进行能力模型,未经过充分的证明与调研。
对于不同的开发者来说,在不同的时间点都会有不同的拆求。有的人做的是业务开发相关的工作,但是对于平台开发等比较有兴趣。因此,让我们基于上述的四种角色,简单的再抽象一下核心的能力:架构设计、工程实践、业务认知、领域特定研发、辅导落地、赋能、培训模式提取、用户共创。
然后,我们就定义于适用上述四种角色的能力模型,以便于开发者们可以根据自己的需求,查看自己与特定团队之间的差距。
如下图是一个业务开发者与平台开发者的能力模型示例:
从这个模型中,我们 就可以看到不同角色对于能力的要求是不同的。由于这是一个简化版本的模型,所以在能力体现上没有那么准确
欢迎留言参与讨论与设计 。
本书的主要灵感来源于《高效能团队模式:支持软件快速交付的组织架构》。
PS: 让我再加几个字,以便于把字数凑合到 3000 个字。
围观我的Github Idea墙, 也许,你会遇到心仪的项目