我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,我们认为:
- 个体和交互 胜过 过程和工具
- 可以工作的软件 胜过 面面俱到的文档
- 客户合作 胜过 合同谈判
- 响应变化 胜过 遵循计划
虽然右项也有价值,但是我们认为左项具有更大的价值。
1,个体和交互 胜过 过程和工具:
一个优秀的团队成员,合作,沟通以及交互能力要比单纯的编程能力更为重要!
团队的构建要比环境的构建重要的多!
2,可以工作的软件 胜过 面面俱到的文档
MartinW文档第一定律:直到迫切需要且意义重大时,才来编写文档。
没有文档的软件是一种灾难,但过多的文档比过少的文档更糟:编写,与代码同步,需要花费大量
的时间。
对于新成员熟悉软件,通过代码和团队沟通是最快最有效的方式。
3,客户合作 胜过 合同谈判
你不能写下一份关于你想要的软件的描述,然后就让人在固定的时间内以固定的价格去开发完成
它,这种操作模式将导致低劣的质量和失败。
成功的项目需要有序,频繁的客户反馈,让软件的客户与开发团队密切地在一起工作。
4,响应变化 胜过 遵循计划
针对不停变化的需求(即使需求的每个细节都已聊到),计划不易考虑的过远,较好的策略是:为下两
周做详细的计划,为下三个月做粗略的计划,再以后就做极为粗糙的计划,我们仅仅对于迫切的任
务才花费时间进行详细的计划,一但制定就难以改变,因为团队已启动工作,并有了相应的投入。