注重实效的哲学(程序员修炼之道摘录二)
2010-11-29 00:14
239 查看
软件的熵
尽管软件开发几乎不受任何物理定律的约束,熵对我们的影响却还是很大的。熵是一个来自物理学的概念,指的是某个系统中的“无序”的总量,遗憾的是,热力学定律保证了宇宙的熵倾向于最大化,当软件中的无序增长时,程序员们称之为“软件腐烂”
有很多因素可以促生软件腐烂,其中最重要的就是一个似乎是开发项目时的心理或者是文化,即使你的团队只有你一个人,你开发项目时的心理也可能是非常微妙的事情。尽管制定好了最好的计划,拥有最好的开发者,项目在其生命期中仍可能遭遇毁灭和衰败,而另外有一些项目,尽管遭遇到巨大的困难和接连而来的挫折,却成功地击败自然的无序倾向,设法取得了相当好的结果。
是什么造成了这样的差异?
在市区,有些建筑漂亮而整洁,而另一些确实破烂不堪的“废旧船只”,为什么?犯罪和城市衰退领域的研究者发现了一种迷人的触发机制,一种能够很快将整洁,完整和有人居住的建筑变为破败的废弃物的机制
破窗户
一扇破窗户,只有有那么一段时间不修理,就会渐渐给建筑的居民带来一种废弃敢——一种职权部门不关心这座建筑的感觉,于是有一扇窗户破了。人们还是乱扔垃圾,出现了乱涂乱画,严重的结构损毁开始了,在相对较短的一段时间里,建筑就被损毁的超出了业主愿意修理的程度,而废弃感变成了现实。
“破窗户理论”启发了纽约和其他大城市的警察部门,他们对一些轻微的案件严加处理,以防止大案的发生,这起了作用:管束破窗户,乱涂乱画和其他轻微违法事件减少了严重罪案的发生。
不要留着”破窗户“ (低劣的设计,错误决策,或者是糟糕的代码)不修,发现一个就修一个,如果没有足够的事件进行适当的修理,就用木板把它钉起来,或许你可以把出问题的代码放入注释或者是现实”未实现“消息,或是用虚设数据加以替代,采取某种行动防止进一步的损坏,并说明情势处在你的控制之下。
我们看到过整洁运行良好的系统,一旦窗户开始破裂,就相当迅速的恶化。还有其他一些因素能够促生软件腐烂,但与其他因素相比,置之不理都会更快的加速腐烂的进程。
你也许在想没有人有时间到处清理项目的所有碎玻璃,如果你继续这么想,你就最好计划找一个大型垃圾罐,或是搬到别处去,不要让熵赢得胜利
灭火
作为对照,让我们讲述Andy的一个熟人的故事,他是一个富得让人讨厌的富翁,拥有一所完美,漂亮的房子,里面满是无价的古董,艺术品,以及诸如此类的东西,有一天,一副挂毯挂得离他的卧室壁炉太近了,着了火,消防人员冲进来救火和他的房子,但他们拖着粗大肮脏的消防水管冲到房间门口时却停住了——火在咆哮——他们要在前门和着火处之间铺上毯子:
他们不想弄脏地毯
这的确是一个极端的例子,但我们必须以这样的方式对待软件,一扇破窗户——一段设计低劣的代码,团队必须在整个项目开发过程中加以忍受的一项糟糕的管理决策——就足以使项目开始衰败。如果你发现自己在有些破窗户的项目里工作,会很容易产生这样的想法:”这些代码的其他部分也是垃圾,我只要照着做就行了“项目在这之前是否一直很好并没有什么关系:在最初得出”破窗户理论“的一项实验中,一辆废弃的轿车放了一个星期,无人理睬,而一旦有一扇窗户被打破,数小时之内车上的设备就被抢夺一空,车也被翻了个底朝天
按照同样的道理,如果你发现你所在团队和项目的代码十分漂亮——编写整洁,涉及良好,并且很优雅——你就很可能会格外注意不会把它弄脏,就和那些消防员一样,即使有火在咆哮(最后期限,发布日期,会展演示等),你也不会想成为第一个弄脏东西的人。
尽管软件开发几乎不受任何物理定律的约束,熵对我们的影响却还是很大的。熵是一个来自物理学的概念,指的是某个系统中的“无序”的总量,遗憾的是,热力学定律保证了宇宙的熵倾向于最大化,当软件中的无序增长时,程序员们称之为“软件腐烂”
有很多因素可以促生软件腐烂,其中最重要的就是一个似乎是开发项目时的心理或者是文化,即使你的团队只有你一个人,你开发项目时的心理也可能是非常微妙的事情。尽管制定好了最好的计划,拥有最好的开发者,项目在其生命期中仍可能遭遇毁灭和衰败,而另外有一些项目,尽管遭遇到巨大的困难和接连而来的挫折,却成功地击败自然的无序倾向,设法取得了相当好的结果。
是什么造成了这样的差异?
在市区,有些建筑漂亮而整洁,而另一些确实破烂不堪的“废旧船只”,为什么?犯罪和城市衰退领域的研究者发现了一种迷人的触发机制,一种能够很快将整洁,完整和有人居住的建筑变为破败的废弃物的机制
破窗户
一扇破窗户,只有有那么一段时间不修理,就会渐渐给建筑的居民带来一种废弃敢——一种职权部门不关心这座建筑的感觉,于是有一扇窗户破了。人们还是乱扔垃圾,出现了乱涂乱画,严重的结构损毁开始了,在相对较短的一段时间里,建筑就被损毁的超出了业主愿意修理的程度,而废弃感变成了现实。
“破窗户理论”启发了纽约和其他大城市的警察部门,他们对一些轻微的案件严加处理,以防止大案的发生,这起了作用:管束破窗户,乱涂乱画和其他轻微违法事件减少了严重罪案的发生。
不要留着”破窗户“ (低劣的设计,错误决策,或者是糟糕的代码)不修,发现一个就修一个,如果没有足够的事件进行适当的修理,就用木板把它钉起来,或许你可以把出问题的代码放入注释或者是现实”未实现“消息,或是用虚设数据加以替代,采取某种行动防止进一步的损坏,并说明情势处在你的控制之下。
我们看到过整洁运行良好的系统,一旦窗户开始破裂,就相当迅速的恶化。还有其他一些因素能够促生软件腐烂,但与其他因素相比,置之不理都会更快的加速腐烂的进程。
你也许在想没有人有时间到处清理项目的所有碎玻璃,如果你继续这么想,你就最好计划找一个大型垃圾罐,或是搬到别处去,不要让熵赢得胜利
灭火
作为对照,让我们讲述Andy的一个熟人的故事,他是一个富得让人讨厌的富翁,拥有一所完美,漂亮的房子,里面满是无价的古董,艺术品,以及诸如此类的东西,有一天,一副挂毯挂得离他的卧室壁炉太近了,着了火,消防人员冲进来救火和他的房子,但他们拖着粗大肮脏的消防水管冲到房间门口时却停住了——火在咆哮——他们要在前门和着火处之间铺上毯子:
他们不想弄脏地毯
这的确是一个极端的例子,但我们必须以这样的方式对待软件,一扇破窗户——一段设计低劣的代码,团队必须在整个项目开发过程中加以忍受的一项糟糕的管理决策——就足以使项目开始衰败。如果你发现自己在有些破窗户的项目里工作,会很容易产生这样的想法:”这些代码的其他部分也是垃圾,我只要照着做就行了“项目在这之前是否一直很好并没有什么关系:在最初得出”破窗户理论“的一项实验中,一辆废弃的轿车放了一个星期,无人理睬,而一旦有一扇窗户被打破,数小时之内车上的设备就被抢夺一空,车也被翻了个底朝天
按照同样的道理,如果你发现你所在团队和项目的代码十分漂亮——编写整洁,涉及良好,并且很优雅——你就很可能会格外注意不会把它弄脏,就和那些消防员一样,即使有火在咆哮(最后期限,发布日期,会展演示等),你也不会想成为第一个弄脏东西的人。
相关文章推荐
- 注重实效的哲学(程序员修炼之道摘录一)
- 注重实效的哲学(程序员修炼之道摘录三)
- 读书笔记-程序员修炼之道-注重实效的哲学(四)
- 读程序员修炼之道-注重实效的哲学 A Pragmatic Philosophy
- 程序员修炼之道---注重实效的哲学
- 读书笔记-程序员修炼之道-注重实效的哲学(三)
- 程序员修炼之道---注重实效的哲学(续)
- 读书笔记-程序员修炼之道-注重实效的哲学(一)
- $.读书笔记 #程序员修炼之道# %注重实效的偏执%
- 《程序猿修炼之道--从小工到专家》注重实效的程序员之快速参考指南
- 程序员修炼之道——注重实效的程序员之快速参考指南
- 读书笔记-程序员修炼之道-注重实效的哲学(二)
- 读书笔记-程序猿修炼之道-注重实效的哲学(三)
- 两篇文章 注重实效的程序员(The Pragmatic Programmer)
- 《程序员修炼之道》——第一章 注重实效的哲学
- 你的知识资产(程序员修炼之道摘录五)
- 程序员修炼之道—摘录
- 注重实效的程序员(The Pragmatic Programmer)
- 程序员修炼之道(读书笔记):1.注重实效的哲学
- 《程序员修炼之道》学习之--注重实效的哲学