您现在的位置:e-works > 智造书屋 > 书籍列表 > 代码之殇 > 2007年10月1日:“你怎么度量你自己?”

第二章 过程改进,没有灵丹妙药

第五节 2007年10月1日:“你怎么度量你自己?”

    在微软,我们唯命是从,但是否应该有自己的思想?当数十亿的美元投入到生产线上,你最好不要对已做出的决定有什么异议。10年前,我们的产品不是猜想出来的,它们是我们在学习竞争对手成功的产品基础上改进的,我们赢在后来居上。

    现在我们在很多领域处在领先地位,没有竞争对手,智囊团们只能凭空遐想。他们的格言是:开发些很酷的玩意儿,希望得到客户的认可。结果是:一地鸡毛,毫无价值或无法理解。

    万幸的是,明智的团队不会胡乱猜想。他们依照微软的研究数据及客户数据来认定使客户真正开心或烦扰的因素,并由此提升我们的产品。如果没有这些数据或回馈,我们将陷入绝境。因此,记得通过数据决定我们如何生产我们的产品,那么就会一身轻松。

    没那么多尝试

    如果出色的团队根据数据生产产品从而消除无端猜想,为什么这种猜想还会左右我们如何生产呢?现今的软件开发过程充满着奇思妙想。“最佳实践”是传统的智慧结晶,过程管理是业内共识,一些自命不凡的敏捷开发方法被当成教条从而取代数据。为什么?

    作者注:我最喜欢的敏捷方法,如Scrum及测试驱动开发,都使用数据。测试驱动开发则更甚——它需要以测试通过率为基础。

    不要告诉我有数据可以证明某种方法最有效。我不是在谈论某某人的数据,我是在说你的。在发现Bug之前,你怎么知道你的团队使用了正确的方法能得到正确的结果?你怎么知道你们今天就会比昨天更好?为什么你们始终不使用数据来查找问题?

    或许是因为软件开发是一种开创性的过程或技艺,它是无法度量的;或许度量就是错误的或容易被不当利用;或许由于你没有充分的数据进行判断;也或许怯懦的狂热者们只愚昧地膜拜于他们所迷信的陈规戒律,他们因为太胆怯而不敢(利用数据来)度量,也太蠢不知道怎么度量。

    仅仅把心思放在成熟的好方法上是不够的。如果没有这么多资金及相关人员投入到产品线上,且你又对如何以一种正确的方式使用正确的度量方法一无所知的话,你是无法经受住生命的洗礼的,伙计。幸运的是,你不用非得刨根究底先了解它。

    有什么问题

    我曾听闻:“你们这些蠢货,你不知道软件度量很恐怖吗?你不知道脑子锈豆的管理者将利用它们来使你与你的同事们,或者让你的团队与另一个做着不同项目的团队相争吗?你不知道它们只是用来冒险一试,而陷你们的工作及客户于水火吗?”是的,我知道。我们早已知道你们对如何恰当使用度量方法一无所知,但既然你提到它了,那就让我们来打消你的顾虑:

    软件是一项创新性的工艺,是不可度量的。就像我在第5章中说的:“软件苦旅——从工艺到工程,”工艺对于制造桌子与椅子很管用,但对于一座桥,一个心脏起搏器以及软件来说就不够了。总之,你忽视了其中的区别。准则一是:不要想着怎么度量,而是度量什么。

    软件度量是错误的,也容易被不当使用。有些人会这样说:“你度量什么就会来什么。”如果你对每行代码都进行度量,人们就会写出更多糟糕的代码;如果度量修复了多少Bug,那他们就会留下更多的Bug需要修复。准则二是:不要对中间环节进行过多度量分析,只对其期望结果进行度量分析。

    有充分的数据能对所有事情做出论断。计算机能产生非常大的数据量,而软件开发是在计算机上进行的。然而,如果这些数据反映的是更多问题而不是答案的话,那它就是没用的,不管那些图表看起来有多美。准则三是:不要只是收集数据而已,使用度量分析解决关键问题。

    只有管理者使用数据而不是你。管理者的慵懒众所周知。如果数字告诉了你该做什么,有什么必要把你的想法提交给管理者呢?出色的度量分析工作不是告诉你该怎么做,因为好的度量工作并不是解决怎么做的问题(记得准则一吗?)。准则四是:不要使用度量分析来做决定,而是通过度量分析来使你明白需要做出个决定。

    管理者往往做一些不恰当的比较。管理者的无知也众所周知。他们“高屋建瓴”,认为软件是软件,Bug是Bug,完全不拘细节。只把注意力放在期望结果上或许有用,但这往往会带来不正当的相互比较。准则五是:不要只对原生度量进行比较,要有一些基准及范例,它们提供了参照细节。

    作者注:我那些在Google及新兴网络公司的朋友会说:“这很简单,把管理者干掉就是了。”好主意。把“管理者”换成“执行官”或“产权人”,你会面临同样的问题。

    现在就让我们按照以上准则按部就班。

    怎么回事

    准则一:不要想着怎么度量,而是度量什么。

    人们都讨厌被迫按某一模式工作。没错,他们会乐于接受一些指点及建议,他们也愿意接受一些约束及要求,但是没人愿意成为一个(模式化的)机器人。

    当一个人开始一项任务时,可以肯定他们已经知道有办法可以更好地解决问题。强迫人们按你的方式工作,而不是他们自己的,那当你的方式比他们的差时,这种不良后果就可能发生。这样就会让他们产生挫败感,他们会憎恨你,蔑视你,认为你愚蠢。

    如果对你希望事情怎么做进行度量分析就等于说你要求人们怎么做。这样就把你树立成为了一个让人憎恨又蔑视的蠢人了。我可不建议这样。