梦幻一场——关于《梦断代码》

前两天与同学交流时,同学让我谈谈软件开发与测试的区别,我说撇开技术和工作细节不谈(除了时常辅助地写些Unit Test外,实在对测试不甚了解),二者对待同一问题的心态上本该不同——测试人员大抵悲观而怀疑,开发人员往往乐观而执着。作出这样的推断,一方面作为一名开发者,我既品尝过编写代码的巨大乐趣(源自创造和控制的本能自豪与成就),也都经历过面对蜂拥而至的缺陷与复杂决策的困惑,因此窃以为若非迫于生计,一个没有万丈雄心与执着信念的人很难把编程作为一项长久事业的。反观一个出色的测试者,他必然疑心重重,极力对项目作出种种悲观预期并证明之,也往往只有这样才能挖出隐藏在程序深处的缺陷。
   当然,这里无意深入探讨开发与测试的异同,感兴趣的话dreamhead最近恰好有篇blog(http://dreamhead.blogbus.com/logs/24621087.html) 对此做了引申。然而无论认可与否,开发与测试种种看似矛盾的观念恰恰为软件项目的复杂与艰辛做了很好的诠释。在项目漫长而未知的周期中,总是充满太多的偶然与选择,站在不同维度的思考与权衡也很容易推出截然相反的判断,最终除了依赖时间的检验,在决策之初,无论是局内人还是旁观者都很难总揽全局、明辨是非。《梦断代码》就是这样一部记述了OSAF团队(http://chandlerproject.org/Projects/OSAFPeople) 心路历程与IT行业兴衰史的奇书。作者Scott Rosenberg凭借自己对OSAF团队那个野心勃勃曾立志超越Outlook的项目Chandler的三年潜心追随,与作为业内久负盛名的技术编辑对 IT行业数十年的洞察与积淀,用优美的文本及独到的视角向我们揭示了做软件为什么会那么难。
   Chandler的产生始于一个简单而美好的愿景——让人们能随心所欲地切合数据,更灵活友善地管理纷繁而琐碎的个人信息。然而诚如译者后记,众多程序员以心血养育它,惜乎全不见成效,六年半时间,上百万美元,几十号顶尖高手,换来梦幻一场,时至今日Chandler仍无定型......
   厌倦长叹,造化弄人!即便如OSAF团队这般衣食无忧、高手云集,在实现其“改变世界的梦想”时仍然受到现实的无情嘲弄,作为新来者,我们凭什么会认为自己与众不同?最让人难以接受的是OSAF团队从始至终一直在努力着,你很难断言究竟是什么过失使项目深陷其中,一切的发生既自然又出乎意外——就像一辆平稳行驶的火车,虽不曾出轨,但从上路的那一刻就已然驶上了一条不归路。资源不够?Mitchell Kapor可不是自私小气的人,6年半时间数百万美元的投资无不显示了其耐心。能力不足?能加入OSAF的队员就算不是功成名就的大师,在业内也算早已扬威立万的高手,何况开发Chandler项目的过程中他们还创建了诸如CVS,pyLucene等一批优秀的开源框架或工具,证明了自己的价值。决策错误?也许您会说Chandler不应该使用python,与其构建基于vxPython的桌面应用还不如构建基于浏览器的应用。但是OSAF团队的每项重要技术决策都是业内专家经过深思熟虑后的选择,当时谁又能料知数年后Ajax技术的风行会带动Web应用的普及?同样的关于项目延误、偏差的设问还能提出许多,但是每一项都没有足够的证据证明其是失败的根源,甚至有些因素在某种情形下对推进项目进展还起了积极作用。
   这真是一种莫大的讽刺——在软件项目中,程序员与管理者都力求以一种理性的方式精确、缜密地安排任务并估量进度,然而现实中本就不存在这种凭空的假设,任何计划都会被意外变化无情地打乱,最后整个项目沦为令人沮丧的一拖再拖,不可收拾。所以对于软件项目而言,没有绝对正确的规范或一成不变的流程,有的只是失败的教训与从中汲取的经验。在我看来,一个成功的管理者一定是经验丰富的(反之不成立),因为他切身经历了众多不同类型亡羊补牢的改进过程,对相似项目的把握至少在方向上不会轻易地重蹈覆辙。
   谈这些,主要源自我在大学时也曾组建并带领过学生开发团队,其间可以说既取得了出人意料的成功又经历了刻骨铭心的失败,就连毕设论文也专门针对软件工程专业四年的学习与团队管理方面的东西进行了反思,虽然多数观点不很被老师们认可,但至少个人以为这样的反思算得上对自己过去经历总结与理念的提升,比较有意义。《梦断代码》这本书是在4月份构思论文时从韩磊老师博客中获悉的,韩老师的翻译没有辜负我几个月的期盼,当然也不得不佩服作者Scott的巧妙构思与妙笔生花,在此一并感谢并极力推荐。

此书评来源于 豆瓣网

梦幻一场——关于《梦断代码》相关推荐

  1. 现代软件工程系列 学生读后感 梦断代码 SpringGreen

    "拿来的代码所不能做到的部分,恰是项目与众不同的创新之处". <梦断代码> 终于看完了<梦段代码>.      其实整本书就是讲图灵机的不可判定性----软 ...

  2. 《梦断代码Dreaming In Code》阅读笔记(三)

    最后这几章感觉上更多是从软件完成整体上来讲的.比如说技术.方法等. 在我看来,其实一个团队一直坚持一种好的.先进的方法是不可少的.如果一个优秀的团队刚愎自用,只随着成员们喜好发展,那不能长久.比如说, ...

  3. 读梦断代码有感(1)2019.2.05

    今天阅读了建民老师推荐的我们软件工程方面的书籍被称为经典的<梦断代码>,虽然只是读了一小部分但还是感受颇深,在我以往的经验看来,我们软件工程专业的书籍应该都是枯燥乏味的代码啊啥的,所以开始 ...

  4. 梦断代码阅读笔记之一

    最近阅读了罗森伯格的<梦断代码>,算是近距离观察了十几年前软件开发的状态.这本书是作者对OSAF主持的Chandler项目进行田野调查  而写的一本书.本书是在讲一事,也是在讲百千事:是写 ...

  5. 《梦断代码Dreaming In Code》阅读计划

    书籍是人类宝贵的精神财富,读书是人们重要的学习方式,是人生奋斗的航灯,是文化传承的通道,是人类进步的阶梯.学生作为学习人群的主体,必须把读书作为头等大事.学校就是一个学生在教师指导下自主读书的空间,而 ...

  6. 《梦断代码》阅读笔记01

    这几天阅读了老师推荐的<梦断代码>前几章,通过本书简介可以知道本书大概主要讲的是做软件过程中的困难. 第一章软件时间,主要讲的是从事软件制作行业的艰辛,需要没日没夜的加班工作,书中有这样一 ...

  7. 《梦断代码》读书笔记

    梦断代码,英文名是DREAM IN DODE.梦断代码,原作是美国的Scott Rosenberg,经韩磊翻译而来. 为什么选择读这本书?在图书馆软件工程处翻阅时,被这本书的名字吸引住了,同时之前也听 ...

  8. 《梦断代码》阅读笔记之第8章至最后

    以下是我读了梦断代码第八章之后的读书笔记: 1.自己做的软件自己一定要用,即"吃你自己的狗食",自己的软件开发出来后自己都不会用那么还要指望别人用不成? 2.在软件开发编写代码的时 ...

  9. 《梦断代码》读后感 - 驱动,责任,交流,远虑

    这三篇读后感原来发布在我自己申请的域名 yishan.cc 上面,后来这个域名被墙了.   (原文写于2008年12月) 几个星期前,我给<现代软件工程>课的每一个团队都发了一本 < ...

  10. 现代软件工程系列 学生读后感 梦断代码 软件难做

    http://cid-064ec84e17924332.spaces.live.com/blog/cns!64EC84E17924332!173.entry December 06 读<梦断代码 ...

最新文章

  1. 外文翻译 《How we decide》赛场上的四分卫
  2. Fabric--CA 应用与配置
  3. poj 2749 2-SAT问题
  4. 微信小程序开发系列四:微信小程序之控制器的初始化逻辑
  5. 【C++】【一日一练】读写文件小实例【20140510】
  6. python 第一课作用
  7. 凸优化第六章逼近与拟合 6.1 范数逼近
  8. 尚学堂马士兵struts2 课堂笔记(四)
  9. epub与mobi转换工具
  10. ArcGIS Server 服务启动停止解决方法
  11. 翁恺老师c语言课程笔记
  12. STL — 迭代器设计思维(二)
  13. django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方案
  14. 微信小程序 如何获取时间
  15. 芯科发布EFR32BG22芯片,强劲性能对比TI芯片CC2640R2F和CC2640R2L
  16. LDO(低压差线性稳压器)选型小结
  17. 二十四节气-立冬文案、海报。万物收藏,冬之伊始。
  18. 关于在ubuntu下解压文件到指定文件下时出现Exiting with failure status due to previous errors的错误
  19. 年仅19岁!西班牙最危险黑客被捕
  20. Adobe Audition频谱分析应用

热门文章

  1. Oracle client 使用 .net程序连接 数据库时 出现 8.1.7 的解决办法
  2. 非root用户安装java版本
  3. 窗口及元素尺寸大小位置获取方法记录
  4. Linux下计算进程的CPU占用和内存占用的编程方法[转]
  5. CentOS6.4将MySQL5.1升级至5.5.36
  6. php四种基础算法:冒泡,选择,插入和快速排序法PHP基础教程
  7. CSS属性:display详解
  8. C#课外实践——校园二手平台(心得篇)
  9. cellmap 基站查询 for android
  10. 项目铺垫系列导航目录