组织结构和系统架构
上一篇文章里提到了架构,也提到了团队,感觉这个话题没说透(牢骚没发完)。今天再深入聊聊。
在项目的过程中,由于时间压力还是比较大,所以任务重的时候,就会跟领导说:可能做不完呀。领导回复两个字:加人
。
相信同行的朋友对这两个字可能并不陌生,做不完就加人嘛。但是,加人真的有用吗?
答案肯定是否定的,软件行业是一个知识密集型
行业,又不是劳动力密集型。而且,往往加人后会对整个系统带来负作用。因为加人最大的影响就是可能会改变组织结构,而组织结构和系统架构是有关系的。
最早说清楚这两者关系的就是康威定律
。康威定律里最著名的一句话:
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)
中文直译大概的意思就是:设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。
用通俗的说法就是:组织形式等同系统设计
。举例来说:如果有四个小组合作开发一个编译器,那么你将得到一款具有四个步骤的编译器。
那么问题来了,如何能够完美的实现一个系统架构呢?逆康威定律来了,它是ThoughtWorks技术总监James Lewis提出的概念。它强调应该根据理想的软件架构来设计团队结构,而不是盲目遵循已有的组织结构
。
综合康威定律和逆康威定律,我们可以大概明白,要很好的落地一个产品大概就是三个步骤:
- 设计产品架构
- 根据产品架构设计系统架构
- 根据系统架构调整组织架构
回过头来看我们这个产品,是完全反过来的
- 想到一个功能,找一个团队来做
- 又想到一个功能,然后团队说做不完,就加了一个团队来做(系统架构已破坏)
- 新加入的团队又想到一个功能,往系统里硬塞
- 根据上面硬塞的功能,又想到一个功能,但是团队承接不了,就又加一个团队进来
如此恶性循环,最终产品面目全非。
推荐一本书《高效能团队模式》,讲解了团队的结构,以康威定律为基础,值得看看。