跳至主要内容

科技以人为本:读《人月神话》和《人件》

 

《人月神话》和《人件》是软件项目管理领域非常有名的两本书,经常被相提并论,十有八九会在书架上一个紧挨着另一个。作为相关从业人员,我早在学生时代就听说过这两本书,但一直没读过,也许是下意识地以为它们过时了。《人月神话》出版于1975年,内容基于作者Fred Brooks六十年代在IBM开发操作系统OS/360的经验。《人件》出版于1987年, 两位作者Tom DeMarco和Timothy Lister曾多年从事软件项目咨询工作。软件行业日新月异,在我写这篇书评的当下(2024年),这两本书听上去都和恐龙化石一样古老。

那么,这两本书到底过时了没有呢?涉及具体技术的章节的确过时了,比如《人月神话》中提到大型项目纸质文档越积越厚,作者推荐使用微缩胶卷,我只在冷战间谍小说里听说过这种胶卷。再比如说《人月神话》里预测「塑料薄膜包装」的成品软件会取得成功,软件光盘在当年还是非常新鲜的东西,而今天的电脑基本上都没有光驱了。《人件》里提到「邪恶」的电子邮件,而今天更烦人的东西是即时通讯。这两本书实在太旧,即使数次修订,依然无可避免会有上世纪的年代感。

但是这两本书的核心内容并没有过时。这实在是件令人遗憾的事。我说遗憾,是因为几十年前提到的问题,在今天依旧存在,众多公司丝毫没有吸取教训。

在讨论书中具体观点之前先指出一个瑕疵。这两本书都是随笔合集,在多次再版的过程中又不断增添新内容,导致结构臃肿、内容散漫。我读完这两本书,脑海中吸收了很多独立的想法,却没有一个完整的脉络。这里无法一一探讨书中内容,只介绍几个核心观点。

所有参与过软件开发的人大概都有过为了赶进度而焦头烂额的经历。按时完成项目是个难以实现的梦想。《人月神话》指出:「缺乏合理的时间进度是造成项目滞后的最主要原因」。

软件开发是抽象的脑力活动,难以准确预估完成一项任务所需要的准确时间。编程人员作出预估时总是倾向于乐观主义,前提是一切运作良好,而出错是难以避免的。程序错误往往在最后阶段才被检测出来,导致开发所需时间是非线性的。看似工作进度接近尾声,实际上却需要更多的时间。《人月神话》里提到两个预估进度的方法:

一:从开发程序(一个人写出来的、独立使用的程序)到开发编程产品(可以被任何人运行、测试、修复和扩展的程序),工作量要翻三倍;从编程产品到编程系统产品(有规范的格式、多个程序相互协作)的工作量又要翻三倍。最终工作量翻了九倍。

二:1/3的时间用于计划,1/6的时间用来编程,1/4的时间用于构件测试和早期系统测试,1/4的时间用于系统测试(所有构件已经开发完,将系统组合起来的测试)。

以上的预估非常接近我在工作中观察到的数据。为了满足顾客期望,项目经理经常作出不合理的时间安排,导致项目异常紧迫。按我的工作经验,很少有经理会同意分出一半时间给测试。预估出一个相对短的时间,不代表能提前完成,这只是掩耳盗铃罢了。

假如一个软件开发项目,单个人需要四个月完成,那么换成两个人来做,是不是就能用两个月做完?如果进一步增加到四个人,是不是可以用一个月做完?答案是不可以。首先,有些任务是不可分解的。通俗点来讲,就像生孩子一样,不管加多少人手也不会让孩子更快生出来。其次,即使任务可以分解,人越多交流沟通的成本就越高,规划协调人力资源本身就是个困难的工作。作者甚至进一步指出,如果一个项目已经延误了,增加人员是火上浇油,只会让项目更加落后,这被称为「Brooks法则」。因为新人需要培训,耽误他人工作;工作切分给更多的人提高交流成本,更容易混乱出错。所以「用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话」。

《人月神话》中另一篇非常著名的文章是《没有银弹》。作者将软件项目比喻成人狼,一个看似简单明了的项目,可能变成一个「落后进度、超出预算、存在大量缺陷的怪物」。传说中人狼可以被银制子弹杀死,但是我们并没有一个对付软件开发的银弹,作者大胆预测:「在未来十年内,无论是在技术还是管理方法上,都看不出有任何突破性的进步,能够保证在十年内大幅度地提高软件的生产率、可靠性和简洁性。」事实证明这个预测是正确的。

作者指出软件开发的四个根本问题:复杂性,软件的复杂度导致团队人员沟通困难、可靠性难以验证、难以理解与使用、难以在不添加副作用的情况下增加新功能(引用书中另一个章节里的数字,每修复一个bug就有20%~50%的概率引入新的bug);一致性,软件要与无数接口保持一致才能正确运行,而随着时间推移,接口会发生变化(这是难以预料的,通常只是人为改变了设计),难以保证兼容性;可变性,软件功能会随着用户需求而变化、扩展;不可见性,软件是抽象的,无法可视化,设计图、流程图无法展现软件中多层次的关联。

随后作者列举了许多技术进展(在文章发表时很多是有潜力的新技术,而在今天已经是业界常规了),比如高级语言、分时多任务、面向对象编程、更好的开发环境、人工智能等等,然后说这些技术只解决了开发的次要问题,也就是具体的编程实现。毕竟就像前面提到的,实际编程只占了开发工作量的六分之一,就算可以完全用人工智能来实现,依然无法成倍提高效率。

关于银弹是否存在,业界有许多不同的意见,这里不展开详述。作者提出了两个改善软件开发的办法:第一点简单说就是不要重复造轮子,复用现有软件,在现有软件的基础上扩展新功能;第二点就是培养卓越的设计人员,提高软件行业的关键是人,这与《人件》的观点不谋而合。

《人件》开宗明义:「软件系统的主要问题更多属于社会学范畴, 而非技术范畴。」所谓社会学范畴,就是所有与人相关的问题,比如人员之间的信任、交流、协作等等。全书以此论点此为基础,讨论了诸多人员管理问题。我读的第三版《人件》有39章,内容非常杂。粗略来说可以将书中观点分成批评错误的管理方法和提倡正确的管理方法。

错误做法:

  • 只关心技术因素,忽略了人的因素。
  • 把员工当成机器上的可替换的零件。
  • 管理就是踢屁股:管理者负责全盘思考,手下照章办事。
  • 产品流程机械化、标准化,摧毁创新活力。
  • 只是做事,没时间思考工作自身。
  • 追求着装、办公室整齐划一。
  • 加班。
  • 为了赶进度而牺牲产品的质量。
  • 设定不可能完成的交付日期。
  • 拥挤、噪杂、烦扰不断的工作环境。
  • 形式主义的公司口号。
  • 官僚主义,照章办事。
  • 浪费时间的会议。
  • 忽略离职率。
  • 绩效审核,搞内部竞争。

正确做法基本就是以上做法的反面:

  • 重视个体的才能。允许和鼓励差异性。
  • 培训员工,在员工身上投资。
  • 追求质量。
  • 提供舒适、无打扰的工作环境。
  • ……等等。

将以上内容进一步概括,可以总结为三点:

第一,让员工愉快地工作。员工开心,才会有工作动力,工作效率更高,长久地留在公司。

第二,让员工有自由发挥的空间,避免官僚与形式主义。软件开发是脑力工作,有自由才有创新。

第三,无为之治。管理者的作用不是让大家工作,而是创造环境,让大家可以顺利地展开工作。最好的管理就是员工感觉不到自己在「被管理」。

以上几点,无论从事什么行业,只要是打工人都会深有感触。可惜没有几个老板会读《人件》这样的书,即使读了也未必当回事。说到底,绝大多数企业都急功近利,只是把员工当成赚钱的工具罢了。

最后总结一下。这两本书历久弥新,无愧为经典之作,在数十年后依旧值得阅读。对今天的读者来说,或许书中内容不再具有革新性,但始终能引人反思,而反思正是进步的开始。《人月神话》专业性比较强,适合有一定工作经验的软件从业人员读。《人件》主讲管理,即使不懂软件开发,也可以作为企业管理的参考书。


评论

此博客中的热门博文

罗马宫廷秘史:读罗伯特·格雷夫斯的《我,克劳狄乌斯》及其续集

  第一次听说《我,克劳狄乌斯》是因为美国现代图书公司评选的「20世纪百大英文小说」,这本书排名第十四位。文无第一,武无第二,这种排名不好太当真。不过,既然能在知名出版社众多编辑的评选中超过《到灯塔去》《心是孤独的猎手》《我弥留之际》《蝇王》《太阳照常升起》等名作而排到这么高的位置,必有其独到之处。后来我又看到乔治·R·R·马丁的推荐,他盛赞这本小说以及BBC七十年代改编的电视剧版。我起了好奇心,连着把《我,克劳狄乌斯》和续集《克劳狄乌斯神》都读完了。 克劳狄乌斯是罗马帝国第四任皇帝。这两本书假托成克劳狄乌斯的回忆录,讲述了罗马帝国第一个王朝——朱里亚·克劳狄王朝——的历史。我的历史知识不足,无法鉴别书中哪些情节是史实,哪些是虚构。不过我可以保证这是套精彩的小说。 作者最成功的策略是选取了巧妙的叙事视角。整套书都是用第一人称写的,天然地拉近了读者与书中人物的距离;再加上作者自然晓畅的文字风格,仿佛真的是克劳狄乌斯向读者娓娓道来。第一人称也有缺点,不过都被作者有技巧地避过了。第一个缺点是叙事效率低,为了纠正这一缺点,作者有时让克劳狄乌斯成了全知全能的叙事者:既然克劳狄乌斯是在晚年写回忆录,知道所有事件的前因后果也就不足为奇了。第二个缺点则是客观性差,说到叙事者自己身上的事难免感觉有些虚假,要么像是假意自谦,要么成了自吹自擂。而《我,克劳狄乌斯》的高明之处在于,克劳狄乌斯并非真正的主角,他是一个(涉身其中的)旁观者。这种一只脚在故事里,一只脚在故事外的第一人称叙事,不由得让我联想到毛姆的小说。(续集里克劳狄乌斯成了主角,导致故事趣味下降,这个后面再细说。) 如果要为《我,克劳狄乌斯》寻找一个主题,不妨说这本书「揭露了君主制的丑恶」。绝对的权力是世上最大的诱惑,这诱惑可以轻易地毁灭人性,把人变成怪物。 这本书的头号角色是克劳狄乌斯的祖母莉薇娅,她是天生的野心家,擅长阴谋诡计,无恶不做。来欣赏一下她在这场权力游戏中的赫赫战功吧!她的第一任丈夫是克劳狄乌斯的祖父,她怂恿他自立为帝,被拒绝之后就开始勾引奥古斯都。她陷害奥古斯都的妻子,成功嫁给了奥古斯都,之后又毒死自己的前夫。在一场内战之后,奥古斯都成了罗马帝国的统治者,而莉薇娅则统治着奥古斯都。为了稳固自己的政治地位,她选定自己的儿子提贝里乌斯作为下一任皇帝,为此她接连毒杀、流放了奥古斯都的子女,甚至将她自己的小儿子德...

黑暗的宇宙:读刘慈欣的《三体全集》

第一次读《三体》已经是十年前的事了。那时《三体》在科幻圈子里已经非常出名了,不过还没有进入大众视野。我读完第一本后印象一般,就没继续读下去。转眼十年过去,《三体》的影响力持续提升,俨然成为新世纪头二十年里最成功的中文通俗小说。不仅国内互联网总提到《三体》,身边的外国朋友中也不乏《三体》书迷,搞得没读完全书的我似乎成了异类。为了搞懂「黑暗森林」「降维打击」,我终于花了一个星期,把三部曲从头到尾看完了。 三体 简单来说,三体系列讲的是地球与外星之间的星际战争。这题材算得上复古,《三体》的内容与风格都让人联想到上世纪四五十年代的经典科幻小说。 书中的外星人来自太阳系四光年之外的三体世界,这里有三个「太阳」。三个天体在万有引力作用下的运动规律是著名的三体问题,也正是这套书标题的由来。现在已知三体问题是无法精确求解的,三个太阳的运行轨迹没有规律,这给三体人所在的行星造成极其严酷的生存环境。过于靠近或过于远离太阳都是致命的,三体文明被毁灭了无数次,还有彻底坠入太阳的潜在危险。小说中借由电子游戏的形式,模拟了三体文明反复诞生与毁灭的过程。虽然听上去很复杂,其实不过是在说:外星人处于水深火热中,有强烈的移民外星的意愿。把三体问题换成其它危机,比如太阳衰败,这个故事同样成立。直到有一天,三体星接收到了地球发来的信号,发现地球是宜居星球,决定侵略地球。 考虑到三体人处于生死存亡之际,而且拥有远超地球文明的太空科技,我很奇怪为什么他们不主动寻找移民星球,而是被动地监听信号。能不能收到外星信号纯属偶然,而且按照书中的宇宙观,这信号很可能具有欺骗性,回复信号要冒非常大的风险。太阳系是距离三体世界最近的恒星系统,没理由不主动勘测。对比一下,离太阳系最近的半人马座阿尔发星,也就是小说中三体世界的原型,已经在科幻作品中被觊觎无数次了,三体人没理由从未关心过自己的邻居。 以三体人的科技水平,需要450年才能抵达地球。经过漫长的450年,没准到时候地球科技已经超过三体人了。为了解决这一问题,三体人制造了「智子」来封锁地球科技发展。 智子是小说第一部中最重要、也是最精彩的科幻设定,也为后来两部埋下伏笔。智子是一颗高维空间的质子,在二维空间展开后雕刻成智能计算机。按照书中的说法,从高维降到低维会「变大」(不妨想象一瓶墨水,变成二维——涂在纸上——会拥有庞大的面积)。一颗质子从九维降到二维,其面积足以包覆整...

豆瓣阅读:理想很丰满,现实很骨感

  写作网站中的清流 在青春年少、懵懂无知的时候,我怀揣着纯真的文学梦想,打算为自己的文字寻找一个理想的归宿。不矫情了,简单说来就是攒了几篇伤春悲秋的文章,想要找个地方发文。身为计算机专业人士,第一反应当然是搭建个人网站。不过博客早就退流行了,连大公司的博客平台都撑不下去,个人网站更没有流量,所以我还是想要发到大网站去。大陆热门的写作网站主要分成两类: 一是起点、晋江这类网络小说网站,主流题材是修仙、穿越,要把读者当大爷伺候,爆肝日更才有人气,停更还要跟读者写请假条; 二是微信公众号、今日头条这类自媒体平台,热门文章基本都是「震惊!XX居然是XX!?」「你不知道的十大XX!!」「十个看完,九个都哭了的XXX」。 不用想也知道我与这些网站水土不服。正当我灰心丧气的时候,突然发现了豆瓣阅读,立马眼前一亮! 豆瓣阅读是一个电子阅读平台,作者可以出版自己的原创电子书。不要担心不懂电子书制作,作者只要投稿就好,网站有专门的编辑负责审稿,还有美工帮忙做封面。作者还可以开专栏,付费订阅制,连载完结后可以直接作为电子书出版。 豆瓣阅读一开始主要推广两三万字的中篇小说,包括幻想、悬疑、文艺、历史等类型,同时也有不少散文专栏。豆瓣阅读定期举办征文大赛,不仅有奖金拿,还有机会出版纸质书和售卖影视版权。 要知道,大陆盗版非常猖獗,读者根本没有电子阅读付费的习惯。豆瓣阅读逆潮流而行,我相信他们一开始时是真心想要开拓市场,挖掘作者。在浮躁的大环境下,当年的豆瓣阅读真算的上是一股清流了。 我当机立断开了专栏,感觉自己就要出书成名了,想想还有些小兴奋呢! 埋葬文字的坟墓 可惜好景不长,我很快就发现了问题:咦?我的专栏怎么没人看? 何止我的专栏没人看,是整个网站都没几个读者啊!豆瓣阅读是一个典型的作者比读者多的网站。现在打开豆瓣阅读首页,还用大字标着「XX位作者正在豆瓣阅读写作」。当年好像两三万人,现在作者已经超过十二万了。请问,这么多人都忙着写作,做着赚钱成名的美梦,读者又在哪里? 表面上看,豆瓣阅读背靠着豆瓣这座大山,应该不愁没用户。然而豆瓣用户群体是割裂开的,记录书影音的,混豆瓣小组的,在豆瓣阅读码字的,根本不是同一群人。而且豆瓣不知脑子搭错了哪根筋,好像还嫌用户不够分裂,连APP都分成了好几个。 总而言之,豆瓣阅读超级冷清,连首页热推的作品都没几个人看。在豆瓣阅读出电子书,只有在新书...