PragPro的哲学(之三)

足够好的软件

     正如Ed Yourdon在《IEEE软件》上的一篇文章描述的那样,你能够训练自己写出足够好的软件,对你的用户足够好,对未来的维护者足够好,让你自己足够安心。
     在我们更加深入之前,我们需要证明我们想说的是正确的。“足够好”没有包含马虎或者差劲的代码的意思。所有的系统必须满足它们用户的需求才能算得上成功。我们仅仅倡议给用户们一个机会参与到决定什么时候你做的东西是足够好的了的过程中来。

使你的用户参与到讨论中

     你开发的系统的范围和质量应该作为系统需求的一部分被指明。

建议7

使质量成为需求的一个议题

     你通常会在涉及到权衡的情况下。出人意料地,很多的用户相对于为多功能的版本等待一年更倾向于在今天使用有一些未完善处的软件。很多资金紧张的IT部门会赞同。现在好的软件常常是在接下来完善更可取。如果你给予你的用户更早使用一些东西,他们的反馈将会带给你更好且可能的解决方案。

不要画蛇添足

     在某种程度上,编程就像是画画。你从一个空白的画布和某些基本的未加工过的材料开始。你将科学、艺术和工艺相结合来决定你要对程序做什么。你草拟了整体形状,画出底层的环境,接着勾勒出细节。你时常带着批评的眼光回去看你都做了什么。所有的现在和以后你都将抛弃画布重新开始。
     但是艺术家会告诉你所有的努力工作都会因为你不知道什么时候停止而毁灭,就像画蛇添足。如果你添加一层又一层,细节加细节,油画会将在绘画中“迷失”。
     过度修饰或者过度精炼会毁掉一个足够好的软件。继续,让你的代码在正确的位置上一段时间。它或许不够好。不要担心,这永远不可能是完美的。

PragPro的哲学(之二)

2.软件的熵

熵是一个物理学术语,指的是一个系统中“混乱”的数量。不幸的是,热力学的定律保证在宇宙中熵趋向于无穷大。在软件中混乱增多的时候,程序员们管它叫做“软件腐烂”。

在内地的城市,一些建筑都很漂亮和干净,然而其他的都很挫。为什么呢?犯罪和城市领域的研究人员发现非常神奇的让一个干净、完整、有人居住的建筑变成乱七八糟遭人唾弃的鬼地方的触发机制。

一个破碎的窗户

一个破碎的窗户放着很久没有去修理,慢慢地,这栋楼的居民心中会产生抛弃感,这种感觉使得他们根本会在乎这栋楼。所以其他的窗户打坏了,人们开始把它丢在一边不管。渐渐地涂鸦出现了,建筑结构上严重的破坏也产生了。在相当短的时间里,这栋楼变得非常破旧搞得居民都不像去修理它,并且人们抛弃它成为了现实。

“破窗原理”给纽约和其他主要城市的警察局带来了灵感,他们用小事情来阻止大事情。这发挥了作用:保持破窗、涂鸦和不足挂齿的违规行为减少了严重的犯罪水平。

建议4

不要和破窗一起生活

不要遗留没有被修理的“破窗”(差劲的设计、错误的决定或者垃圾的代码)。以上任何一个问题被发现的时候就得去修复它。如果没有足够的时间去适当的处理它,那就把这个错误封闭起来。也许你可以把不好的代码注释起来,或者显示一个“未完成”这样的信息,或者用虚拟的数据代替。要采取行动来阻止更进一步的破坏以及表现出你是在最高状态。

你可能会想没有人有时间去把一个项目里所有的玻璃碎片都弄干净。如果你继续这样想的话,你最好还是去弄个大的垃圾桶过来,或者搬到另一个街坊。不要让熵赢了。