当前位置: 首页 > news >正文

《人月神话》的故事版《观止》

《人月神话》的故事版《观止》

版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://yaoyong33.blogbus.com/logs/47010239.html

在这里要推荐下《观止-微软创建NT和未来的夺命狂奔》,非常精彩,讲述了windows NT开发过程中的人和事。这不仅仅是故事书,也可以看做一本项目管理方面的指南,可以看看这么巨大的项目(几百万行代码)所遭遇到的难题和痛楚。我更愿意 将这本书当做《人月神话》的故事版,同样是创建划时代的OS,同样是管理众多人参与的大型的项目,也同样遭遇了种种困扰和痛苦,从这个角度也可以看出,人 类的痛苦的相通的:)
  
   单纯从软件构建的角度去看这本书,可以说说我看到的东西,这些是我今天早上走在上班路上的时候想的,咳咳。
  
   1、开发OS是烧钱的事情,NT开发接近5年,每年的花费据说在5000万美刀,那可是在90年代初期,换算成现在更是天文数字。从另一个侧面也说明了 linux系统的伟大。开发一个这么烧钱的玩意,如果没有管理层的强力支持,那么不是被砍掉,就是遭遇流产的命运,幸运的是NT团队得到了盖茨的鼎力支 持,大概也只有他能这么烧钱了。Dave Culter从DEC辞职的原因也是因为管理层砍掉了他的团队。盖茨另一个做法是不干涉NT团队的开发工作,他只提出目标和期望,然后就偶尔过来看看,不 对不知道的东西指手画脚,这点可不容易。
  
  2、每日构建非常重要,NT团队的构建实验室一开始是每周构建,后来做到了每日构建。只有每日构建,持续集成,才能帮你掌控产品质量,及时发现潜在的问题。我们现在的项目使用了hudson,比CC容易配置一点,效果还不错。
  
   3、测试极其重要,专业的测试团队对于大型项目来说尤其重要。除了测试人员之外,开发人员需要做自测,需要对自己check-in的代码负责,如果你签 入的代码导致构建失败,那么Dave culter可能冲破墙壁进来,拍着桌子冲你咆哮。对check in必须做严格控制和跟踪,如果在项目的最后冲击阶段,除了showstopper级别的修正代码允许签入之外,其他的修改都不被接受。开发者和测试人员 很容易存在对立,检讨自己,我对测试人员也存在偏见和某种程度上的轻视和厌烦,如果从就事论事和都是为一个目标努力的角度来说,测试和开发并不对立,两者 是相辅相成,甚至于测试人员更为至关重要。
  
  4、在一个长期而复杂的项目中,如何保持团队成员的士气也是个难事儿。软件开发 归根到底是的因素是人,而非工具或者其他,关注人,其实就是在关注你的软件。鼓励士气的常见做法就是设定里程碑,在这个里程碑上发布一个重要版本,让大家 看到希望,但是对于OS这样的巨型项目来说,里程碑不是那么容易设定,这从书中项目的不断延期可以看到。另外就是宽松的工作环境和假期,微软的工作环境有 目共睹,能做到每个员工独立一个办公室的国内企业还没有吧。国外的开发者似乎很会玩,赛车、滑雪、空手道,其实不是我们不会玩,是我们玩不起,国内的待遇 和生活压力让你想玩也玩不起。
   可是就算是再好的物质待遇,其实也换不来美好生活,书中充斥着开发者对家庭和婚姻的困惑和痛苦,为了NT,他们也失去了很多,对工作过度投入的后果就是失去平衡的家庭生活,再次验证上帝是公平的,有得必有失,就看你看重的是什么。
  
  5、开发者的效率差异是惊人的,在《人月神话》里已经说明了这一点,开发者之间的效率差异可以达到惊人的10倍,在NT这样的团队里也再次验证了这一结论。
  
  6、投入越多的人力,并不能带来效率的提升,当NTFS文件系统的进度拖慢的时候,微软的经理们考虑添加人手,但是经过慎重的考虑还是没有加人,因为文件系统是技术活,新人很难马上投入开发,而需要老手的带领和培训,引入了更多的沟通成本和培训成本。
  
  7、优秀的代码无法通过行数来衡量,软件某种程度上还真是魔法的产物。
  
  8、NT的一个教训是,应该及早设定你的性能目标,并在适当时候开始关注并优化系统。NT团队后期的很大部分工作都是在优化系统性能,并缩小尺寸。
  
  9、设定Deadline常常是不靠谱的事情,对软件开发的时间估计也常常是不靠谱的事情,这一点从NT的一次又一次的延期可以看出。延期失望的不仅仅是客户,也会打击你的团队成员,遥遥无期的开发过程容易让人崩溃。
  
  10、NT的开发贯穿了对市场的需求的考虑,有个牛X的产品经理还是相当重要的。当然,没有开发者喜欢添加新功能,特别是在已经完成一个新功能的情况下,以至发展到NT的开发者看到产品经理就不由得拿起球棒击墙的地步:)
  
   这本书花了我两个晚上看完,还是看故事有趣呀,上面所说只是我的印象,书中还有许多八卦故事老少咸宜,如果有出入,请看原著:) 有空还得重读下

相关文章:

  • 国内首本Windows 7图书与Windows 7 同步发行
  • 《新京报》版面推荐《正在爆发的互联网革命》一书
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 活动预告:终结互联网“偷菜”狂潮
  • 2009中国互联网大会圆满落幕
  • 《正在爆发的互联网革命》北京西单图书大厦签售活动圆满结束
  • 《玩转Windows 7 》销售节节攀高
  • 华为研发的秘密
  • 全球24位顶尖架构师之作《架构之美》
  • 《WCF编程,第2版》
  • 国内顶尖风光摄影家集锦(作品集+拍摄技巧)
  • 老赵书托(1)-SCIP
  • 《架构之美》已经上市啦~
  • 《玩转Windows 7》
  • Ext JS高级程序设计(国内第一本基于Ext 3.x的经典著作)
  • 【笔记】你不知道的JS读书笔记——Promise
  • 07.Android之多媒体问题
  • Git学习与使用心得(1)—— 初始化
  • JavaScript函数式编程(一)
  • Laravel 实践之路: 数据库迁移与数据填充
  • oschina
  • Shadow DOM 内部构造及如何构建独立组件
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 简单数学运算程序(不定期更新)
  • 开发基于以太坊智能合约的DApp
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 每天10道Java面试题,跟我走,offer有!
  • 山寨一个 Promise
  • 深入浅出webpack学习(1)--核心概念
  • 异常机制详解
  • PostgreSQL之连接数修改
  • 从如何停掉 Promise 链说起
  • 数据库巡检项
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • !!java web学习笔记(一到五)
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #考研#计算机文化知识1(局域网及网络互联)
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (一)RocketMQ初步认识
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)关于多人操作数据的处理策略
  • .aanva
  • .NET Core引入性能分析引导优化
  • .NET 动态调用WebService + WSE + UsernameToken
  • .Net 访问电子邮箱-LumiSoft.Net,好用