UML软件工程组织

 

 

更好的最佳实践
 
2008-04-11 作者:Dan North郑柯译 来源:InfoQ
 

各个组织经常会引入最佳实践,以作为变革计划或质量改善行动的一部分。它们可以有多种不同的形式,包括从“实用秘籍”类的书籍、备忘单到由咨询师带领的、完全成熟的方法论等,并通过必须的审核与认证机制来完成。

本文介绍的“Dreyfus学习模型”,是对草率应用最佳实践策略的挑战,同时指出草率的使用不但不能起到帮助作用,反而会对顶尖的团队成员起到严重的负面影响。

应用最佳实践的动机

推行业务变革计划的人们,总是能够为在组织中推行最佳实践给出种种理由。

  • 应用最佳实践可以确保一致性。我们正在引入[此处插入最佳实践名称],而且希望确保每个人都能与我们保持方向一致。我们要给人们提供方向指引,以避免他们被落下;否则只能造成混乱。
  • 应用最佳实践可以支持学习过程。我们要让大家在尽量不产生焦躁情绪的状况下,彼此保持步调一致;而且我们拥有一个标准化的、结构齐备的运作材料,这就是说人们可以明确了解自己该做什么,以及在理想化状况下他们能够做到多么好的程度。
  • 应用最佳实践可以限制(潜在的)冲击或破坏。(现在让我们看看它们到底是怎么一回事吧。)在任何组织中,人们能力总是会构成一条钟形曲线[注1],我们知道有少数非常杰出的人会被错误对待,导致他们处于钟形曲线错误的一端。错误地推进变革计划,会让我们面临重大的财政或法律风险;为了保护我们自己,要将实践的流程和方式定义得非常清晰。它们之所以被成为最佳实践,是因为人们曾经尝试过它们并且证明它们是有效的,所以我可以明确保证它们一定能够起到成效。
  • 应用最佳实践可以帮助建立更加便捷、灵活的劳动力环境。在目前高速发展的时代中,项目的实现或是取消都是一夜之间的事情。人们在项目团队之间转换,项目在不同办公室、国家或时区之间变动。让所有的成员都能接受针对同样最佳实践的训练,我们——和他们——就能在工作的灵活性上拥有更多选择。我们称之为“资源商品化”。
  • 应用最佳实践可以帮助我们加强控制。在一个大型的、等级森严的组织中,“加强控制”是问题的关键。一个部门经理或者副总可能要负责几千人的管理。在这种规模下,拥有一个清晰定义并能得到强有力实施的最佳实践是进行有效管理的唯一途径。

换句话说,最佳实践被用作管理风险的手段。

风险的本质

风险是一种有趣的现象。在商业用语中,“风险”通常意味着事情发生问题的概率。我们将一种可能性(高、中或低;百分比;统计数量)分配给我们所关心的事件之上。

可风险不就是恐惧的一种形式化方式吗?我们将畏惧之物视为风险,类似地,对于不害怕的东西,我们就不太关心(也就是风险较小)。换个方式来说,篡改下乔治?卢卡斯的话[注2](向他表示歉意):

  • 恐惧导致风险
  • 风险导致流程
  • 流程导致憎恶(还有会议,还有甘特图)

现在,恐惧变成了两种:理性的恐惧和非理性的恐惧。理性的恐惧是健康而且有益的。狮子是不好的动物。火很热。卡车可以造成伤害。这些是基于有益信息的恐惧,要么是通过进化而来,或者通过文化学习而来,或者是来自个人发展的经验。

非理性的恐惧是偏见和恐惧症的根源,膝跳反射也是因此而发生。下面这些都是非理性的恐惧。地球是扁平的,你要是走过了它的边缘就会有生命危险。用老鼠的尾巴把它吊死就可以避免瘟疫。把椰子壳放在耳朵上,就会看到货运飞机的出现。

可问题在于,从害怕的人的角度来看,这些畏惧都是差不多的。对于一个害怕蜘蛛的人来说,对蜘蛛的恐惧感与狮子带来的恐惧感程度相当。

从基本层面来看,大部分恐惧都是非理性的,特别是在业务环境之中。如果一个系统延迟交付,在大多数情况下是不会死人的。你也不太可能会有受伤或者挨饿的风险,最多不过是得到一个有点严厉的评语而已。

我们日常生活中用到的大部分软件——工作时使用的办公套件、家里用到的游戏控制器、阅读这篇文章时使用的浏览器——都会遇到延迟交付的问题。而且它们可能出问题。而且在几天或者几周之后,就会有一个漏洞修补程序/Service Pack安装包/自动更新用来修正某个重要的功能缺失或是安全漏洞。或者还没有出现问题,因为厂商并没有让幸福的你意识到:你的电话号码/电脑信息/控制台信息正在被泄露出去。

理性的恐惧是好的——它可以让我们避免被伤害。我们应该拥抱它,而且珍视其为我们安定生活的守护神。非理性的恐惧只不过拖累而已,还好我们有应对之道:

非理性来自于无知,我们可以通过学习来克服它。

Dreyfus模型介绍

上世纪70年代后期,有兄弟俩花费了一些时间来研究学习的本质。他们对刚刚出现的人工智能发生了兴趣,并希望让电脑可以学习诸如下棋这样复杂的技能。当时对于围绕着学习过程所建立起来的知识还很少,也就没有什么可以让他们用来参考去编写计算机程序了,所以他们决定自己研究学习的过程。

他们的研究成果就是Dreyfus技能获取模型(Dreyfus Model of Skills Acquisition),描述了人们如何从对某物一无所知,到无需思考即可熟练运用的过程。

虽然现存有许多种学习和技能获取模型,但Dreyfus模型独具的特色让其脱颖而出。首先,它基于真实的证据和经验,而且被证明是可以实际运用的。(在1980年美国公共医疗卫生服务面临护士危机时,它发挥了巨大作用——http://tinyurl.com/32afwt)其次,它不仅仅是对发展过程的消极观察,它同时描述了人们在不同阶段应该如何应对,以及因此而为他们带来的成长。

当你开始学习新技能时,你对于上下文没有任何了解,所以需要一些特定的方向指引。也就是说,你不知道面对着什么,必须有人告诉你应该做什么。随着对上下文和背景知识的深入了解,就不再需要对方向的指引了。实际上,你应该考虑如何更进一步加深了解,以作为获取技能的基础。

Dreyfus模型将学习的过程分为五个不同的阶段或水平:

新手(Novice)需要详细的指导——要手把手地教。新手不知道这些指导是否有效,或者哪些指导更加重要;因为没有上下文知识可供他们使用进行评估。因此,新手需要频繁迅速的成就感和有规律的反馈。一本好的入门指导书籍要提供有足够多的图画和充足的可靠信息。

高级初学者(Advanced Beginner)对基本步骤——单独的任务——已经熟悉了,而且可以把它们进行有机的组合。高级初学者仍然在很大程度上是面向任务而不是面向目标的,不过他们已经开始有些概念了。这也是一个学习者最危险的阶段——他们知道自己学到的已经不少了,但是这还不足以让他们远离麻烦!刚学走路的孩子在很多方面都是高级初学者。有了足够的经验,高级初学者就能拥有足够的能力以胜任某些工作。在“胜任(competent)”水平上,他们就走到面向目标阶段了。他们可以组合一系列任务以达成某个目标。也许任务的组合顺序不是最佳的,但是通常都可以发挥作用。有能力的人希望给定一个目标,然后能够得到别人的信任来达成这个目标。相反,如果要是试图详细告诉他们应该怎么做,这些有能力的人就会觉得很烦躁,就像是汽车里被坐在后面座位的乘客指手画脚的司机一样。

大部分人在大部分技能上很难超越“胜任(competent)”水平,即使他们在每天的日常工作中使用这些技能。这是人类的基本特性——一旦有所收获,我们就不想再投入精力了,而且对于大部分活动来说,所谓的收获只不过是把工作做完而已。

在精通(Proficient)水平上,解决方案开始在人的心目中“慢慢浮现”——而且通常已经完全成型。他们已经具备了在直觉中形成解决方案主要部分细节的能力,之后就可以根据自己先前的经验积累来对解决方案进行映射。一个精通的人需要对其行动的上下文有更广阔的了解,并且开始享受隐喻和格言(以及相反的类似内容)带来的乐趣。他们仍然会回头根据接受的基于规则的训练,来验证自己行为的正确性;但在这个阶段他们已经学着相信自己的判断了。

从“新手”发展到“胜任”阶段基本上是线性的过程,而到“精通”阶段代表了一个台阶的提升。一个人必须积极选择才能促成这个转变的开始。通过对某件事情重复足够的次数是可以达到“胜任”的,但要变想得“精通”,必须要有明确的心理诉求才行。

正如从“胜任”到“精通”的转变一样,转变为“专家”也是非线性的过程。要想成为某个领域的专家,可能要花费数年的努力才能达成。这些人工作时几乎完全是从直觉自发的状态,而且很少犯错误。

专家生活在模糊的世界之中。她以自己的能力为傲,而且喜欢通过与其他专家交流来校正和提高自己的技能。有趣的是,处于初级阶段的人们倾向于过高估计自己的能力,而在较高阶段的人则更加谦逊。

当世界发生碰撞之时

很不幸的是,专家无法解释他们的决策制定过程。不妨把他们想象为处于自动导航状态的飞机:由潜意识产生的、已经成型的解决方案,直接在他们面前显现。职业网球运动员就是“知道”如何回一个上旋球。职业音乐家将手中的乐器视为自己身体的一部分,而不是他们操纵的某种设备。

要知道大部分人在自己所做的大部分事情上还处于“高级初学者”或“胜任”阶段,这在职场中同样适用。这就意味着一个专家级的程序员——或者测试人员、分析师——可能有一个处于“胜任”阶段,甚至更有可能在“高级初学者”阶段的上司。(直到最近,你认识几个曾是天才程序员的项目经理?Dreyfus模型对他们同样适用。)

这些人以任务为核心进行思考,乐观一点,也是以一系列有明确顺序的任务所要达成的目标为核心。他们的思维无法接受类似“我已经有15年的应用交付经验了,我就是知道我们不应该使用ESB”这样的话。(“就是”这个词又出现了)当然,“精通”或者“专家”级别的人会接受这样的解释,实际上他们愿意首先主动去寻找专家来提供直觉自发的解决方案,并在以后坚决支持他们的决策。

最佳实践和Dreyfus模型

对Dreyfus模型有了一点点“新手”的理解之后,不妨再回顾一下“最佳实践”这个词汇。它到底是什么含义?“实践”就是我们所做的事情。它们是一些特别的行为和活动,是被规定好了的。“最佳”是一个绝对化了的限定语(与有对照的“更好”或者更为温和的“很不错”相对来说)。它与上下文无关,并且毫不含糊。用“最佳”一词就表明对于这些实践来说,不存在更好的实践。

所以根据这个定义,“最佳实践”就是一系列与上下文无关的、明确无误的、规定好的活动。在基于任务的学习中,它们就是任务。那么不同的技能水平又如何回应到这样的模型上呢?

最佳实践可以帮助初学者

“新手”需要最佳实践。没有它们,他们的工作就不能正常进行。实践为他们指明了前进的方向——越详细越好。

“高级初学者”使用最佳实践。他们在迈向“胜任”这个阶段的旅程中,会很容易越过正确与错误的边界,而最佳实践可以帮助他们看清这个边界在哪里。

处于“胜任”水平的人可以制定最佳实践。不过要注意,他们是以目标为导向的,但仍依赖于具体的执行步骤和顺序来达成这些目标。他们记得成为“高级初学者”的过程,记得犯过的所有错误,而且他们希望让以后的“新手”不要重蹈覆辙。这一点后面再详细讨论。

最佳实践会限制你最棒的人才

已臻“精通”境界的人有时会回头复查最佳实践。他们正学着相信自己的直觉,可直觉不一定总是足够的。在这个阶段,最佳实践可以起到帮助和阻碍的双重作用。如果直觉要你做一些超出条条框框的事情,你可能为了要遵守最佳实践给定的规则而止步不前,从而无法以最有效的方式达成目标。

到了最终阶段,“专家”是不会使用最佳实践的,因为他们根本不使用任何实践。实际上,专家们会为了达成目标而“颠覆”最佳实践(或者,颠覆紧密伴随着最佳实践的僵化流程)。纵使最佳实践是必须与之相伴的无可避免之弊,也不能让它束缚住手脚。

上述后两级别的相关人士,特别是专家,会很快对基于实践的做事方式表示厌恶;已经到达“胜任”级别的人,对被给予任务级别的做事细节指导也十分厌恶,而这两种厌恶完全相同。(“把红8放在那儿,黑9的下面,然后老A就可以自由移动了”。)当要求专家遵守规则的限制时,就不仅仅是坐在后面座位对司机指手画脚了,你正在对他们很少出错的本能和直觉提出质疑。

最佳实践应由中心驱动

绝大部分基于实践的流程和主张都来自处于“胜任”级别的人。虽然没有任何统计学上的证据,但是我坚信这一点。处于在“胜任”级别的人,相信他们在低水平阶段所犯的错误是源于被分配任务的描述不够严格和完整。如果我们能够提供足够好的实践,就能让大家从“新手”直接到达“胜任”阶段,而不必在“高级初学者”阶段浪费努力,徘徊不前。可是在“提供实践”这个技能上,处于“胜任”级别的人还不知道 “精通”是什么感觉(要牢记:做任何事情都是从“新手”开始的,包括对“学”的学习,以及对“教”的学习),所以他们没有充足的理由——或证据——来相信自己的直觉或本能。专家所做的任何事情,总是可以被分解为一系列可重复的实践的——这也可被成为“技能分解(de-skill)”过程,这样技能水平稍差——直接面对吧,收入也略少——人士们就可以完成同样的任务了。

我们可以有一组来自“卓越中心(Centre of Excellence)”或“最佳实践小组(Best Practice Group)”的专家,让他们制定最佳实践,并将其在整个企业中推行。

在这个上下文中,“专家”并非意味着Dreyfus模型中的专家,而是某个十分胜任其工作的人。这里有一个非常重要的区别。像IBM的深蓝计算机那样可以击败国际象棋大师的电脑不是专家。它只不过是能够飞速覆盖大量的概率搜索空间而已(深蓝计算机这个例子非常用在这里非常恰当,因为Dreyfus兄弟当初在研究人工智能时就是选定象棋作为最初的问题,而1997年深蓝击败加里?卡斯帕罗夫是计算机国际象棋研究中的一个重大里程碑事件)。从这个意义上来看,它确实非常、非常胜任!最近在神经学上的研究显示,在某个领域的专家处理问题的速度并不比常人快多少。实际上,他们处理的东西更少。在处理同一个问题时,专家的大脑活动要少于非专家。换句话说,他们会本能地削减解决方案空间,而且对于哪一部分更有可能产生结果,他们的感觉更加敏锐。(国际象棋计算机的例子反复出现,是因为Dreyfus兄弟当初在研究人工智能时就是选定象棋作为最初的问题,而且深蓝击败了加里?卡斯帕罗夫。)

最佳实践模式

实际上,当一个最佳实践在Dreyfus模型的范围内愈加适用,它就愈像一个模式了!

一个“亚历山大”模式——以建筑师克里斯托弗?亚历山大而命名——描述了一个上下文,它所应对和引入的不同的“外力”(外部因素),以及一些典型的示例。在亚历山大模型体系中,一个模式只有在与其他模式联合使用时才能发挥作用,因为只有这样才能创建交互作用力的体系,以互相平衡,产生和谐。

将此哲学应用到“最佳实践”上,可以开发出一整套互相依存、彼此合作的实践体系。新手可以像使用“烹调指南”一样用之指导自己的工作;中等级别的人可以用之实践,而专家则可以对之品评。实际上,首先提供上下文是一种非常有用的练习,对识别某个或某组特定实践的价值非常有帮助。

结语

人们不愿意冒险。一般人认为是由于畏惧使然,这没关系。对于我们应该(从理性上)害怕的东西,去评估遇到它们的可能性并努力规避,这是完全正确的。

最佳实践的目标是为新手提供指南。人们在学习时会犯错误是因为犯错误就是学习的一部分。无论看起来多么诱人,你也不可能跳过“高级初学者”的阶段,从“新手”直接达到“胜任”水平而不犯任何错误。人类的学习过程不是这个样子的。软件开发是一种技能,无论你从事的是哪一方面——作为开发人员还是测试人员,作为分析师还是项目经理——表现最出色的人明显是从本能出发进行工作的。如果他们不能解释决策的过程,这就是他们具备高级专业技能的显著标志(当然,不要把缺乏基本的沟通技能与此混为一谈!)。

要想在一个要求多种技能的组织里创建某种一致性,相对有明确分割界线的最佳实践,亚历山大模式提供了一种更加实用的策略。

实际上,最好的“最佳实践”既不是最佳的,也不是实践。

致谢

ThoughtWorks前同事Robin Gibson是第一个向我介绍Dreyfus模型的人。“实用程序员”Dave Thomas在QCon 2007上就其做了一个精彩的演讲,也将我引向了Partica Benners的书《从新手到专家》(From Novice to Expert)。这是一本让人大开眼界、令人为之一振的书,其中充满了各种趣闻轶事,而其作者是一位护理学方面的专家。?redev的组织者Michael Tiberg,好心地允许我在他的会议上进行以“最佳实践”为题的演讲,这也是本文的缘起。在会上,我与Andy Hunt进行了交流,发现他妻子似乎是将Dreyfus模型引入到软件社区的第一人!Andy目前在写一本书,Dreyfus模型是其中的重点,此外还涉及其他一些关于人们优秀的思维方式的内容。当然,还要感谢Niclas Nilsson建议我写这篇文章,而且为我提供公开发表的机会。

译注1:所谓钟形曲线又称正态曲线,它是一根两端低中间高的曲线。它首先被数学家用来描述科学观察中量度与误差两者的分布。比利时天文学家奎斯勒首先提出大多数人 的特性均趋向于正态曲线的均数或中数,越靠两极的越少,从而把正态曲线首先应用于社会领域。以后在高尔顿爵士推广下,正态曲线被借用至心理学,用来描述人 的特质量值的理论分布。PeopleSoft全球首席顾问韩斯瑞(Row Henson)女士根据钟形曲线的研究发现,若以工作绩效与能力区分,钟形曲线的中间突起部分,可以视为企业员工表现的平均值;经统计得知,企业内表现值最高的前10%的业务员,大约可为企业带来60%的营收。也就是说,位居企业内前10%的高绩效员工所创造的绩效,将高达整体员工共创绩效的60%。若企业能成功掌握这10%员工的动态,并在必要时刻从另外90%的员工中做出裁员决策,不但无损于绩效创造,更有助企业精简人事成本计划的执行。

译注2:原话为乔治?卢卡斯在《星球大战》系列影片中为尤达大师编写的一句台词:“恐惧导致愤怒。愤怒导致憎恨。憎恨导致痛苦。(Fear leads to anger. Anger leads to hate. Hate leads to suffering.)”

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号