跳至主要内容

博文

目前显示的是 九月, 2024的博文

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

  《人月神话》和《人件》是软件项目管理领域非常有名的两本书,经常被相提并论,十有八九会在书架上一个紧挨着另一个。作为相关从业人员,我早在学生时代就听说过这两本书,但一直没读过,也许是下意识地以为它们过时了。《人月神话》出版于1975年,内容基于作者Fred Brooks六十年代在IBM开发操作系统OS/360的经验。《人件》出版于1987年, 两位作者Tom DeMarco和Timothy Lister曾多年从事软件项目咨询工作。软件行业日新月异,在我写这篇书评的当下(2024年),这两本书听上去都和恐龙化石一样古老。 那么,这两本书到底过时了没有呢?涉及具体技术的章节的确过时了,比如《人月神话》中提到大型项目纸质文档越积越厚,作者推荐使用微缩胶卷,我只在冷战间谍小说里听说过这种胶卷。再比如说《人月神话》里预测「塑料薄膜包装」的成品软件会取得成功,软件光盘在当年还是非常新鲜的东西,而今天的电脑基本上都没有光驱了。《人件》里提到「邪恶」的电子邮件,而今天更烦人的东西是即时通讯。这两本书实在太旧,即使数次修订,依然无可避免会有上世纪的年代感。 但是这两本书的核心内容并没有过时。这实在是件令人遗憾的事。我说遗憾,是因为几十年前提到的问题,在今天依旧存在,众多公司丝毫没有吸取教训。 在讨论书中具体观点之前先指出一个瑕疵。这两本书都是随笔合集,在多次再版的过程中又不断增添新内容,导致结构臃肿、内容散漫。我读完这两本书,脑海中吸收了很多独立的想法,却没有一个完整的脉络。这里无法一一探讨书中内容,只介绍几个核心观点。 所有参与过软件开发的人大概都有过为了赶进度而焦头烂额的经历。按时完成项目是个难以实现的梦想。《人月神话》指出:「缺乏合理的时间进度是造成项目滞后的最主要原因」。 软件开发是抽象的脑力活动,难以准确预估完成一项任务所需要的准确时间。编程人员作出预估时总是倾向于乐观主义,前提是一切运作良好,而出错是难以避免的。程序错误往往在最后阶段才被检测出来,导致开发所需时间是非线性的。看似工作进度接近尾声,实际上却需要更多的时间。《人月神话》里提到两个预估进度的方法: 一:从开发程序(一个人写出来的、独立使用的程序)到开发编程产品(可以被任何人运行、测试、修复和扩展的程序),工作量要翻三倍;从编程产品到编程系统产品(有规范的格式、多个程序相互协作)的工作量又要翻三倍。最终工作量翻