每个开发者都应该知道的5条定律

Murphy 定律

“If anything can go wrong, it will.”
“如果有什么事情可能出错,那就一定会出错。”

老杨点评:设计系统一定要健壮,即使在成本考量下暂时不能做到健壮,也需要有灾备方案,也就是传说中的Plan B。

Knuth 定律

“Premature optimization is the root of all evil (or at least most of it) in programming.”
“过早的优化是编程中所有问题(或者至少是大部分问题)的根源。”

老杨点评:优化是需要成本的,过早优化就表示后期变动几率非常大,一旦变动了,优化的成本就无法收回了。

North 定律

“Every decision is a trade off.”
“每一个决定都是一种权衡。”

老杨点评:项目中我们随时都要做出决策,做出选择,任何选择都是对其他选项的放弃,这些选项我们要记录下来。决定都会犯错,这不可怕,可怕的是我们忘记了当初为什么要做这个决策,还有哪些选项可供我们使用。

Conway 定律

“Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”
“系统设计的架构受限于生产设计,反映出公司组织的沟通架构”

老杨点评:组织架构决定系统架构。

Parkinson 定律

“Members of an organization give disproportionate weight to trivial issues.”
“一个组织的成员过分重视琐碎的问题。”

老杨点评:人们更愿意把注意力和观点放在他们熟悉的事物上,而不是复杂的问题上。所以,为什么会议要有一个组织者,主要是确保不跑偏。