第1章为何事情没有那么简单_第1页
第1章为何事情没有那么简单_第2页
第1章为何事情没有那么简单_第3页
第1章为何事情没有那么简单_第4页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 为何事情没有那么简单第1章 为何事情没有那么简单任何复杂问题都有一个清晰、简单但错误的答案。H. L. 孟肯,新闻记者,作家(18801956)曾几何时,我可是一个账面上的百万富翁。当时,天使投资人(informal investor)对我的互联网新创企业估值1000万欧元,而这其中的7成归我所有。我擅长于描绘愿景,甚至因此而被授予“年度企业家” Dutch press release of Millidian, December 15, 1999, 可通过的称号。那些花里胡哨的预期收入和利润图表看上去也是美妙无比,尽管这一切还只是停留于纸面上。然而,我和投资人砸进去的钱并未带来更多利

2、润。我们制作的特别内容也没有为网站带来更多访问者。新雇的程序员也没有显著提升我们的开发速度。而且,我们和其他网站达成的交易也没有使收入增加。事实上,与第一轮投资前相比,我们赚的钱更少了。我确信,就算告诉你它的名字,你也未见得知道这个不怎么给力的网站。我们所做的一切不过是嘈杂沧海中的一粟罢了。最后,互联网泡沫的破灭终止了我们的冒险,我们周围其他的新创企业无一幸免。不过,我们很开心。我们从中学到了东西。嘿,这正是我们学习的方式!如果人们注定要从错误中学习的话,那么现在的我肯定相当接近于“全知全能”的状态。作为开发经理、团队领导、项目经理和程序员,我犯过诸多错误,以至自己都在纳闷我这么折腾竟然也没有

3、把整个互联网拖垮。但可以言之凿凿地说,我们确实从中学到了东西。这正是我对你阅读此书的期望,希望你可以从我所犯的错误中以及之前其他人的错误中学到东西。在过去的十年中,我所学到的一点是敏捷软件开发 (参考第2章)是最好的软件开发方法。同时,我也了解到,旧式的管理方法是实施敏捷最大的障碍。好吧,我假定你是一位管理者,或是对管理感兴趣的人。也许你是程序员、CTO、团队领导或是一位有管理能力的测试人员,但就目前而言,这些并不重要。真正重要的是,你打算学习管理,而且是敏捷管理。相信我,你会学有所成的。这本书将教你如何成为一位优秀的敏捷管理者,如何建立敏捷型组织。我们很快就会看到这些,但在此之前,需要为今后

4、的学习打下坚实的基础。首先,要了解一下人和系统,知道人们是如何理解系统的。为什么?好吧,这好比医生要了解人体的运作机制,飞行员要搞清楚飞机的工作原理,程序员需要搞清楚计算机的工作原理。同样,管理者必须知道社会系统的运转方式。我历尽千辛万苦才领悟到一个真理无论你怎样为系统做计划,它就是不会如你所愿。世界不是按照那种方式运转的。你所处的系统并不在乎你做的计划。你可能认为A会导致B,理论上,你也许没错。但在现实生活中,理论却极少奏效,因为可预测性还有一个“孪生姐妹”叫复杂性。看来,我不得不超前一点。就像我即将要解释的,人类更喜欢以线性方式理解事物,这意味着我也最好用线性的方式来讲故事。本书从因果关系

5、开始。本章将先探讨因果关系和非线性,最后介绍管理3.0模型。因果关系“事情会按计划发生”(就像我还是个账面上的百万富翁时我所期望的那样)这一想法植根于我们骨子里就偏爱“因果决定论”。这就是那种论调“当前和过去的事情在某些自然法则的作用下决定未来的事情。” 因果决定论认为任何事情的发生都是由先前发生的事情引起的。因此,从逻辑的角度来看,如果我们洞悉当前的一切,并且清楚某事物导致其他事物的所有可能情况,那么我们就能够通过计算前期事件和自然法则来预测未来。比如,当一个球掷向你时,通过预测其飞行的方向,你便能够抓到它。跑出去和朋友结伴逍遥几天后,你也清楚这个月的薪资会少得可怜。当然,你也因此而了解哪些

6、方式最能够使你的兄弟姊妹抓狂从而摆脱他们。在科学世界里,因果决定论取得了巨大的成功,科学家可以据此准确地预测诸多事件和现象。比如,他们通过牛顿定律预测哈雷彗星将在2061年重返太阳系。 这种科学预测比末世预言准确得多,那些预言只会在一次次失败后不断地推后。这种科学方法如此成功,导致哲学家伊曼努尔·康德(Immanuel Kant)得出结论:普遍的因果决定论是一切科学知识的必要条件Prigogine, Stengers 1997:4。有了因果决定论,程序员能够设计、计划和预测软件在产品环境中的行为。程序员通过编写或修改代码来定义或改变系统在编译和部署后的行为。如果暂时忽略软件缺陷、操作

7、系统崩溃、断电、账户管理及其他种种环境问题,开发人员的预测通常相当准确。因果决定论也帮我非常准确地预计如果找不到更多客户,我的新创企业会终结。虽然这看起来很奇怪,但因果关系尚不足以应付一切。即使我们可以预测哈雷彗星何时回归,预测软件在产品环境中的行为,但我们无法准确地预测下个月的天气。我们同样无法预测软件项目在功能、质量、时间和资源上的所有组合,或新客户到来的时间。(请向我表示同情吧!) 这到底有什么区别?复杂性可预测性和复杂性的关系,就像是你隔壁邻居家友善、稳重的儿子和他那刁蛮、任性的小妹妹。由于可以预测,所以我们可以出门上班,安排约会,参加体育运动,甚至是看电视,然而复杂性却常常将你与周围

8、的交互搅得乱七八糟,出乎意料的问题和变故此起彼伏,根本无法预测和管理。人们有时会将复杂性与大数混为一谈(就像很多如影随形的其他事物一样),然而复杂的事物并不总是大的。以一个水分子为例。一个水分子由两个氢原子和一个氧原子组成。这显然不是一个大家伙,对吧?然而,这三个原子的组合却造成水分子在流动性、密度以及其他物理和化学现象上玄妙莫测的特性Solé 2000:13,这些特性无法(轻易地)用单独的原子来解释(见图1.1)。复杂性并不是一定和巨大的数挂钩。其实,如同著名的三体问题所揭示的,仅仅三个水分子就足可以产生无比复杂的行为。 图1.1 水中究竟发生了什么?万幸的是,科学并没有因为康德对

9、因果决定论的热情支持而停滞不前。在解释某些不可预测的现象上,在解释许多无法计划而只能靠观察体验的事件方面,动态系统理论、混沌论、网络理论、博弈论和其他科学分支都取得了长足的进步。这些涉及复杂系统的科学研究也常常被统称为复杂性科学,详情参见第3章。尽管因果决定论早在17世纪就成功地主宰着科学界,但复杂理论 却是二十世纪的产物,在二十世纪末才成为一门独立的学科。自此,复杂理论才获得了飞跃发展。因而,理论物理学家霍金(Stephen Hawking)曾说过,二十一世纪是复杂的世纪Chui 2000。对软件开发组织的经理、团队领导和项目经理(以及其他各级管理者)来说,复杂理论却是一个利好消息。我们获得

10、了一个从科学角度审视复杂系统的新方法,它涵括构建软件和管理组织中遇到的各种问题。虽然这个启示无法挽救我的千万欧元,但我仍然非常赞同霍金的说法,复杂理论是二十一世纪最重要的概念之一。我们的线性思维然而,我们在使用复杂性理论解决问题时却遇到了一个小麻烦:我们的思维更倾向于选择因果关系。“天生信徒:我们的大脑是如何创造神明的”Brooks 2009这篇文章描述了人类思想如何过度发展因果常识并驱策着我们无时无刻随时随地追寻目的和意义,甚至到无中生有的程度。这篇文章指出,孩子们认为尖锐的岩石之所以存在是为了帮助动物挠痒,而河流则是为了让船漂浮以便运输货物。从表面上看,大脑的组织方式就是为了发现万事万物的

11、目的和因果关系。我们不遗余力地为周围所有的事物建立因果关系,甚至已经到不可理喻的程度。 “看到树丛飒飒而动,你会觉得那里有什么东西”这种过度的因果认知是为生存而进化出来的。如果捕食者就在附近,那么看到这种现象十之八九不是好事。逃跑反而是避免危险的好办法,即使只是疑神疑鬼,但与真正的威胁相比,付出的代价更小。 Brooks, Michael. “Born believers: How your brain creates God.” New Scientist, February 4, 2009. Brooks 2009:32与“非线性思想”(认为事物比因果关系更复杂)相比,我们的思维方式偏爱“

12、线性思想”(认为可以通过原因和结果来进行预测)。我们习惯以线性方式展开故事,从开始到结束。学校教我们线性方程,而基本上忽略更普遍的非线性方程,这仅仅是因为它们太难解了。我们可以轻易地接受“是他做的”,但很难承认“好吧,有些事情就是发生了。”每每发生一个问题(B),我们都会归因于某个事件(A)。比如,金融危机是银行家引起的。失业是移民造成的。极地冰盖融化归咎于二氧化碳的排放。至于团队没有赶上最后期限,肯定是某个人把事情搞砸了。在我们的线性思维里,世界充满了很容易解释的事件、简单的原因和简单的结果。温伯格(Gerald Weinberg)将其称为因果悖论Weinberg 1992:90。心理上对因

13、果决定论的钟爱使人们控制着自己的行动,以确保自己能够区分正确与错误。毕竟,如果已知条件A会导致结果B,条件A' 会导致结果C,而且C比B好,那么我们只要促使A转化为A' ,结果将会变好。至少表面如此。控制的概念在工程师和其他理科生中格外有“市场”。正是这些工程师创造出科学管理 ,并使命令与控制的管理风格从20世纪早期风靡至今。也正是这些工程师设计出形形色色的控制系统,即使今天我们仍可以在许多组织内发现它们的踪影Stacey 2000a:7。目前,我们都清楚这些控制系统只能胜任那些不需要太多思考的重复性工作。对于创造性的产品开发,它们根本不见效!现在指望这些工

14、程师能将人们从沼泽中拯救出来,因为他们是始作俑者。这貌似相当公平。管理上的因果关系驱策着管理者寻找影响结果的各种条件,以便在需要时,能够通过周密的前期设计和自上而下的细致规划来取得预期的结果。然而,组织越庞大,越需要花更多精力解构和重建整个系统才能达到预期目标。过去,我一直使用前期设计和自上而下的计划来编织幻象。我那获奖的商业计划中至少有30页是认认真真的瞎扯。其中,我详细地描述了未来的致富之路。那时,我对此深信不疑。既然是我亲力而为,那么毫无疑问,它肯定能够实现。简化论将整个系统分解,然后分析各部分是如何交互从而形成一个整体的,这一过程称为简化论 (或还原法)。其核心思想是复杂的现象完全可以

15、用更基本的现象来解释。比如,我们可以将飞机分解,然后通过研究这些零件来了解它的工作方式。同样,我们也可以通过分析代码来理解软件系统。当今的科学家正尝试通过分析人类基因来了解疾病和缺陷,期望着能够找到引起这些问题的致病基因。简化论只是在某种程度上取得了成功(参见图1.2)。即使经过若干年的研究,科学家仍然无法了解人类意识的运作机制。经济理论虽然已有上百年的历史,但经济学家仍然无法准确预测金融危机。有许多理论用于为气候变化建模,但它们预测的全球变暖结果却千差万别。尽管已有大量软件开发模型,但世界各地的项目仍在遭受着不可预知的结果。对于生物体、人类意识、经济、气候和软件项目来说,我们无法通过把整体分

16、解成局部并通过分析局部来预测其行为。图1.2 简化论貌似有点过分了 此图引自维基百科,已进入公版领域,网址为人们也是糟糕的解释者本书的几位审阅人员告诉我,人们在解释自身环境时非常糟糕。我们(人类)倾向于忽视那些我们不相信的事情,并且对于与自己心智模型不符的任何东西,我们一概视而不见。这也从一定程度解释了为何我们不能准确地预测实际发生的事情。整体论整体论 认为,只通过各组成部分并不能完全确定系统行为。相反,系统最重要的行为方式是由整个系统决定的。整体论和简化论常被认为是相对立的,然而复杂性科学家却认为复杂性是两者间的桥梁,虽然两者都很必要,但还不够充分Corning 2002:69。即使最忠实的

17、简化论者也不再认为所有的现象都可以由其组成部分来解释。哲学家丹尼特(Daniel Dennet)杜撰了贪婪简化论 一词,以此描述简化论那种用基本组成部分来解释整个现象的思维方式。比如,有种观点认为:“超链接无非就是一些电子,因此超链接并不存在”,这就是一种贪婪简化论。而我对贪婪简化论的反证是:如果贪婪简化论是对的,那么贪婪简化论根本就不存在,这足以使他们荒谬的论点不攻自破。进化生物学家道金斯(Richard Dawkins)Dawkins 1996提出了分层简化的概念,他认为复杂系统可以分层描述,并且每一层级只可以由紧邻的下层部分来描述,不能由更低的层级来描述。这会有效防止将项目的失败归结于一

18、些细枝末节的理由,比如,草皮太湿或草叶太宽。很多人错误地认为简化论中隐含用于构建的假设,也就是说,如果我们清楚地了解系统的组成部分,就可以构建出整个系统。这个想法之所以错误,是因为整个系统并不是各个组成部分简单地叠加,所以即便完全了解系统的组成也于事无补Miller, Page 2007:41。因此,对较低层次结构的了解并不意味着我们就能够重新构建较高层次的系统。即使我们可以使用简化论追踪到问题的源头(根源分析 是一个典型的例子),有趣的是,我们根本无法从一开始就使用构建过程来建造一个可以杜绝此类问题的系统。比如,我们虽然找到了心脏病的诱因(简化论),却无法制造出一个不生病的心脏(构建论)。根

19、源分析难道一无是处吗?根源分析有许多价值。我的意思其实是根源分析只能帮你回顾过去。可以使用它来解决已经发生的问题,并防止它们再次发生。然而,它不能帮你预测未来的问题。分级管理无论整体论,还是分层简化论,两者一致认为,复杂系统中并非所有东西都可以由较低层级的原因来解释。比如,无论你如何努力,都无法轻易地在一只已被分解的鸭子(参见图1.2)中找到用来行走、游水和嘎嘎叫的部件。然而,如果是在公园看到它,却可以一眼认出它是一只鸭子。这对复杂系统的管理者来说具有深远的意义,诸如你我及其他开发经理、项目经理和团队领导,都将从中获益。这意味着,即便某些人对系统的某一层级了然于胸,也可能无法应付其他层级,无论

20、高低,因为还需要其他的知识。因此,一个分子生物学家可能不是一个好园丁即便他知道细胞核、基因和RNA的原理机制,也不意味着他知道怎么照顾那些花花草草;而好园丁也不需要知道基因组和染色体的知识。类似,公司的CEO需要知道许多企业管理的知识,但一旦面对辅导工作或其他人事管理,他也会一筹莫展。(对此,我想多数读者于我心有戚戚焉。)了解某些基层的知识也许确实有用,但从根本上来说,企业管理所需的知识和经验与人事管理完全不同。程序员乔伊(Joel Spolsky)提出抽象漏洞定律Spolsky 2002来解释系统的组成部分如何更清晰地在更高层中暴露无遗,然而这些较高层级原本是要通过抽象来隐藏低层的实现细节。

21、如果更高的编程层受到来自底层的损害,就可以认为这些层泄露了。呈现给用户的那些晦涩的错误消息通常是软件抽象外露的另一种常见表现(参见图1.3)。图1.3 这是一个抽象泄露吗?我们可以在其他复杂系统中看到相似的问题。我清醒的头脑偶尔会突然短路,而似曾相识的感觉、遗忘、随机记忆和其他怪异的感觉也会侵扰它。对于这一切,看上去唯一合理的解释就是我低层神经网络中的异常泄露到高层的思想意识中。其实,不需要分析我的神经链路,也可以很好地控制我的意识,虽然去看看神经科医生也不错我脑海中难以启齿的奇思妙想其实相当普遍。类似地,我们即使不了解汇编编程,也可以写出很好的高级语言程序,虽然一些底层的知识有时可帮助你更轻

22、松地处理一些问题。管理与之相同,CEO不必成为一个优秀的人事经理才能管理企业,他只需要将所有的人事管理交给一个可信赖的管理团队。(这与开发经理、项目经理和团队领导不同,他们的日常工作也需要人事管理的工作)。当然,每个人还是要有一些为人处世的技巧,以便应付在高层表现出来的底层问题(也就是说,泄露发生了)。敏捷管理一旦分级管理拥抱复杂性和非线性,我们就得到了我所称的敏捷管理方法。这是敏捷软件开发的逻辑伙伴,敏捷软件开发是上世纪九十年代由一些组织和个人独立开发的软件开发方法(参见第2章)。它源自对确定性软件开发方法失败的不满,这些方法采用的严格控制、前期设计以及自上而下的计划导致许多项目高度集中管理

23、但惨遭失败。敏捷软件开发(部分)植根于复杂性理论,它承认因果决定论无法胜任成功的项目交付。许多众所周知的敏捷概念,诸如自组织和涌现,都直接来自于复杂性科学文献Schwaber, Beedle 2002,同时,当下的敏捷实践者已经认识到构成法(constructionist approach)无法防止软件失败的脚步。只有不断地接受失败并从系统中清除问题的根源,才能使软件项目稳步增长并成功执行。这同养儿育女几乎如同一辙。尽管敏捷软件项目在投资回报上取得了巨大的成功Rico 2009,但世界各地的管理者对组织内采用敏捷项目管理和敏捷软件开发方法的设置的障碍有着不可推卸的责任。有关敏捷采用的调查表明,

24、变更管理、组织文化、管理支持、团队教育和外部压力是进一步采用敏捷的障碍,并且也是造成软件项目失败的元凶VersionOne 2009,而且其中绝大部分属于管理责任。假如报告是正确的(我实在没有理由怀疑它的正确性),看上去,世界各地的管理者都正在制造问题,而不是参与解决问题。尤为可悲的是,这不只是敏捷软件开发的问题,几乎所有实质性的组织变更都遇到了这个问题。在本书中,我的立场是,在任何类型的变更管理中,传统管理方法通常都是问题,而不是解决方案。戴明(W. Edwards Deming)在多年前也表述过这一观点。因此,我们需要一套敏捷管理理论,一个为敏捷软件开发量身而定的理论。我的万有理论是否有某

25、种理论能够告诉管理者在敏捷环境中要做什么?过去的几十年中,许多管理理论被提出,虽然从科学的意义上来讲其中许多根本算不上是理论Lewin, Regine 2001:5。真正的科学理论不仅要识别出一些自然现象,还要对这些真实世界的观察做出断言,并解释在观察到这些现象之前可以发现什么。在这一点上,许多所谓的管理理论先天不足。这些理论通常只是技术。它们并没有描述这个世界如何运转,只是为问题和情况的处理提供(有用的)建议罢了。约束理论就是个很好的例子,它算不上管理理论,充其量算是一种管理理念,它所提供的过程改进技术就是通过持续关注约束来实现目标。这是否意味着我现在可以提出我的敏捷管理理论,并暗自期望可以

26、与波特、戴明和德鲁克这样的管理大师鼎立?恐怕不行。我曾经希望找到管理软件团队的万有理论(Theory of Everything)。该理论将描述适用于所有软件团队的原则,并可以通过一个完备而统一的模型来帮助人们管理这些团队。目前想来,我的脑袋在那时一定是进水了。幸好,我很快发现这个目标不可企及,有两个原因。第一,已经有大量的理论来处理团队成员之间的协作。这一领域称为社会复杂性:将社会群体作为复杂系统来研究。(图书小团队的复杂性系统Arrow 2000和杂志涌现:复杂性和组织 E:CO杂志由Emergent Publications出版,详情参见都是这一领域的杰出代表。)第二,复杂理论本身已经告

27、诉我们根本无法为复杂系统创建一个统一的模型。这种类型的任何尝试创建一种模型来完全描述一类复杂性系统注定会失败。我将在第16章涉及这个主题。当我发现它时,我如释重负:“太好了,完全不可能!这意味着我终于可以干些别的事情了!”对于尽早失败,我实在很难想到更好的例子了。(高德(Gödel)的不完备定理 已经表明:同样的情况适用于所有的统一理论。也许我们应该高兴,科学家并没有像我一样早早地放弃。)本书和管理3.0模型本书可以帮助你成为一个优秀的管理者。具体而言,它告诉你在敏捷组织中进行敏捷软件开发项目时,敏捷管理者有哪些职责。它也为你提供了丰富的技巧用来将理论转化为日常实践。它同时指引你在了解系统通常复杂而非线性的情况下如何管理团队,如何集中精力于能力而不是预测性。无论是开发经理、团队领导、CTO,还是软件开发人员,其实并没有太大区别。归根结底,我们都是自己环境的管理者。让我们试着了解如何把它做好。图1.4描绘了本书使用的模型。我称其为Martie,管理管理3.0模型。Martie在组织上有六种视角。这六

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论