# 前言 在许多成长中的小型公司中,项目经理们在执行CEO战略意图的同时,往往还得处在不得不与技术团队和其他高级经理打交道的位置。通常情况下,即使当工作的非技术因素已经最大程度地影响公司的成败时,开发经理们依旧仅仅关注于技术。伴随着公司的成长,曾经看上去很小的问题也在不断扩散,最终引发成为主要灾难。我写本书的目的,就是为那些新上任的开发经理们提供建议,告诉他们如何成功地应对这些挑战。 小公司中的开发经理在很多方面都不同于在一个稳定的大公司中的同等角色。例如,小公司的开发经理通常不仅要和开发人员一起支撑亟待成熟的产品,还必须与被公司成长过程中面临的挑战所吸引的技术大牛共事。但最重要的是,小公司的开发经理必须对员工、产品、过程、规划、技术以及客户等诸多因素给予广泛的关注。 相对而言,大公司通常支持多种现有产品,他们的过程定义通常比较清楚而且相对稳定。大公司的政策通常限制了开发经理所用的工具、技术及实现方式。相对于小公司的同等角色,大公司的开发经理工作范围更明确而狭窄。 本书作为一本实践指南,为那些经历过初始生存阶段且正在试图进一步发展壮大的小公司中的开发经理们提供了实用的指导原则。其目的是帮助管理者预见问题并在其变得棘手前及时进行处理。这里描述的技能主要适用于销售产品级软件或提供软件服务的小公司,并不针对软件咨询业务。本书不仅提供了总体建议,也提供了具体解决方法以及详细的模板和电子表格,这些内容都非常有助于开发经理们将基本概念应用于具体实践。 由于涉及范围较广,本书的书写方式采用了指令式的风格(prescriptive style)而不是议论型argumentative风格——也就是说,不建议采用广泛的论据来说明这些良好的工作技能如何到位。这方面的资料将大大扩大本书的范围,但同时也会降低它的可读性。 为方便起见,笔者使用“开发经理”和“开发管理人员”贯穿全书,这些术语用于指代高层软件/工程管理人员——不论是首席技术官(CTO)、工程副总裁、工程总监,还是高级工程经理这样特定的工作职位。这个人既要从事软件工程师的管理,还要担负质量保证、文档说明以及项目管理等团队的管理。虽然本书的目标读者是开发总监,不过非技术类管理人员也同样会受益于本书所描述的问题和解决方案。