我在这里重申:软件是一种知识产权。你必须运用智慧才能开发出软件。你在工作中调动的智慧越多,你最终得到的知识产权的价值就越高。很明显,人们必须不断思索。曾经有人问我:“你认为在软件开发中最困难的事情是什么?”

enter image description here

  我毫不犹豫地回答:“让人们思考。”

  信不信由你,大多数人都不愿意思考。他们认为自己愿意思考,但事实恰恰相反。人们很容易不假思索并贸然给别人戴上傻瓜的帽子(我们微软是这样说的):“那家伙是个傻瓜!”永远没人会在意傻瓜的所作所为。即使他做出了贡献,人们也会认为他只是个累赘、傻瓜。

  当然,你不能将任何工作托付给傻瓜来完成。你对傻瓜的最大期望,就是他不会造成任何破坏,不会使工作变得一团糟。至少可以说,这是你的团队成员的最低期望。

  或者你自己可能就是傻瓜。你是不是觉得搞不清工作的内容,感到缺乏能力,这时你也成为了累赘。

  我们微软无法接受这种情况。我们需要大家主动投入——每个人都出一份力。每一名团队成员都能够说出如何缩短产品上市时间、产品什么时候推出新版本。每个人心里都要有清晰的概念。你必须让团队所有成员积极思考。

  判断一个人是否在思考,最简单的方法,是看他是否注意倾听他人的观点和批评意见。认真思考的人听到了可能比自己更好的想法时,会克制住争强好胜的念头。他们会要求自己以谨慎的态度,公平正确地评估新得到的、可能很有价值的信息。他们能够听出哪些话不够客观,是对方自我意识太强的反映,因为他们完全理解了人性的本质,并运用这种理解对原始信息进行提炼。

  善于思考的人能够以最纯粹的方式评估收到的全部信息。因此,他们能够避免以下两种现象。

  第一种现象称为防范心理,往往是因为信息接受方误解了批评意见造成的。创造知识产权的过程需要大量的情感和创造性投入。在创作者看来,对产品及其创建过程提出批评或更好的想法,似乎都是对他本人的批评。如果接受方完全沉浸在思考之中,那么就不会存在防范心理。因为经过反复思考,他将会对信息进行“净化”,过滤掉其中的自我威胁和主观因素。不过,能这样做的人并不多见。

  

  不要认为别人是笨蛋

  对于善意的忠告,懒于思考的人不是想听更多信息以深入思考别人的意见,而是从一开始就设立层层防卫。这难免会造成正面的冲突,开始猛烈反驳他人的意见,因而无法准确评估收到的信息。如果一方锲而不舍地向另一方提出忠告或批评,接受方就面临一个进退两难的境地:要么认为忠告和批评确实具有价值(但已经被断然拒绝),要么认为对方是一个将自己观念强加于他人的傻瓜。往往会给提出善意忠告的一方戴上傻瓜的帽子。

  第二种现象比第一种现象更为常见,即互相排斥。自己提出的忠告被对方因为恐惧或其他心病再三拒绝,于是也同样会认为拒绝接受自己好意的一方是傻瓜。

  认为他人是傻瓜会造成严重的后果,代价高昂,有伤感情,但你会不由自主地这样做,特别是当你遭到断然拒绝的时候。而且,如果上级认为某个人是傻瓜,那么他的下属亦步亦趋,也同样会这么想。

  当然,要解决这个问题,你必须进行深入思考,分析他人提供的信息中有哪些积极因素,并虚心接受建议。如果接受方难以接受你的建议,想办法让他容易接受。至少,向他说明你的感受,并指出他的拒绝让你很沮丧。相反,如果有人不断向你提出“恶意”反馈或“糟糕”的建议,那么你需要自我反省,确保本能的防卫心理不会影响你做出准确判断。如果你将这种做法作为团队的行为准则,那么,一旦有人犯错,其他团队成员会立即指出这种错误,并因此形成一种良好的沟通氛围。

  死亡行军

  在任何软件项目开始之初,开发团队往往还在做前一个项目的收尾工作。如果这是一个特别漫长而且困难的项目(几乎所有软件项目都是如此),那么,这段结束期被人们贴切地称做“死亡行军”。

  如果前一个项目的收尾工作拖得太久(比方说,先前已经延迟了几次,又出人意料地拖延数月),如果管理层的沉默和容忍已经到了极限,如果客户对于产品未能履行承诺而大发雷霆,如果媒体(或你的同事)也在暗中嘲讽,那么,令人愉快的项目收尾工作可能会演变为一次“死亡行军”。即使一切工作均已顺利如期完成(“如期”是一个关键概念),如此漫长的项目也会让团队成员感到筋疲力尽,身心都需要休息。他们构想中的优良设计在他们自己手中到头来业已降格为一款平庸的产品。在整个项目开发过程中,他们一直在做不得已的让步。他们清楚,为了如期交付产品,产品中存在着多少漏洞,代码是多么地差劲,又存在有多少无人能懂的糟糕代码。他们担心产品根本无法正常运行。在整个过程中,不断的妥协让他们放弃了对技术的完美追求。虽然他们并不为此感到自豪,但对于能够如期交付产品,他们却觉得宽慰。尽管面临严峻的挑战,但他们依然坚持到了最后。在一个工作分配均衡的项目中,每一名团队成员所做的个人牺牲都是一种英雄行为,都是成功交付产品的关键因素。事实也确实如此。每个人付出的巨大努力都非常重要,不可或缺。

  现在他们想要休息、得到回报、进行休整、参加培训、做点研究,并在最喜爱的计算机上玩点儿轻松的事情。

  但是,需要注意的是,他们已经历尽千辛万苦,勉勉强强地完成了上一个项目,整个团队已经把结束上一个项目看做是最终的目标,最后的胜利及终结。这种专注与决心是如期交付前一个项目的关键。要想如期交付软件,整个团队必须全力投入这个唯一的目标。但现实情况是,一波未平,一浪又起,另一个项目又接踵而至,这会导致各种不良反应。此刻,软件开发人员表现出的最常见反应(身心俱疲)将成为最大的危险。


身心俱疲

  开发人员觉得身心俱疲对于软件领域的影响,就如同巴拿马运河的建筑工人患上疟疾一般可怕。在身心俱疲时,你不愿再接受任何工作。你会感到疲劳和沮丧,提到软件开发就头疼。其症状包括以下几点。

  软件产品让人恶心,这种感受挥之不去。

  认为管理层毫无计划,无可救药。

  一想到下一个版本就觉得不舒服。

  对于任何解决问题的尝试都有一种愤世嫉俗的悲观。

  完全听不进别人的忠告,挂在嘴边的话就是“那家伙是个傻瓜”。

  对计算机失去了兴趣。

  这时,你懒得去翻看PC Week和Infoworld等技术刊物(Dr. Dobb’s和Midnight Engineering也不例外),也觉得科幻小说无聊至极。虚拟现实游戏也开始变得像人工智能一样无聊。对于新版本的MFC更是置之不理。甚至最新型号的计算机也无法引起你的兴趣。

  遇到这种情况,团队主管(他们自己也可能会感到身心俱疲)应立即采取防范措施,因为虽然这种情绪的传染性并不强,但如果条件适宜,它也会在几星期或几个月内影响到团队中的大部分成员。开发人员身心俱疲造成的基本问题是,对于开发出伟大软件至关重要的工作激情已经消失殆尽,他们失去了前进的方向,甚至完全丧失工作动力。

  工作激情在软件开发中的作用不容忽视。对一些人而言,计算机是他们自我表达和自我发现的工具。计算机对于他们就像是钢笔对于诗人、调色板对于

  画家、编译器对于软件开发人员一样重要。一旦这种激情耗尽,他们就再也没有兴趣开发那些看不见但却彼此关联且动态变化的“比特流”了。

  我在此调侃陷入身心俱疲状态的开发人员,因为和所有软件开发人员一样,我害怕进入这种状态。身心俱疲对于开发人员意味着艺术感的终结,是一种误入歧途,一种萎缩,一种退化。