《梦断代码》阅读笔记
第一部分:摘录
1.1 软件开发艰巨
"好的软件开发工作始于打造开发者本人。"只要是做某种取悦自己活满足自己的东西,程序员就会动力十足,努力做到最好。
侯世达定律:做事所花费的时间总是比你预期的要长,即使你的预期中考虑了侯世达定律。特别是在进行有关提高效率的讨论时(如《人月神话》和极限编程)。其自指的特征反映了即便意识到任务的复杂性,预计花费的时间仍是困难的。
一切倒塌又得以重建,再造它们的人满心欢喜——William Butler Yeats 《天青石雕》(Lapic Lazuli)
软件相对于现代技术的区别是,软件是唯一不考虑质量(测试之前)的领域
我在尽力保持耐心、不做蠢事,即使接受有东西没做完的事实。也需要了解做了什么,否则等于引火自焚。<注:可见,当时主人公有多么的无奈>
现在我们身处地狱般的境地,有那么多的好主意要拿来毙掉
用贴纸、每块只表示大致同等的工作量
产品经理与开发经理之间的拔河赛
低估了实现项目远大抱负所需的代价,组建一个工程团队要比想象中更难
个人自以为懂得很多
时间——特性——金钱:这一黄金三角之中往往只能选二,而不得不抛弃第三个
别做大项目 (linus)
<现在的软件开发并不会比之前的好过多少,基本上也是按照数据、设计模型、讨论、测试、集成这样的流程进行。做项目时的喜悦,项目发布时的痛苦,代码检查等>
1.2 软件不断创新
一次又一次,那些大度在技术工业的太阳底下不再有新鲜失误的人输个精光。
具备延迟绑定动态为例精髓的语言:20世纪50年代的 lisp,20世纪70年代的 SmallTalk
GMail 消除了浏览器在用户每次操作时与服务器进行信息交换的需要
Mozilla 奇客精英,黑洞达数年之久,失去关键程序员的支持,但最终诞生了 Firefox
为之奋斗的未来惊鸿一瞥——而那未来仍是如此令人痛苦地遥远
当萨奇回答说开发时间只有两个小时时,相片blog,基于chandler,基于现有熟悉的项目开发能加快项目的进度?
1.3 怀有改变世界之心的大神
卡普尔:很多的名誉,充足的资金,想要更多的荣誉:如果你做了另一件了不起的事情,就让世界看到你的实力。
20世纪80年代,瓦茨·汉弗里从 IBM 退休,之前在 IBM 成功执行强制进度计划后,发个宏愿:离开 IBM 后,我要改变世界的软件开发方式。因为安坐在沙滩上,实在太无聊!
程序员:获得杰出源代码,杰出软件架构,软件设计师,生命历程,获取诗歌艺术硕士学位。
软件开发者,为制作一部电影而临时组合,然后解散,再重新为拍下一部电影重新组合。
第二部分:个人感悟
以前,我并没有觉得做一个软件项目会遇到这些麻烦,道路会如此曲折,读了这几章的内容以后,通过说中讲述的,那些研究者为了软件工程的发展所做的努力使我很是敬佩,也许是我们之前接触的软件和代码都太过简单,并没有意识到这些问题,也没有那么缜密的思维,之前也没有这样详细的按时间轴了解过软件的发展史以及中间穿插的人或事,对Agenda以及Python这些词也很陌生,不了解他们是如何被提出和完善以及发展的。
现在,联想到我们,我觉得我们在做项目的时候之所以没有创新,没有提高是因为我们没有在遇到问题是努力的思考,书中所说的研究者在遇到问题都是努力钻研,在克服了一个个困难之后成功。再来就是解决问题的方法没有找到。
通过阅读这几章的内容,我觉得要想解决我们当下的难题,我们应该学习书中研究者的精神,通过整个叙事的过程,让我仿佛看到了那个年代,每一位研究者的努力,痛苦与惆怅,他们遇到的问题以及当下他们所处的环境以及在特定环境中所创造出来的产物,这段鲜活的历史使我对软件的发展又有了新的认识,从中学到了在遇到软件黑洞以及遇到困难时的解决方法,以及伟大研究者的风采,是非常值得我们学习的。现在,我知道了其实相比之下我们还有很多没有做到的,因此在今后做项目的时候要延续前辈的谨慎的研究态度,遇到问题要认真做好的良好态度。