从第四章中知道遵守代码规范中大有学问,小到分行、命名、缩进、大小写,大到代码设计规范。这所有规定看似是形式功夫,但是写过代码的都知道其中的方便之处。代码的规范,有助于自己和其他人事后看懂自己当初的代码,能够为日后与他人合作打下良好的基础。
结对编程随着敏捷思潮的兴起而广为人知,然而这种实践早已有之。1987年,Intuit公司(当时只是一个刚刚起步的个人财务管理软件公司)宣布4月会向客户提供新版本的软件(4月15日是美国报税的截止日期)。但到了3月末,公司仅有的两个技术人员发现进度还是大大落后于预期,于是这两人在3月的最后一周开展了不得已的、长达60个小时的结对编程活动,可以看出,和很多其他的发明创造一样,最初的结对编程也是为了解决问题,不得已而为之。那么为什么要结对开发呢?在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等。结对编程不是程序开发者独到的发明,在现实生活中,也存在着类似的搭档关系:越野赛车(驾驶员,领航员)。
第五章主要讲团队合作。可以看出,这些团队有共同的特点:
1. 团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力赛跑。(王屋村搬砖的“非团队”成员则不然,每个人想搬多少就搬多少,不想干了就结算工钱走人。)
2. 团队成员有各自的分工,互相依赖合作,共同完成任务。(王屋村搬砖的“非团队”成员则是各自行动,独立把任务完成,有人不辞而别,对其他的搬砖人无实质影响。)其中有各种典型的团队模式,也各有其特点。
一群人在一起做软件开发,总是要有一些方式方法。就像第一章提到的:
我们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。众多模式,都终归要先过老板的目。但重点是如何提高团队的开发效率。