本书从一个软件开发团队的领导艺术的视角,围绕着在软件开发进程中团队领导将面临的种种现实问题,分别就团队的建设和领导、人际关系处理、压力和冲突管理、项目计划和决策制定等方面,以问答形式给予了切中要害的解答和切实可行的建议。所有这些建议均来源于作者作为译名开发技术人员、软件团队领导的多年实践和丰富经验,伴随着这些反传统的、创新的深邃而睿智的观点,很快你就能成为一名有效的领导者,就像你曾经是一名优秀的开发人员那样。
从书总序
译 者 序
序 言
前 言
第1章新任领导
第1节 我刚当上了一个新项目团队的领导
我刚当上了一个新项目团队的领导,我该从哪儿入手呢?
第2节 我接管了一个正在进行的项目
我接管了一个正在进行的项目,我该从哪里入手?
第3节 我是团队中最有经验的工程师
我是团队中最有经验的工程师,如果让其他人设计和编程,他们都不如我做得好;如果期望我用所有的时间来写文档和计划的话,我哪里有时间做那些重要的设计和编程工作呢?
第4节 如何检查别人的工作
我应该在什么时候检查其他人的工作?如何检查?
第5节 我该如何主持会议
我该在什么时候召集会议?我该如何主持会议?
第6节 我该如何进行面试
我要面试一个求职者,我该如何进行面试?
第7节 如何做演讲
如何做演讲?
第8节 我怎样才能获得团队成员的尊重
我怎样才能获得团队成员的尊重?
第2章 项目管理
第9节 如何草拟项目计划
我该如何草拟项目计划?项目计划有什么用?
第10节 遇到不现实的时间进度怎么办
我知道了交付项目的时间,但是这项时间表似乎不切实际,我该怎么办?
第11节 如何防止项目延迟
如何防止项目延迟?
第12节 如何与能力较弱的团队合作
我们项目组的工作与别的项目组的工作紧密相关,可是他们的产品质量很差,我该怎么办?
第13节 面对不断修补、改进的项目怎么办
我的上一个项目好像永远也完不成,我不断地在做修补和改进的工作,我应该怎么办?
第14节 工作程序很糟糕怎么办
如果工作程序很糟糕,我该如何做好工作?
第3章 人员领导
第15节 建设一个好的团队需要做哪些事情
什么是“团队建设”?建设一个好的团队需要做哪些事情?
第16节 我怎样才能找到正确的领导风格呢
有时候我觉得自己是一个好好先生,对别人听之任之;而在另外一些时候,我却觉得人们因为我的干涉而怨恨我,我怎样才能找到正确的领导风格呢?
第17节 面对专家型团队成员我该怎么办
我的团队里某个成员是项目中某个重要方面的专家,而我在这方面知之甚少,我就像一个门外汉似的领导着这件事情,我该怎么办?
第18节 团队成员不愿做设计或文档编写工作时我该怎么办
我的团队成员不愿做设计或文档编写工作,他们只想编写程序,我该怎么办?
第19节 什么时候我应该让团队成员按照自己的方式工作
什么时候我应该让团队成员按照自己的方式工作?什么时候我又应该让整个团队按照我的方式工作?
第20节 我和我的团队应该每天工作几个小时
我和我的团队应该每天工作几个小时?
第21节 我该如何奖励出色的工作
我很想在人们干得出色时表扬他们,但是这样做感觉比较屈尊俯就,我该如何奖励出色的工作?
第22节 我该如何处理团队中的“问题成员”
团队里有的成员确实是个麻烦人物,我该怎么处理?
第23节 怎样留住优秀的成员
我知道有人打算离开,我怎样才能留住他们?
第24节 如何处理团队成员偷懒的现象
团队中某个人花费过多时间聊天和上网,我应该怎么做?
第4章 需求获取
第25节 “需求获取”意味着什么
“需求获取”意味着什么?我该怎样处理它呢?
第26节 如何应对客户不断的改进要求
客户总是要求改变和改进,我真的可以说“不”吗?
第5章 压力与冲突管理
第27节 如何应对巨大压
我现在压力非常大,有些团队成员也是如此,我能做些什么?
第28节 面对过多的争论我能做些什
我的团队似乎花费太多时间去争论,我能做些什么?
第6章 与管理层的关系
第29节 如何确保管理层同意我的建议
我打算用一种特别的方式处理项目,如何确保管理层会同意我那么做?
第30节 我该如何忍受这种现状
我的老板很差劲,我该如何忍受这种现状?
第31节 没有从管理层得到相应支持时我该怎么做
我感到没有从管理层得到所需要的支持,对此我该怎么做?
第7章 决策
第32节 如何才能确信我做的决策是正确的呢
我不得不经常做出有关项目的决策,而且通常容我考虑的时间有限,如何才能确信我做的决策是正确的呢?
第33节 我是否应该做出风险决策
我不得不做出某种决策,而且要冒很大的风险,我该如何决定是否要冒风险呢?
第8章 分析与设计
第34节 分析真的有必要吗
分析真的有必要吗?我可以直接进行设计吗?
第35节 如何为项目确定最佳的结构和设计
如何为项目确定最佳的结构和设计?
第36节 如何使用面向对象的方法
我们采取了一种面向对象的方法,但是团队中的每个人似乎对怎样最好地应用它有不同的想法,如何使用面向对象的方法呢?
第37节 我们是否应该采用新技术
几个团队成员想在项目中采用一种新技术,我们应当采用新技术,还是沿用旧有的方式呢?
第38节 面对结构需要重建的项目怎么办
我的项目设计处于一片混乱之中,结构需要重建,但是没有时间,我该怎么办?
第9章 测试与项目发布
第39节 采用单元测试还是最终测试
如果目的是要在最短的时间内发现最多的错误,我是应该集中精力于项目的单元测试还是最终测试呢?
第40节 怎样保证产品的顺利发布
我们即将向客户发布产品,我怎样才能确保这一切会顺利地进行呢?
第41节 结论
参考书目
附录 1 面向对象的概念介绍
附录 2 UML的简要介绍
附录 3 几种有用的面向对象技术
为什么写这本书
随着软件工程作为一个行业逐渐成熟起来,越来越多的人意识到:团队领导(负责项目技术方向以及管理团队中其他工程师工作的人)对一个软件开发项目的成功起着至关重要的作用。
本书给软件开发团队的领导们提供了所需的帮助,使他们担负起领导项目的责任。这是一本很实用的书,包括了许多已经被尝试和检验过的建议和技术,能帮助领导们战胜常见的问题,并带领其他成员做出正确的决定,按时、圆满地完成项目。
这本书是为哪些人写的
本书是为那些工作要涉及到以下两方面内容的人写的:
* 需要做出有关软件产品的结构、设计或编码方面的详细决策,或亲自从事软件开发工作的队员。
* 领导、管理或监督开发软件的人员。
本书尤其是为那些第一次领导软件开发团队的人,或者那些觉得自己与人相处的技能不如技术技能那么好,并感到在人际沟通方面需要帮助和指导的人写的。
本书最适合于那些领导中型团队(4~8人)的人。但从某种程度上说,它也可用于只有一个人的项目的领导,或者用于较大团队的领导以及复合型团队的领导。
本书对实习工程师来说也很有用。本书并不只是要教授管理理论,也并非介绍各个领域的最新思想。本书只是推广那些在实际工作中已经证明有效的实践经验。
如何做一名软件开发团队的领导
一个真正好的软件开发团体领导需要有很强的技术能力,同时也要非常善于发挥其他人的能力。团队领导是一个独一无二的位置,它既需要精细的软件知识和技能,又需要超越细节,并具有更宏观的视野。
领导团队的方式对软件项目的成败有着决定性的影响。团队领导决定着软件的质量、技术决策的合理性、团队精神以及团队成员喜爱的激励方式。
成为一名团队领导迫使您从不同的角度看待软件开发。作为一名开发人员,您工作的好坏是根据您所做的设计和编码的质量来评判的。但是作为一名领导,则有两种不同的评判方法:
* 由您的老板进行评判。根据项目的完成速度、费用的高低、客户或最终用户的满意程度来评判。
* 由您的团队进行评判。根据您的决策合理与否、您与他人共同工作的方式来评判。
本书的目的是为了帮助您更好地完成以上的这些事情,从而使您从老板和其他团队成员那里获得更多的赏识和尊重。
领导软件开发团队是一项充满压力的工作,这项工作也存在风险。虽然它的压力或风险可能不如带领一个足球队那么大,但是它也有同样的紧张和压力,您要设法满足很多渴望获得成功的人们,而且一旦做错了就没有重新再来的机会了。
并不奇怪,这不是一件人人都能做好的工作。但当您做好了这项工作时,您也就得到了更多的回报。一旦您成功地领导了一个项目,您就希望继续做下去并一直保持成功。我希望这本书能帮助您获取和保持成功。
本书是如何组织的
本书是围绕着领导在每天工作中所面临的现实问题进行组织的,例如,“我该如何起草项目计划?”以及“我该如何赢得团队的尊重?”。许多现实问题既有关于人员方面的问题,也有关于技术方面的问题,本书把这两个方面结合起来,作为某个特定情景下的不同方面加以考虑,而不是当做完全分离的问题。
正如您从目录中所看到的,本书的结构按照一些主要方面的问题集合起来。所以,必要的话,您可以从某个特定方面的问题开始阅读。
各部分内容都是完整独立的,并且当提及与其他部分和参考书目有关的内容时会加以指明,因此可以按照任何顺序进行阅读。
关于本书中的职位名称,如“团队领导”和“项目经理”
软件行业没有一套被广泛认可的职位名称。不同的公司中的职位名称各不相同。本书中,我使用的是以下的职位名称:
* 开发人员:那些做软件开发工作的人。他们做出具体的技术决策,从事设计、编码、测试、文档编写等工作。他们对自己所从事的开发领域负责,但不必对整个项目负责。
* 团队领导:那些做出关于软件项目的结构、设计、编码等技术决策的人。主要负责整个项目的技术上的成功,指导和检查其他团队成员的工作,负责软件产品的质量;有广泛的、先进的开发经验,或许要亲自进行软件开发工作;在一个小型项目中,可能也充当项目经理的角色。
* 项目经理:负责计划、预算、与管理层联系、与客户谈判。可能受过技术培训,但是不做开发工作;在一个大型项目或跨领域项目里,可能要指导好几个团队领导开展工作;主要负责项目按时、在预算之内交付。
* 软件经理:开发人员的直接主管。负责招聘、解雇、培训和发展员工;同时也负责工作程序和工作规范;为组织设定策略性的技术方向;是管理团队中的一部分。
如果您的工作内容(或者您的部分工作内容)涵盖了前面所定义的团队领导工作,那么这本书就是为您写的。不论您是被正式地授予领导职责,还是仅仅负有部分领导职责,这些都不是很重要。您的职位名称也无关紧要。
这些职位的区别不是很明显。大多数的团队领导也做开发的工作。每个团队领导都必须做一些计划以及其他项目管理工作。本书中,我没有按照由谁来做这些工作任务而进行区分,我只是想尽我所能给那些需要的人提供最好的帮助。
联系作者
如果您想对本书的任何方面的内容提出评论,可以浏览作者的的主页:
www.richardwhitehead.com