background image

7. 在时间和空间上,因果并不密切相关(Cause and effect are not closely

related in time and space)

我们善于为出现的困难寻找原因,即使这些原因很牵强,并且远非是真正的

根本原因。

为了按时完成系统,开发团队不再接受来自客户的需求改变。因此,客户对发行的
软件不满意。

实时系统历经坎坷之后,管理层迫使开发者同意,并且在给系统做出任何修改之前
撰写详细的技术说明。结果开发者失去了为系统做出任何改进的动力,并且开始拖
延。

8. 微小的改变可以产生明显的效果,但这种杠杆效应最大的地方往往也最

不明显(Small changes can produce big results-but the areas of highest
leverage are often the least obvious)

像改变公司政策、愿景或者广告用语这样显而易见并且关系重大的解决方案

往往不起作用。相反,小而普通,但持续的改变却会带来大不相同的效果。

开发者每天都与客户进行交流,并且做出大部分决定。因此,能够更好地理解客户
的需求、做出更好的决定并且给出最优的解决方案。

开发者为系统的每项功能设计自动化单元测试。因此,设计更灵活、人们更自信、
系统在每此修改之后都能得到完全的测试。

9. 鱼与熊掌可以兼得,但不是同时兼得(You can have your cake and eat

it too – but not at once)

我们经常会面对刻板的“非此即彼”选择。如果我们改变一下自己的观点及

系统规则,这些选择有时并不会使我们进退两难。

经验丰富的项目经理知道增加系统特性的数量与削减时间和开支不可兼得。然而,
如果我们完善一下想法、寻找合适的人才并且避免过度开发,这也是可能做到的。

开发者认为他们应该要么采用事务脚本,要么采用域模型体系架构模式。然而,复
合域中的高性能解决方案可以将两者结合,以得到最佳性能。

10. 把一头大象分两半不会得到两头大象(Dividing an elephant in half

does not produce two small elephants)

无法整体了解系统,往往会做出次优决定。