background image

软件开发中的 11 个系统思维定律

“我会更加努力地工作” —— 一匹名叫 Boxer 的马(出自乔治·奥威尔的

《动物农庄》)

彼得·圣吉在其著作《第五项修炼》中提到的系统思维定律同样适用于软件

开发。

1. 今日的问题源于昨日的解决方案(Today’s problems come from

yesterday’s solutions)

当解决问题时,我们会感到很高兴。我们经常不考虑后果。令人感到意外的

是,我们提出的解决方案可能会产生反作用,并带来新问题。

作为对取得巨大成功的团队的奖励,公司决定为团队中的少数骨干成员发放奖金并
晋升职位。团队中的其他成员会感到不公平,并且会丧失积极性。最终使团队成员
之间的关系更加紧张,后续项目也就很难再取得成功。

项目经理频繁要求开发者修复一个新的软件

Bug,或者处理客户的紧急需求,而开

发者尽力满足这些要求。但是,过于频繁地分散精力会妨碍他们完成迭代过程中的
主要任务。因此,项目进展很慢。

2. 用力越大,系统的反作用力也越大(The harder you push, the harder

the system pushes back)

当事情的进展结果并非如我们所愿时,我们会固执地坚持自己的方法。我们

没有时间来停下来思维并寻找更好的替代方案,而是“义无反顾”地向前冲。有
时候虽然解决了问题,但往往又发现深陷于其他问题之中。

当一个系统远未完成时,经理通常会不断催促员工加班加点地工作,并且要求按时
完成。系统

bug 数量的持续增加及整体质量的急剧下降,导致更多的延误。因此,

需要做更多的工作来部署软件系统。

为了满足新系统的要求,开发者勇敢的对原有的系统架构进行扩展,但死板陈旧的
方法已经不能满足这些新需求。他们忙于做这件事,以至于没有时间停下来仔细分
析并且改变方法,从而导致系统质量下降。

3. 福兮祸之所伏(Behavior grows better before it grows worse)

短期的解决方案,会给我们带来短暂的休息和状况的暂时改善,但是不会从

根本上解决问题。这些问题终究会使情况变得更糟。