上一篇文章里提到了架构,也提到了团队,感觉这个话题没说透(牢骚没发完)。今天再深入聊聊。

在项目的过程中,由于时间压力还是比较大,所以任务重的时候,就会跟领导说:可能做不完呀。领导回复两个字:加人

相信同行的朋友对这两个字可能并不陌生,做不完就加人嘛。但是,加人真的有用吗?

答案肯定是否定的,软件行业是一个知识密集型行业,又不是劳动力密集型。而且,往往加人后会对整个系统带来负作用。因为加人最大的影响就是可能会改变组织结构,而组织结构和系统架构是有关系的。

最早说清楚这两者关系的就是康威定律。康威定律里最著名的一句话:

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提出的概念。它强调应该根据理想的软件架构来设计团队结构,而不是盲目遵循已有的组织结构

综合康威定律和逆康威定律,我们可以大概明白,要很好的落地一个产品大概就是三个步骤:

  • 设计产品架构
  • 根据产品架构设计系统架构
  • 根据系统架构调整组织架构

回过头来看我们这个产品,是完全反过来的

  • 想到一个功能,找一个团队来做
  • 又想到一个功能,然后团队说做不完,就加了一个团队来做(系统架构已破坏)
  • 新加入的团队又想到一个功能,往系统里硬塞
  • 根据上面硬塞的功能,又想到一个功能,但是团队承接不了,就又加一个团队进来

如此恶性循环,最终产品面目全非。

推荐一本书《高效能团队模式》,讲解了团队的结构,以康威定律为基础,值得看看。