《构建之法》阅读笔记04
今天阅读了《构建之法》的第四章和第五章,了解到了关于软件开发项目时,二人结对开发和团队开发的合作模式。
首先是结对开发。结对开发有这样一些好处:1. 在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强。2. 对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。3. 在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动。总之,如果运用得当,结对编程可以取得更高的投入产出比。那既然两个人组成了一个同盟,就得产生一些规则来共同遵守。主要是代码规范,代码复审等。这一点之前的阅读笔记里也提到过。那么如何进行结对编程呢?结对编程要有相互学习,相互磨合的过程。而最重要的一点是关于提意见的方式。不谈动机,不搞人身攻击,一切以就事论事的原则是结对开发的非常重要的一点。
关于团队开发,需要有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力赛跑。其次,团队成员有各自的分工,互相依赖合作,共同完成任务。团队开发还需要有一套合适的开发模式。每个团队的开发模式都可能不一样,只有适合自己的才是最好的。本书中介绍了这样几种开发模式。主治医师模式,这样的软件团队中,有首席程序员负责处理主要模块的设计和编码,其他成员从各种角度支持他/她的工作(后备程序员、系统管理员、工具开发、编程语言专家、业务专家)。明星模式,明星的光芒盖过了团队其他人的总和。可是明星也是人,也会受伤,犯错误,如何让团队的利益最大化,而不是明星的利益最大化?如何让团队的价值在明星陨落之后仍然能够保持?是这个模式要解决的问题。社区模式,社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。这种模式的好处是“众人拾柴火焰高”,但是如果大家都只来烤火,不去拾柴;或者捡到的柴火质量太差,最后火也就熄灭了。“社区”并不意味着“随意”,一些成功的社区项目(例如开发和维护Linux操作系统的社区),都有很严格的代码复审和签入的质量控制。业余剧团模式,这样的团队在每一个项目(剧目)中,不同的人会挑选不同的角色。在下一个剧目中,这些人也许会换一个完全不同的角色类型。各人在团队中听从一个中央指挥(导演)的指导和安排。在学生实践项目或培训项目中,这样的事情经常发生。秘密团队,一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。这种模式的好处是:团队内部有极大的自由,没有外界的干扰(不用每周给别人介绍项目进展,听领导的最新指示,等等),团队成员有极大的投入。特工团队,软件行业的一些团队由一些有特殊技能的专业人士组成,负责解决一些棘手而有紧迫性的问题。一些专门做网站安全性服务的团队,属于这一类型。
很多软件公司的团队最后都演变成功能团队,简而言之,就是具备不同能力的同事们平等协作,共同完成一个功能。
我的思考:任何开发模式或流程都是为了让开发变得高效。效率是衡量模式的优劣性的唯一标准。而如何让我们的工作效率变得更好,是我们一直需要思考的问题。