梦断代码2
书中所说:"好的程序员懂得写什么,卓越的程序员懂得改写并复用什么,若能取之于现有,程序员绝不肯创之于本无"。我深受同感。现如今许多软件大都是在其他软件的基础上开发出来的。正如牛顿所说:"我之所以成功,是因为我站在巨人的肩膀上"。开放源代码使得程序员们能够不断创造和改进软件。开源本身,即让程序员学习和扩展代码的可能性。瑞蒙德之洞见,更多地体现于看到互联网和托瓦茨式的领导方式在让接触源代码更具有价值方面的重要性。
作者在这个项目中给我们许多关于失败的教训,启发了我们的思维,也证实了书中所言"软件难做"。从这个项目里可以反思到其他的软件项目。其中漫无边际的需求是导致失败的原因之一。所以在做软件时,必须确定软件需求,一旦确定便不能再更改。这样才能在规定的时间内交付软件。
我们觉得软件难以对付,是因为它不可见,不可见也并非唯一问题,我们也看不见电力、磁力或重力,但却能为多数实用目的可靠地预测其行为,可是我们没有理论可以用来计算对软件尺寸、性能和复杂度的限制,甚至不能以符合逻辑的手段来说明软件产品要做的事情以及它如何做到的问题。就像那个关于软件工程的笑话里说的,如果你不能把问题重现,程序员就没有办法解决问题。