译者序

    《高效团队开发:工具与方法》并不是以实际的项目带你体验多人开发项目的整体流程,而是告诉你使用哪些工具和方法能够实现高效的团队开发。从版本管理系统、缺陷管理系统到 CI 工具、虚拟化、自动化测试等,无论你使用哪种语言、框架、软件开发模式,无论你是负责开发、测试,还是负责运维、项目管理,都会涉及这些工具。这些工具也直接影响着开发和运维的效率、项目成本以及公司的日常开销。

    随着 SaaS(软件即服务)的普及,越来越多的项目已经不是经过一段时间的密集开发就结束的了。后期的开发,包括集成、测试、运维(部署、发布等),从重要性以及成本的角度来看都已经成为项目中的重要部分。本书后半部分介绍的持续集成、自动部署(持续交付)以及回归测试,都能有效地帮助这样的项目提高质量、加快开发速度、降低运维成本。

    本书让我印象较深的一点是贯穿全书的自动化意识,包括自动化环境构建、持续集成、自动化测试、自动部署和发布。点击鼠标提交代码和测试用例,借助 CI 和各类自动化工具,自动触发编译、集成、测试、部署,还会自动将版本管理系统中提交的信息关联到缺陷管理和 CI 系统中,几分钟后打开浏览器就能够“享受”自己的劳动成果了。这样的场景实在太美了。想来是因为日本长期的劳动力不足以及高昂的劳动力成本才让作者对于自动化如此执着。对于还能够享受人口红利的中国软件行业来说,自动化也是非常必要的。除了能够在开发、测试、运维等多方面降低成本之外,自动化环境构建、自动化测试这样的机制能够降低项目对于成员个体的依赖,在大规模的团队开发中以及在灵活调整团队规模方面都是必不可少的。

    本书所介绍的内容对于公司来说不仅可以提高效率,降低成本,还可以成为公司的一张名片。持续集成、自动化测试、持续交付,加上 Github、Jenkins、Vagrant、Chef、serverspec、Selenium 这些工具,由此构筑起的技术堆栈,无论是对于开发、测试人员还是运维人员来说都是非常具有吸引力的。对于个人来说,除了扩展自己的知识之外,还能作为你选择公司的重要参考依据,判断公司是否对技术敏感,推测项目大致的工作流程以及是否可能成为 Death march。更重要的是

    员工:“老板,我要加工资!”

    老板:“为什么?”

    员工:“因为我长得帅!”

    老板:“……”

    员工:“因为我跟你 10 年了,没有功劳也有苦劳吧!”

    老板:“好吧,加 5% 差不多了。”

    员工:“这个项目交给我,我有办法只需要一半的人手就能完成!”

    老板:“真的?好!工资翻倍!”

    最后感谢在翻译过程中给予我支持及鼓励的各位。特别是我的妻子,翻译这段时间恰好是她怀孕和生产的时候。我们平安地迎来了家里的新成员滚滚,借此祝愿他健康成长。

    严圣逸

    2015 年 3 月于上海