2012年7月22日

Part 1.大船瓦沙

1625年,瑞典国王古斯塔夫二世·阿道夫打算建造有史以来最棒的战舰。他雇了最好的造船工匠,专门种植了一片最刚硬的橡树林,都为了建造大船瓦沙。国王不断提出各种要求,希望把船建得更宏伟壮丽,到处都加上华美的装饰。有那么一天,他甚至决定在船上配备两套甲板炮,这是当时世界上绝无仅有的。他的船会是海上的霸王。而且由于迫在眉睫的外交问题,他还希望大船瓦沙能尽快造好。当然了,工匠们一开始的设计只有一套甲板炮,不过既然国王提出了要求,自然就得再加一套。由于太赶时间,工匠们来不及做“摇晃测试”──让一群水手从船的一边快跑到另一边,船在这种情况下不应该摇晃得太厉害(换句话说,没有头重脚轻)。结果,它的处女航只有几个小时,然后就沉入了海底:在给它加上所有华丽“特性”的同时,国王和工匠也让这条船变得根本无法航行。大船瓦沙在北海的海底长眠了几百年,直到20世纪初才被打捞出来,陈列在博物馆里。

一个有趣的问题:到底是谁导致了瓦沙的沉没?是国王,因为他要求了太多的特性?还是工匠,因为他们只顾着满足国王的要求,没有大声说出自己的担忧?看看你正身处其中的项目吧:你是不是正在建造又一艘瓦沙?

只做当下需要的。一开始这会很难,但最终你会得到一个更好的代码库。如果不引入不必要的复杂度,在修改或是重构时就不用对抗这些复杂度。程序员应该谨记:熵会杀死软件,所以,如无必要,勿增特性。

这是四年前,从熊节(gigix)的博客上看到过的大船瓦沙的故事。最近一直在思考,回顾这几年来所经历的各个项目,总结其中的经验教训,发现曾经遇到过不少大船瓦沙这样的问题。

Part2.高效杠杆

第4章《第五项修炼的微妙法则》中提到过利用动态系统和杠杆原理的思想,书中举了一个例子:一只大船如果需要突然紧急转向,方法是什么呢?

错误的方法是:紧急打船头的大舵。紧急调转船头的方向,会因为飞快的船速带来巨大的惯性而很难一下子转向。而且船的体量巨大、水的阻力巨大,紧急打舵很可能不仅没有将船转向,还极容易折断船体。

正确的方法是:打船尾的小舵,使船尾向相反方向扭转。由于杠杆作用,船头自然就转向了。

彼得.圣吉在《第五项修炼》一书中这样解释系统思考:

系统思考称为新的沉闷科学,因为它教导人们:最明显的解决方法不管用,它最多也只能带来短期的改善,长期来看则会把事情搞得更糟。然而,故事还有另一面。系统思考还指出:微小的、集中的行动,如果选对地方,有时会带来可观的、可持续的改善。系统思考学者们把这个原则叫做杠杆作用(leverage)。

因此,应对困难的问题,常常必须发现高效杠杆作用(high leverage)在哪里,即找到最省力,又能产生持久、可观的改进的变革方法。

同理可推,当一个组织还是一只小船,领导者既是船长又是舵手,还是划桨的主力,组织在这样的带动下,运转很快,只需要跟随步伐即可。但随着发展成一只比较大的船了,就需要各个部门都能自己支撑起一摊事情来,而且各个环节象齿轮一样紧密咬合和相互配合,调整方向就需要更多地利用杠杆原理去实现。这也意味着领导者都不能猛烈打舵,因为阻力极大暂且不说,最关键的是船非常容易折断。所以比如逐渐建立和完善流程和制度,规范化的管理,则会将个体的智慧聚集成团队的力量,实现敏捷迭代。

其实七八年前就曾经读过《第五项修炼》,但那会儿缺乏经验、体会不深刻,最近重新读,感触颇深。

Tags: .
首页

发表评论

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

Trackbacks/Pingbacks