一、敏捷实践
人与人中间的交互是复杂的、并且其效果从来都是难以预期,确是工作中最为重要的方面。过程和方法对项目的结果只有次要的影响。首要的影响是人。
1、可以工作的软件胜过面面俱到的文档
就算微信的官方开发文档,也会有忽略的细节。而对应我们自己来说,功能做出来后还会有一波修改意见,文档不能反映当前状况才是常态。所以,尽快给出可以体验的功能很重要。并且,我很怀疑,一些东西是否必须以文档的形式来说明?毕竟,代码也是种语言。
2、客户合作胜过合同谈判
减少合作之前的信息差,频繁的沟通,在合同规定内接受持续的变化。不要妄想一个开发团队消失一段时间可以交付一个满足需要的系统。
二、计划
当你能够度量你所说的,并能够用数字去表达它时,就表示你了解它。如果不能,那么说明你的知识是匮乏的,不能令人满意的。
三、测试
编写单元测试是一种验证行为,更是一种设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功能验证方面的反馈循环。
测试驱动开发。可以在开发还没开始的时候进行一些功能上的测试,一方面可以完善开发逻辑,另一方面可以让开发以客观的角度进行代码编写,有可能还会有意外的收获。
四、重构
大千世界中,惟一缺乏的就是人的注意力。—— 凯文-凯利
每个软件模块都有三项职责。第一个职责是它运行起来所完成的功能。第二个职责是它要应对变化。第三个职责是要对阅读它的人进行沟通。
重构的目的,是为了每天清洁你的代码。在学习原则和模式前,首先学习清洁代码。