设计


    让我们回到1968年,在那个时候,在建立一个系统之前,设计是必要的。设计本身的定义很有趣:


That kind of  intellectual activity which creates a whole from its diverse parts may be called the design of a system.

那种从不同的部分中创造出一个整体的智力活动可以被称为一个系统的设计。


    设计师工具箱中最基本的两个工具是分解和组合


    在设计过程中,需要考虑如何将整个系统分解为一组将一起工作以实现系统目标的部分。同时,这些部分必须重新组合在一起,才能重新形成预期的整体。因此,我们需要两样东西:


  • 对系统边界(以及设计和开发过程中的任何边界)的(初步)理解——什么在范围之内,什么不在范围之外。

  • 系统将如何组织的初步概念。没有这个,我们就不能开始分解设计工作。 


    现在,如果我们考虑由子系统通过接口(interface, 1968年出现的一个新术语)进行交互的系统,通过如下替换我们会发现在组织中有一个类似的地方:

  • 将“系统”替换为“群组”

  • 将“子系统”替换为“团队”

  • 将“接口”替换为“团队领导”

同态


Is there any predictable relationship between the graph structure of a design organization and the graph structure of the system it designs? The answer is : Yes, …. This kind of structure-preserving relationship between twos sets of things is called a homomorphism.


一个设计组织的图形结构和它所设计的系统的图形结构之间有什么可预测的关系吗?答案是:是的,……两组事物之间这种保持结构的关系叫做同态


    Fred Brooks在《神秘人月》(the myth Man-Month)中提到这篇论文时,实际上创造了“康威定律”(Conway’s Law)一词。关于人月的神话当然是人月是可替代商品的幻觉——从管理的角度来看,这是一个非常诱人的想法,但却是完全错误的!康威告诉我们为什么。


Assuming that two men and one hundred men cannot work in the same organizational structure ... our homomorphism says that they will not design similar systems; therefore the value of their efforts may not even be comparable.

From experience we know that the two men, if they are well chosen and survive the experience, will give us a better system. Assumptions which may be adequate for peeling potatoes and erecting brick walls fail for designing systems.

假设两个人和一百个人不能在同一个组织结构中工作 ...,我们的同态性表明他们不会设计相似的系统;因此,他们努力的价值甚至可能无法相提并论。


从经验中我们知道,这两个人,如果他们被选得很好,并在经验中生存下来,将会给我们一个更好的系统。对于削土豆皮和砌砖墙的假设可能适用,但对于设计系统却不适用。


    我们在某种程度上都明白这一点,但却很容易忘记。

    此外,还有一些组织力量对我们不利:

  1. 我们很早就意识到这个系统将会很大,这意味着按照目前的团队规模它将会花费比预期更多的时间来设计。然后,组织压力开始发挥作用,“让过多的人参与设计工作的诱惑变得不可抗拒”.

  2. 当我们增加人员,并将常规的管理结构[1]应用到他们的组织中时,组织沟通结构开始瓦解。

  3. 同态性保证了设计组织中已经发生的解体将反映在系统的结构上。

解决之道


    关键时刻来了,当复杂性还没有被解决,最初设计师的技能正在被考验到极限:


It is a natural tempatation of the initial designer – the one whose preliminary design concepts influence the organisation of the design effort – to delegate tasks when the apparent complexity of the system approaches his limits of comprehension.

This is the turning point in the course of the design. Either he struggles to reduce the system to comprehensibility and wins, or else he loses control of it.


当系统的表面复杂性接近他的理解极限时,最初的设计者(其初步设计概念影响设计工作的组织)将任务委托给他人是一种自然的模式。这是设计过程中的转折点。要么他努力使这个系统变得可理解并取得胜利,要么他失去对它的控制。

   

    解决之道是把大团队拆分成小团队。若干个(尤其是由高技能人员组成的)“自治”的小团队的效率显然要高于一个单一的大团队。

Probably the greatest single common factor behind many poorly designed systems now in existence has been the availability of a design organisation in need of work. 


现在存在的许多设计糟糕的系统背后最大的一个共同因素可能是需要工作的设计组织的可用性。


    也许最重要的事情是“保持设计组织的精简和灵活”。因为你现在的设计在任何时候都不可能是最好的,保持组织的灵活性对于有效的设计是很重要的。


[1] 康威指的是一种军事化的组织结构,即每个人最多有一个上级,最多有大约七个下级——这是我们今天仍然沿用的基本原则。