Team Topologies 团队拓扑
起初,对"Cognitive Load" 一词非常好奇,又了解到在 Matthew Skelton 的 《高效能团队模式》 中介绍其与团队的建设有密切的联系,在查找书籍过程中,也有读后感的文章对此书进行了总结,比如 Team Topologies - 團隊優先思考模式,觉得非常好,得好好细读,一直放在浏览器标签上舍不得关闭,今早早起趁此赶紧消化下,顺便记录下来,往后查阅。
名字解释
文章涉及几个专业名词。
名词 | 解释 |
---|---|
Conway’s Law | 組織內團隊組成的架構,就會直接影響你的軟體系統架構會長成什麼樣子。因為團隊架構決定溝通模式,溝通模式就會影響軟體系統架構 |
Dunbar 鄧巴係數 | 团队中可以深入互相信任且 share working memory 的人数基本上大概是 5 个人左右,极限就是 15 人。而能互相信任的上限大概是 50 个人, 当超过 150 人时就已经高过了社交认知的上限,就连要记住对方的名字都难。 |
Team Fist Mindset | 团队优先思考模式, |
Minimal Cognitive Load | 話說我們每個人的 working memory 其實是很有限的,所以要慎選佔用我們記憶體的事物 |
谷仓效应 | 各部门就像一间「小公司」,各自为政、自负盈亏,只专注在自身的营运利益,而非整个企业的利益,最终导致整个组织功能失调、企业走向衰败。 |
Stream-aligned Team | organized around the flow of work and has the ability to deliver value directly to the customer or end user. ![]() |
Digital platform | A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. |
Team Dynamics
Team dynamics describe the behavior relationship between the member of a group .
Team dynamics are the unconscious, psychological forces that influence the direction of a team’s behaviour and performance. They are like undercurrents in the sea, which can carry boats in a different direction to the one they intend to sail .
Google 内部研究,影响 Team Dynamics 的因素有哪些?
- Team Size
- Team Lifespan
- Team Relationship
- Team Cognition 团队的认知
好的团队基础就是小巧精干且长存的团队。5-9 人, 固定的团队成员一起为了一个目标工作得时间至少一年以上。
Tunkman’s stages of group development
这个说明了为什么团队至少一年以上。从团队组成到真的可以产出绩效,至少经历以下四个阶段
- Forming
- Storming
- Norming
- Performing
Team Fist Mindset
团队优先思考模式, 是什么?
- 团队对某个软件负责,并且持续的关注与改善
- Daily 要承诺参与并且不要迟到
- 团队对于内部事务要持续讨论
- 专注于 Team Goal
- 帮助他人移除 blocking thing
- Mentor 新人,相互帮助成长
- 避免争输赢的争论,要能包容探索各种可能性的言论
Minimal Cognitive Load (最小化的认知负担)
如果要让团队能以高效的模式运转,首先要以小巧精干的长期的团队为单元,并且限制或与减少不必要的沟通。随着系统越来越复杂,团队与团队之间要建立沟通的规范。
- Intrinsic Cognitive Load
- Extraneous Cognitive Load
- Germane Cognitive Load
如何最小化认知负担?
- 好的 IDE 和 tool 或者是培训来降低 Intrinsic Cognitive Load
- 通过 SOP 或者专业的 Infra Team / DevOps Team 来帮助建设优化开发部署流程,消减工程师的 Extraneous Cognitive Load
- 让工程师更专注于产生价值的 Germane Cognitive Load, 设计更好的系统来解决客户的问题。
另外,Three ways to reduce team cognitive load and improve flow[2]:
- Create well-defined team interaction patterns
- Use independent,stream-aligned teams[1]
- Build the thinnest viable platform (TVP)
团队的拆分
按照康威定律,团队的切分与组织的沟通模式会决定你的系统架构
好的 API
好的 API 是团队间的好的沟通模式,如果没有可能造成谷仓效应
。 怎么定义好的 API[5]:
- OPENAPI 定义 API
- 使用文档 / Wiki
- 好的用户体验
- 版本 and testing approach
- 最佳实践和原则
- Work Info (未来的路线和 bug 修复时间)
- Communication preferences (when/how)
把其他团队当成顾客。
管理依赖
Track dependencies using simple tools and remove blocking dependencies
管理团队间交流
Consciously design inter-team communications using team interaction mode
好的文档
Overcommunicate using just enough written documentation
Digital platforms
- Digital platforms[6] are portfolios of technical products.
- Developing a digital platform is a strategic decision and not to be taken lightly. Besides the direct financial considerations, digital platforms also exert pressure on the relationships within your organisation.
- Digital platforms are force multipliers(火力加乘), so there is a fine line between developing a competitive advantage and introducing a significant productivity blocker.
参考
[1] Organizing Agile Teams and ARTs: Team Topologies at Scale Overview
[2] Matthew Skelton and Manuel Pais: Forget monoliths vs. microservices. Cognitive load is what matters
[3] Justin Kitagawa: Platforms at Twilio: Unlocking Developer Effectiveness
[4] 阿贝好威: Team Topologies - 團隊優先思考模式
[5] Matthew Skelton and Manuel Pais: Are poor team interaction killing your devops transformation
[6] Cristóbal García García and Chris Ford: Mind the platform execution gap