本节书摘来自异步社区出版社《告别失控:软件开发团队管理必读》一书中的第1章,第1.2节,作者: 【美】Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利克蒂),更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.2 成功的程序设计经理为什么难当
大多数杰出的程序员并不热衷于当其他程序员的经理。他们知道团队需要软件经理,但乐得让别人来做实际的管理工作。他们通常不喜欢管理人员或项目。
管理程序员是很难的!“管理程序员很像是在放牧一群猫”——这句话常被引述,它揭示了高效、成功的程序设计经理难当的本质原因。猫的自由主义、个人主义色彩浓厚,而且狡猾、贪玩、好奇、独立。程序员也一样。
根据我们的经验,非常能干的软件经理是很稀少的。而只有这类很少见的软件经理才能成功地管理无拘无束的程序员并且乐在其中。
因为程序员都是些无拘无束的人,常见的激励方法往往不能奏效。除了进行必要的技术监督并把开发实践和过程落实到位之外,善于利用程序员的自我意识和改变世界的欲望也很关键。这就需要一类既能理解程序员的工作方式,又能理解工作本身的软件经理,他们不仅能有效地激励程序员超常发挥,而且能按时交付结果。
对许多职业来说,报酬是主要的动力源泉;但对程序员来说,工作本身和工作环境的重要性要比报酬高得多。程序设计是一个创新的过程,需要有效地处理特殊情况。优秀的经理必须注意到这些情况,并营造有助于程序设计的工作氛围。
本书从头至尾一直在表达这样的观点:成为高效、成功的程序设计经理是可能的。但我们认为,一般只有优秀的或杰出的程序员才能成为成功的程序设计经理。
当然,这通常只是问题的一部分。大多数程序设计经理被提拔为经理就是因为他们曾经是优秀的或杰出的程序员并且表现出了一定的人际交往能力—在引导其他程序员的行为方面展现出了自己的能力甚至可以说是兴趣。
程序设计经理一般都没有接受过正规的管理培训,他们的管理经验通常来自工作和他人的指责。在这些菜鸟经理中,一部分人获得了成功,一部分人很快就失败了,多数人则是经过一段时间之后才宣告失败。
对获得成功的程序设计经理而言,在他们所在的组织或者圈子里面,一般都会有一位导师,引领他们取得成就,并且在他们犯错误的时候给予保护。我们担任程序员以及程序员经理的时间差不多有近40年了,这些年我们招聘、管理过数以千计的天才程序员并当过其中很多人的导师。我们希望本书能够提供导师所能给予的指导,能够为那些在程序员管理方面只能独自奋战的经理们担任代理导师。
本书的目的不是改变程序员,事实上也做不到这一点。他们仍然会在设计之前编写代码,仍然只在必要时才提供有形的结果。我们的目标是提供一些见解、建议、工具、方法以及经验法则来帮你“放牧”软件项目中的“猫”,并且帮你管理团队中看似难以管理的程序员。
[1] 软件工程这个术语创造于1968年,用于描述“系统的、严格的、可量化的开发、运营与维护软件的实践”。参见《科学美国人》1994年9月的“Software’s Chronic Crisis”(软件的严重危机)一文。
[2] 美国计算机协会(Association for Computing Machinery,ACM)在20世纪80年代初期曾有一个职业认证项目,但后来终止了。20世纪90年代末,ACM调查了软件工程职业认证的可能性,但最终认为这种职业认证对业界的软件工程实践来说是不合适的。参看www.acm.org/public-policy上的“ASummary of the ACM Position on Software Engineering as a Licensed Engineering Profession”。
[3] 很多类似于微软、苹果、思科这样的机构都提供认证课程与测试,在业界广泛采用,但这些认证只针对特定的专业领域。它们可能是从事某项工作所必需的,但并不是整个行业所必需的。
[4] 能力成熟度模型集成(the Capability Maturity Model Integration,CMMI)是由软件工程研究所(the Software Engineering Institute,SEI)研发的流程改进方案,为机构提供必需的有效流程元素来提高他们的表现。参见www.sei.cmu.edu/cmmi。
[5] Quoted in G. Pascal Zachary, Show-Stopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft (The Free Press/Simon & Schuster, 1994).
[6] Frederick P. Brooks Jr., The Mythical Man-Month, Anniversary Edition (Addison-Wesley, 1995; originally published in 1975)。这本程序设计的经典书籍,是每一个管理程序员或者软件开发项目的人的必读之物。
[7] 多位业界领袖都表达过类似的观点,认为音乐家可以成为非常杰出的程序员。Mickey本人也是一位音乐家,所以从内心认同这个观点。
[8] 电气和电子工程师协会(the Institute of Electrical and Electronic Engineers,IEEE)提供对软件开发职业工程师的认证(Certified Software Development Professional,CSDP),它大体是根据软件工程知识体系(Software Engineering Body of Knowledge,SWEBOK;www.swebok.org)列出的实践设置。虽然这种认证是否值得追求本身仍是一个颇具争议的话题,但值得一提的是,在“正统”的工程领域里,认证机制是普遍常态。
[9] For a pragmatic look at certification, see Jack Ganssle, “More on Certification,” September 7, 2005, www.embedded.com/ columns/embeddedpulse/170701175.(译注:该链接已失效,请参见http://www.embedded.com/ electronics-blogs/-points/ 4025582/More-on-Certification。)
[10] Pete McBreen, Software Craftsmanship (Addison-Wesley, 2001).