- 让客户一起做决定,用业务负责人能够理解的语言,向他们详细解释遇到的问题,并让他们做决定。
- 让设计指导而不是操纵开发,设计指引你向正确的方向前进,合理地实用技术,首先决定什么是你需要的,接着为这些具体的问题评估使用技术,对任何要使用的技术,多问一些挑剔的问题,并真实地作出回答。新技术就应该像是新的工具,可以帮助你更好地工作,她自己不应该是成为你的工作。
- 保持可以发布,保证你的系统随时可以编译、运行、测试并立即部署。
- 提早集成,频繁集成,代码集成是主要的风险来源。要想规避这个风险,只有提早集成,持续而有规律地进行集成。
- 提早实现自动化部署,使用部署系统安装你的应用,在不同的机器上用不同的配置文件测试依赖问题。质量保证人员要像测试应用一样测试部署。
- 使用演示获得频繁反馈,在开发的时候,要保持应用可见(而且客户心中也要了解)。每隔一周或者两周,邀请所有客户,给他们演示最新完成的功能,积极获得他们的反馈。
- 使用短迭代,增量发布,发布带有最小却可用功能块的产品。每个增量开发中,使用1~4周左右的迭代周期。
- 固定的价格就意味着背叛承诺,让团队和客户一起,真正地在当前项目中工作,做具体实际的评估。由客户控制他们要的功能和预算。