background image

公司为顾客提供丰厚的优惠并投入巨资宣传,让很多人购买软件 。但是,顾客购买
之后很不满意,因为软件无法使用也不可靠。

管理层承诺,如果开发团队能够按时完成系统开发,公司会提供巨额的奖金。一个
团队开始努力的工作,但很快他们就意识到这是不可能实现的。于是开发者变得悲
观并丧失动力。

4. 最容易出去的方法往往会导致返回来(The easy way out usually leads

back in)

在生活中学到的一些解决方案能够帮助我们轻易地并且更早的地获得成功。

我们总是试图把它们强加到任何情形上,而忽略了特殊的背景以及相关人员。

开发者还没有准备好接受结对编程或者测试驱动开发这样的实践时,敏捷教练强行
实现完全的极限编程。这会给任何敏捷方法带来压力、冲突以及负面影响。

开发者把设计模式应用到任何地方,这是徒劳的,而且这会让系统变得复杂。

5. 治疗带来的结果可能会比疾病导致后果更严重(The cure can be worse

than the disease)

有些熟知的方法可能会更危险,比如在编程的时候喝啤酒,来减轻不切实际

的任务期限带来的压力。

由于不信任全职开发者,一家公司雇佣了大量的承包商来开发核心功能。结果,系
统不具有概念完整性,自己公司的开发者看不懂,并且无法做出修改。所以,公司
员工也不了解相关领域的知识、解释以及概念。

开发者会走捷径,拷贝相似功能的代码来赶进度,并且争取尽快发行第一个版本。
他们一开始进展迅速,但是代码最终会变成大泥球

(比喻系统结构不清晰)。

6. 欲速则不达(Faster is slower)

当我们看到成功的曙光,我们会全力以赴,不再小心谨慎。然而,最优增长

速率通常会比可能的最快增长速率要慢得多。

经理们往往为已经成功的项目增加很多人手,但总体进展就会变慢,因为交流所用
的花费增加,以及团队成员之间失去默契。

在没有对代码进行合理重构及改善的情况下,开发者快速的为系统添加新的功能,
会使系统变得难懂,而且难以修改。