读了第二章到第七章之后,总结几点如下:
1.“没有所谓典型的软件项目,”安迪·赫兹菲尔喜欢这样说,“每个项目都有其不同之处”。我们开发软件的时候没有固定的模板,每一个项目的核心都会不同,软件开发就像是造物主创造的生命一样,没有那一条生命是一摸一样的,即使是一个眸子刻出来的也有不同之处。更别说面对客户的各种各样的需求了。
2.那么面对客户五花八门的需求时候,程序员的应对方案就有所不同了,当然每个程序员的能力也不一样,好的程序员懂得写什么,而卓越的程序员知道改写(并复用)什么。
3.软件开发和堆砌乐高积木就完全不一样了,乐高积木式的插件不合适。软件它就像洋葱般层层叠叠,每一层都辛辛苦苦的建立于前一层基础之上,危如累卵,指望着底下那层不要移动或者改变太多。做软件的人喜欢讨论垒砖头;而怀疑论者眼中只看到空中楼阁,无论如何,日积月累,一层一层搭建起来。也正如麦卡斯柯说道:“我们打算尽可能多得复用现有代码,少些新代码,要加快工作进程,就得尽量避免踏入新的编码地带”。
4.软件开发还有一个规律,质量三角不能兼得,即速度、便宜、优质。三者往往只能选其二,就像盖高楼一样,人们总是习惯延期完工,这样就不会被别人怀疑质量问题,反过来,如果一个大楼十天就盖好了,人们肯定会觉得太不可能了,这样的楼房人们也不会住进去,软件开发也是这个样子,有速度就可能不会保证质量,有质量可能就得延误完工,当然这也与程序员有着紧密的关系。
5.软件开发的团队组建也是一个比较的难的事情,因为不同的程序员的生产力相距甚远,常会达到10倍的差距。所以,考虑如何配置项目人员,和预估项目所需的时间一样叫人充满挫败感。团队里还不乏出现“奇客”,如何管理与发挥出奇客的优势也是一个问题。
6.软件开发过程中不能太过于急功近利,不能想着一口吃一个胖子,别指望在短时间内达到大成就,否则会重头再来。
7.开发过程中要注意客户对某些细节东西的需求,尽最大可能让客户满意。
8.开发过程中要注意一些变成习惯,比如参数的命名方法等。
9.软件开发虽然是一个艰难的过程,但是只要坚持,总会有成绩,如果不坚持,什么东西都不会做出来。