《告别失控:软件开发团队管理必读》一一1.2 成功的程序设计经理为什么难当

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).

时间: 2024-08-02 01:31:00

《告别失控:软件开发团队管理必读》一一1.2 成功的程序设计经理为什么难当的相关文章

《告别失控:软件开发团队管理必读》一一第2章 理解程序员

第2章 理解程序员 告别失控:软件开发团队管理必读从许多方面看,程序员之间的差异都非常大,只有很了解程序设计的人才能完全理解这一点.大多数公司的高层管理者对所有的程序员一视同仁,这是一个可怕的错误.微软公司的Bill Gates和Adobe Systems公司的John Warnock都没有犯这样的错误,因为他们俩本质上也都是程序员. 这种差异为什么很重要?也许不应该很重要,但事实上,这种差异真的很重要.历经多年的程序员管理工作之后,我们仍然惊叹于程序员之间的巨大差异,需要有区别地进行问题处理和

《告别失控:软件开发团队管理必读》导读

前言 告别失控:软件开发团队管理必读 软件开发常常被认为是难以管理的.进度安排和费用预算完全不靠谱的软件项目比比皆是.规范化的软件开发实践对这一状况有所改善,但也未能真正解决问题.我们软件开发行业已经积累了超过60年的技术经验,并已经投入了大量的时间,以及美元/日元/卢比/欧元来尝试把管理规范化,但为什么软件开发至今仍然如此难以管理呢? 本书用一个简单的观察结果来回答这个长期存在的问题:管理者首先必须学会管理程序员和软件团队的技巧.也就是说,必须学会了解员工-如何聘用他们,激励他们,进而领导他们

《告别失控:软件开发团队管理必读》一一1.1 程序员都做什么

1.1 程序员都做什么 首先,程序员的工作很有趣!Fred Brooks在软件工程的经典名著之一<人月神话>[6]中很好地总结了程序设计充满乐趣的原因. "第一,是纯粹的创造的愉悦--""第二,是做出对其他人有用的东西而带来的快乐--""第三,是设计组装谜题一样环环相扣的复杂部件,并观看着它们巧妙地运转而产生的吸引力--""第四,是持续学习的乐趣,这来源于任务的无重复特性--""第五,工作的对象是可以自由

《告别失控:软件开发团队管理必读》一一2.5 工作地点与关系

2.5 工作地点与关系 近年来,软件开发管理的复杂度比以前大了很多.也许你很幸运,仍然保持在简单的环境中,但这样的日子很快就不会再有了.即使现在不受影响,早晚都会受到影响的:否则,你的企业将不再具备竞争力. 以前,听到的问题都是:"去哪里找一个程序员来做项目?"后来逐渐开始思考是招聘现场全职雇员还是招聘合同工的问题.现在,在哪里完成工作.怎样完成工作往往涉及大量的决策,需要仔细考虑. 通常,这些决策不由你来做出,它们可能是由你的领导或者项目情况而定的.无论如何,要想取得成功,必须解决好

《告别失控:软件开发团队管理必读》一一2.7 个性特点

2.7 个性特点 程序员除了具有不同的类型之外,还普遍存在着个性特点.特质和习惯,这些因素各自都面临着一些挑战. 学术界有着许多关于个性.如何对个人进行分类以及如何管理个性的理论.在这些理论中,迈尔斯和布里格斯的工作值得花一些时间来理解,他们俩在1942-1962年间建立了个性测试的理论基础,并提出了对个性进行分类的体系.迈尔斯-布里格斯类型指标(Myers-Briggs Type Indicator,MBTI)个性清单的作用是,使C. G. Jung描述的心理类型理论易于理解,在生活中更实用.

《告别失控:软件开发团队管理必读》一一2.2 程序员的类型

2.2 程序员的类型 为了选择合适的职员,我们还需要理解另一种看待程序员的方法.在上一节讨论的几种类型中,我们侧重考虑了程序员所从事的工作的类型(即客户端.服务器.数据库.Web).实际上,从技术知识.实践经验和程序员的专长角度去考虑也是很重要的,按这样的思路可以把程序员分类为: 系统工程师/架构师:系统程序员:应用程序员:非真正意义上的程序员. 2.2.1 系统工程师/架构师 在所有开发类职员中,系统工程师/架构师是最有技术和经验的.要想理解所有相关的系统组件(操作系统.通信系统.数据库.在线

《告别失控:软件开发团队管理必读》一一2.9 工具

2.9 工具 我们为团队管理提供了许多辅助工具.电子表格和Word文档提供了完整的示例,稍作修改即可用于你自己的组织.全书最后的"工具"部分给出了工具网站的链接,在那里可以下载下列工具: 程序员级别样例:各程序员级别的职位描述样例:独立合同工协议样例:角色和排名系统.

《告别失控:软件开发团队管理必读》一一2.4 程序员的工作要求与能力

2.4 程序员的工作要求与能力 要想成功地招聘和管理程序员,首先要认识到每个程序员都有其独特的能力.就像雪花一样,任何两个程序员都不会是完全一样的.我们常常会说,程序员之间写代码的能力可能相差一个数量级.这种差异是怎么出现的呢?教育.经验.天赋以及直觉,还有其他无形的因素,都有可能导致这样的差异. 多数程序员不需要借助显式的排名或者头衔,从直觉上就能理解同行之间的差异.但是如果能把程序员的类型与等级正式记录下来,并简要描述每种类型与等级的职位要求与能力(见表2-1),那么管理工作将会轻松很多,项

《告别失控:软件开发团队管理必读》一一2.8 小结

2.8 小结 本章的目的是帮助大家认识到,理解程序员并不是一项简单的任务,即使你当过程序员也不例外.我们提供的多种视角,只能帮助你找到最适合你的方法来管理那些必须雇用的程序员.管理人是很困难的,有些最有天赋的程序员同时也是最难管理的人.这是一把"双刃剑". 我们列出了多种个性类型供大家了解,但强烈建议大家不要简单地按这些类型对人进行分类.把每个人都作为不同的个体看待,你这位程序设计经理会更成功.