soft skills are always hard than hard skills.
软技能比硬技能难。
康威定律是马尔文.康威 于1967年提出的,设计系统的架构受制于产生这些设计的组织的沟通结构。通俗的说,产品必然是其(人员)组织沟通的缩影。
跨部门沟通是非常难的,系统各个模块的接口也反映他们之间的信息流动和合作方式。
- 第一定律 组织沟通方式会通过系统设计表达出来
- 第二定律 时间再多一件事情也不可能做的完美,但总有时间做完一件事情
- 第三定律 线型系统和线型组织架构间有潜在的异质同态特性。
- 第四定律 大的系统组织总是比小的系统更倾向于分解。
第一定律
communication dictates design.
组织沟通方式决定系统设计。
这条定律重点是讲组织架构和沟通对系统设计的影响。组织的沟通和系统的设计之间紧密相连,特别是复杂系统,解决好人与人的沟通才能有一个更好的系统设计。
《人月神话》中总结出了随着人员的增加沟通成本成指数增长的规律:沟通成本 = n(n-1)/2。
这也是为什么互联网公司都追求小团队的原因之一。沟通的问题会带来系统设计的问题,进而影响整个系统的开发效率和最终产品结果。
第二定律
there is never enough time to do something right,but there is always enough time to do it over.
时间再多一件事情也不可能做的完美,但总有时间做完一件事情。
人手永远是不够的,事件永远是做不完的,但可以一件一件。这不就是软件行业中“敏捷开发"模式所解决的问题吗。面对这样的状况,敏捷开发可以做到不断迭代、持续交付、快速验证和反馈,并持续改进。
再牛的开发也会写出bug,再全面的测试覆盖率也无法测出所有的问题。解决方案不是消灭这些问题,是容忍一些问题的存在,然后通过适当的设计(冗余、监控、高可用设计)当问题发生时能够快速解决问题。
几个开发人员的小公司,去追求微服务、去追求中台架构,这是追求完美吗?不是,好的架构不是买来的,也不是设计出来的,而是根据业务落地生根长期演化来的。
第三定律
there is a homomorphism from the linear graph of a system to the linear graph of its design organization.
线型系统和线型组织架构间有潜在异质同态特性。
这一定律是第一定律的具体应用。想象一下如果公司的组织架构是这样的:团队是分布式,每个团队都包含产品、研发、测试、运维等角色。而此时系统是单块的,项目沟通和协调的成本是巨大的,弄不好还会打起来。
如果将单块的系统拆分成微服务,每个团队负责自己的部分,对外提供对应的接口即可,互不干扰。系统效率将得到提升。这与软件设计中的高内聚、低耦合是想通的。
直白的说就是想要什么的系统就搭建什么样的团队,有什么的团队就搭建什么样的系统。需要前后端分离的系统就搭建前后端分离的团队,反之,拥有重组团队或设计系统架构的权利,那就再好不过了。通常情况下让两者形成1:1的映射关系,更加高效。
第四定律
the structures of large systems tend to disintegrate during development, quelitatively more so than with small systems.
大的系统组织总是比小的系统更倾向于分解。
“话说天下大势,分久必合,合久必分。”系统越复杂,越需要增加人手,人手越多,沟通成本也呈指数增长。分而治之便是大多数公司选择的解决方案。分不同的层级,分不同的小团队,让团队内部完成自治理,然后统一对外沟通。