为什么巴别塔会失败?

阅读经典——《人月神话》04

现在整个大地都采用一种语言,只包括为数不多的单词。

在一次从东方往西方迁徙的过程中人们发现了苏美尔地区的一处平原,并在那里定居下来。接着他们奔走相告说:“来,让我们制造砖块,并把它们烧好。”

于是,他们用砖块代替石头,用沥青代替灰泥(建造房屋)。然后,他们又说:“来,让我们建造一座带有高塔的城市,这个塔将高达云霄,也将让我们声名远扬,同时,有个这个城市,我们就可以聚居在这里,再也不会分散在广阔的大地上了。”

于是上帝决定下来看看人们建造的城市和高塔,看了以后,他说:“他们只是一个种族,使用同一种语言,如果他们一开始就能够建造城市和高塔,那以后就没有什么难得倒他们了。来,让我们下去,在他们的语言里制造些混淆,让他们相互之间不能听懂。”

这样,上帝把人们分散到世界各地,于是他们不得不停止建造那座城市。

——创世纪,11:1-8

巴别塔的管理教训

据《创世纪》记载,巴别塔是人类继诺亚方舟之后的第二大工程创举,但巴别塔也是第一个彻底失败的工程。为什么它会失败?他们是否有:

  1. 清晰的目标
  2. 人力
  3. 材料
  4. 足够的时间
  5. 足够的技术

显然,这些方面都是完全具备的,那么到底缺乏些什么?两个方面——交流,以及交流的结果——组织。他们无法相互交谈,从而无法合作。当合作无法进行时,工作陷入了停顿,进而产生争辩、沮丧和猜忌。很快,部落开始分裂——大家选择了孤立,而不是继续争吵。

因此,我们从中看到了交流沟通的重要性,在软件项目中也是如此。

编程项目的组织架构

编程团队通常表现为树状结构,在这颗树的顶端有两个至关重要的角色:产品负责人技术主管

产品负责人负责组建团队,划分工作及制定进度表。他争取,并一直保证必要的资源。这意味着他主要的工作是与团队外部进行向上的沟通和水平的沟通。并建立团队内部的沟通和报告方式。最后,他确保进度目标的实现,根据环境变化调整资源和团队的构架。

而技术主管的角色是什么?他构思整个系统,识别系统的子部分,指明从外部看上去的样子,勾画它的内部结构。他提供整个设计的一致性和概念完整性,控制系统的复杂程度。当某个技术问题出现时,他提供问题的解决方案,或者根据需要调整系统设计。他是“攻坚小组中的独行侠”,他的工作几乎完全是技术性的。

这两种角色在实际中是如何组合的呢?存在三种可能。

一,产品负责人和技术主管是同一个人。这在小型团队中非常常见,但不适合于大型团队。当事务过多时一个人根本无法兼顾管理和技术。

二,产品负责人作为总指挥,技术主管充当其左右手。这种方法有一些难处。很难在技术主管不参与任何管理工作的同时,建立其在技术上的权威。这需要产品负责人从各个方面支持技术主管的工作。例如,产品负责人可以通过一些微妙状态特征暗示(如,办公室大小、地毯、装修、复印机等等)来体现技术主管的威信,尽管他身在管理团队之外,但他是决策的根源。这一组合并不常用,不过至少有一个好处,即项目经理可以使用并不很擅长管理的技术天才来完成工作。

三,技术主管作为总指挥,产品负责人充当其左右手。Robert Heinlein在《出售月球的人》中,用一幅场景描述了这样的安排:

Coster低下头,双手捂着脸,接着,抬起头。“我知道。我了解需要做什么——但每次我试图解决技术问题时,总有些该死的笨蛋要我做一些关于卡车合同、或者客户电话、或者其它一些讨厌的事情。我很抱歉。Harriman先生,我原以为我可以处理好。”

Harriman非常温和地说:“Bob,别让这些事烦你。近来好像睡眠不大好,是吗?告诉你吧。我将在你的位子上干几天,为你搭建一个免于这些事情干扰的环境。我需要你的大脑工作在反向量、燃油效率和压力设计上,而不是卡车的合同。”Harriman走到门边,扫了一圈,点了一个可能是、也可能不是办公室主要职员的工作人员。“嘿,你!过来一下。”

那个人看上去有些惊慌,站了起来,走到门边说道,“什么事?”

“把角落上的那个桌子和上面所有东西搬到本层楼的一个空办公室去,马上。”

他监督着Coster和他的桌子移到另一个办公室,看了看,发现新办公室的电话没有接上。接着,想了一下,搬了一个长沙发过来。“今晚我们将安装一个投影仪、绘图仪、书架和其它一些东西,”他告诉Coster,“把你工程所需要的东西列一个表。”他回到了原来的总工程师办公室,愉快地想了想如何进行工作组织,以及是否有什么不妥。

过了四个小时,他带Berkeley进来,与Coster会面。这位总工程师正在他的桌子上睡觉,头枕在臂弯里。Harriman慢慢地退出去,但Coster醒了过来。“喔,对不起,”他有点不好意思地说,“我肯定是打了个瞌睡。”

“这就是我给你带来长沙发的原因,”Harriman说道,“它更加舒适。Bob,来见一下Jock Berkeley。他是你新的下属。你仍是总工程师,毫无疑问的老板。Jock负责打理其它事情。从现在起,除了建造登月飞船这样的微妙细节外,你不需要担心其它任何问题。”

他们握了一下手。“Coster先生,我只想问一件事,”Berkeley严肃地说,“所有你需要做的事,我都无权过问——你即将进行一个技术演示——但是看在上帝的份上,能否记录一下,从而让我有些了解。我将会把一个开关放在你的桌上,它会开启我桌上的一个密封的录像机。”

“好的!”Coster正看着他,Harriman想,够年轻的。

“如果要做任何非技术的事情,不需要自己动手。只需按一下按钮知会一声,就会有人把这些事情完成!”Berkeley扫了Harriman一眼。“老板说他想同你谈一谈实际的工作。我得先走,去忙去了。”他离开了。

Harriman坐了下来,Coster整了整衣服,说道,“喔!”

“感觉好一些了?”

“我喜欢Berkeley这小伙子的样子。”

“太好了!不用担心,他现在就是你的孪生兄弟。我以前用过他。你可以认为你正住在一个头等的疗养院里。”

这个故事几乎不需要任何的分析解释,这种安排对小型的团队是最好的选择。对于真正大型项目中的一些开发队伍,第二种应该是更合适的安排。

巴别塔可能是第一个工程上的彻底失败,但不是最后一个。交流和组织是成功的关键,相关经验积累和技能提高同软件技术本身一样重要。

你可能感兴趣的:(为什么巴别塔会失败?)