现在已经读完这本书的大部分了,说一下我对最后这些内容的理解:
第七章《细节视图》,在这一章里,我看到了Chandler项目对细节视图的追求。这一章开始部分提到,项目小有进展,发布了新版本,尽管其中都还没法用,只是满足可能对卡普尔及其团队进度好奇的外部软件开发者们的兴趣,但OSAF内部的氛围却完全不同。当长期一筹莫展的项目有所突破时对于整个团队都是振奋人心的。同时我们看到了细节视图对于软件项目的重要性,平时我们觉得只要代码写好就可以了,其实真正交付用户的软件在视图上要求也很严格。
第八章《白板上的即时贴》,在软件开发编写代码的时候,当你把系统的一块新部件放进去,总要看看之后的5年获10年自己会不会后悔--你是否能拓展它、替代它。总是按照计划执行远没有保持较快进度并清楚做到哪一步来的重要。如果总是往计划里掺水,从而达到目标,就会变成退而求其次,完成的特性更少。白板上的即时贴不仅能够列出软件开发过程中的问题,还同时大概的规划了软件开发的流程,使得程序员们在开发的过程中不至于偏离正轨或者盲目,加上每天的站立会议,我想这样软件发布的时间就会大大的缩短。磨刀不负砍柴工,有了一个好的开始,有了一个好的计划会给整个软件开发带来很多好处。做事要讲究方式方法,好的方法会事半功倍。软件不会像制造水管制造汽车一样,有固定的不改动的规格,甚至永远都不需要改动,但是每一个软件都有各自的不同之处,不能照搬照抄。“开发软件仍属难已有事。自我起步于今20年,但它丝毫没有变容易--你可以多下力气,但本质上都会遇到同样的协调问题。那就是我们存身的宇宙,所以得进行适当的调整--把食物切成小块,细嚼慢咽消化掉,然后再吃下一口。”书中这样写道,是啊,做软件难,做一个好的软件更难,但是既然我们选择了做软件,即使在难做我也会坚持下去,慢慢的来,慢慢的做,坚持下去就会成功。
第九章《方法》,结构化编程的主要规则是让程序的每一层都该自成一体,在此后的几十年里不断推动创新的产生。这样对于出错处理和代码复用都带来了好处。除非开发者为个人工作制定计划并遵循之,否则工作将不可预料,项目就会无法控制、不可管理。所以制定计划很重要,但坚持更重要。我们都为组织工作;组织需要计划;除非你的工作足够独立,否则必须按照进度工作;如果你不自己做进度安排,别人就会给你做安排;这样别人就会控制你的工作。这或许是我们今后走入社会工作需要参考的几点吧。质量不该是一种后悔药,而应体现在生产过程的每一个阶段上。缺陷总是存在的。我们应正确合理的看待它。成功往往是铁一般纪律的副产品——一种坚决做出又在每一次遇到挑战时大声重申的选择,限制着项目的范围。
第十章《工程师和艺术家》,第十一章《通往狗食饭之路》,从中我领悟到了一些道理:拿到一个大问题,将其切分成为可个别理解和解决的小问题。并无魔法。只是得巨细靡遗。复杂的问题,大的工程往往不是一蹴而就的,我们要有耐心一步步一点点的去解决它。时间总会比想象中用的多,即便你考虑到侯世达法则亦然。我们或许以后要考虑到这一点。不要瞎猜下一步该怎么走,倾听来自真实用户的建议和抱怨。这些真实用户是在千里之外还是就在眼前并不重要,重要的是拿到实践反馈。我们要凭借用户为自己指引方向。软件之本质困难,仍是强加于技术进步的人类自由意志和不确定性的通行费。这值得我们深思。错误属于人类,计算机不会犯错。我们应尽量去避免错误。为了做软件付出的每份努力都最终注定是不够的,这种思路中有着某种自由度。它意味着总有进一步努力的空间,新一代总会来啃咬难题,某地总有某人欢迎“另一个”程序。我们应该意识到这一点,尽自己努力就好。