1.5 用人之道
有句名言:“人分四类——人物,人才,人手,人渣。”
如果一个机构里上述四类人齐全了,那么最好是让“人物”当领导,“人才”干重要的活,“人手”干次要的活,“人渣”去骚扰竞争对手。
用人之道是极为复杂、极宽广的话题,为了避免迷失方向,本节把话题的范围限制在两个论点上:(1)如何组建软件开发团队;(2)如何管理软件开发团队。
本节所说的人是指在软件企业里工作的技术人员和管理人员,他们都是受过高等教育的守法律、讲道德的正常人,坏蛋和天才除外。
1.5.1 如何组建软件开发团队
一、组建团队的基本流程
组建团队的基本流程如图1-2所示,分四个步骤:首先要搞了解产品开发需求,从而确定团队的人员需求,然后物色符合需求的人才,最终建立团队。
组建团队的基本流程
团队的人员从哪里来?通常先在企业内部挑选,最大程度利用现有的人力资源。如果企业内部不能满足要求的话,再通过社会招聘获取人才。
团队的人员结构是金字塔形的,可以简单划分为三层:团队领导、核心成员和普通成员,如图1-3所示。比较合理的人员比例为:团队的领导不超过10%(当官的不能太多),核心成员占30%左右,普通成员占60%左右。
团队的人员结构
二、关于人才的几个观念
只有为企业创造的效益高于企业为其付出的成本的那些人,才是企业所需的人才。不能为企业创造效益的人才其实就是饭桶,不论其学历和职称有多高。
团队需要优秀的人才。软件开发是智力创作而非体力劳动,优秀人才的创造力比平庸之人要高得多,如果团队没有优秀的人才,几乎不可能开发出有竞争力的产品。优秀人才要价通常比较高,但是他物有所值。企业应该少招聘一些平庸之人,把省下来的钱投资到优秀人才身上才对。
但是团队中的优秀人才并不是越多越好,优秀人才太多反而有更大的弊端。一是人力成本太高,他们可能消耗掉产品创造的大部分效益,那么就不划算了。二是团队分裂的风险太高,因为团队的空间有限,无法同时满足很多优秀人才事业发展的欲望;当这个矛盾激化时,优秀人才的内讧将产生极大的破坏力。一山不容二虎就是这个道理。所以,团队中的优秀人才恰好够用就行。
一般地,让最优秀的人才当团队的领导,让次优秀的人才成为核心成员,让平庸之人成为普通成员。图1-3所示的团队结构比较“稳定安全”并且“经济实惠”。
三、物色团队的领导
软件开发团队的领导应当具备四项素质,按级别从低到高排列:不错的技术才能(一段),较强的管理能力(二段),丰富的产品开发经验(三段),敏锐的商业头脑(四段),如图1-4所示。
团队领导应当具备的四项素质
据我了解,目前大多数IT企业在物色团队的领导时,主要考察候选人的管理能力和技术才能。
对于搞技术出身的人,如果他能当上小头目,一般地讲他的技术才能不会太差,否则他岂有出头之日。然而即使某个人的技术水平是团队里头最强的,如果他不具备带领团队所有成员正确干活的能力(即管理能力),那么他就不能当团队的领导。
业界普遍认同的是,合格的项目经理(或相似级别的经理)应当具备较强的管理能力和不错的技术才能。那么对于项目经理而言,究竟是技术才能重要还是管理能力重要呢?
业界不存在判断准则,人们也没有必要过多地争论,应当视项目的规模和复杂性而定。如果项目的技术难度很高,但是规模很小,只有几个人干活,那么领导者的技术才能比管理才能更加重要。反之,如果项目的技术难度不高,但是规模比较大,只要团队成员超过十人,那么领导者的管理才能比技术才能更加重要。
企业在物色重大的团队的领导时,不仅要考察候选人的技术才能和管理能力,尤其要关注商业头脑和产品开发经验。
商业头脑是团队领导最重要的素质。有商业头脑的领导能够带领团队朝着最赚钱的道路前进,即使遇到一些坎坷,也无碍于最终的成功。反之,缺乏商业头脑的领导通常不知道产品的卖点是什么,却一味在技术方面下功夫,经常让团队干些不赚钱的南辕北撤的事情。
如果团队的领导有丰富的产品开发经验,那么他就能复用以前的成功经验,能够规避失败的风险。当项目遭遇一些意外困难时,他自己不会手忙脚乱,能够从容地带领团队克服困难。就如战斗中,存活率比较高的通常是队伍中的老兵,因为他们有丰富的战斗经验,而不是枪法比新兵好。
几年前我已经意识到“技术才能、管理能力、产品开发经验、商业头脑”是团队领导者必须具备的素质,只是四项要素的重要性刚好和图1-4的颠倒。自从我对某公司多个重大研发项目的失败进行调查分析之后,我就把四项要素的重要性顺序纠正过来。
近几年,该公司对几个重大研发项目总共投资了近亿元。每个项目的研发人员达百余人,研发经费千万元以上,结果这些目都以惨败而告终。有几个项目做着做着就无声无息了,有几个项目好不容易推出了产品,结果因质量太差而被客户退回。一度时间公司内部怨愤极大。我曾私下里做了调查分析,失败的原因有许多,最重要的一个共性原因是:
公司领导用错了项目经理。这些项目经理都是博士,在技术方面算得上是专家,管理能力虽然没有技术才能那么强,但是也有中等水平。最糟糕的是他们都缺乏商业头脑,缺乏产品开发经验,竟然拿大学里搞科研的方式在企业里开发产品,焉有不败之理。这些人没有成功地运作过几十万元、上百万元的资金,猛地一下子拥有千万元的经费,稀里糊涂地浪费了许多钱。最不应该的是,这些项目给公司造成了重大损失,似乎没有一个责任人认真反省过,从来没有人写过一篇总结为什么失败的文章。重大失败就如轻飘飘的雪花那样融化了,连个故事都没有留下。
不少企业干过类似的蠢事,同行们要引以为戒,尤其要当心那些拥有高学历、占据重要职位的败家子。
简而言之,如果你想成为普通团队的合格领导者,你应当具备不错的技术才能和较强的管理能力。如果你的抱负更大,想成为“将帅之才”,那么你必须具备丰富的产品开发经验和敏锐的商业头脑。
四、物色团队的核心成员
领导者应当从团队里面挑选出一些核心成员,为自己分担压力。不仅分派重要的任务给他们,而且也要给他们更多的利益。为了避免影响团结,领导者不必把“核心”与“普通”的标志贴在人的脑袋上,你自己心里有数就行了。
区别“核心”与“普通”的要素是“才能、责任心、忠诚度”。
让才能出色、责任心强的人成为核心成员这是顺理成章的,无需解释大家都明白。不少人对“忠诚度”有疑狐,觉得这是鼓吹“拉帮结派、玩权术”。
大家不必忌讳“忠诚度”这个词,世上没有哪个领导不“拉帮结派、玩权术”的,否则他怎么能够巩固地位、向上发展呢。只要他拉对了人、玩对了权术,这就是他的领导水平。
英名的领导不仅让那些才能出色、责任心强的人成为核心成员,而且还有魅力使核心成员忠诚于他,从而使团队越来越强,大家的事业发展越来越好。
反之,平庸的领导常常重用亲近自己但是才能平庸、责任心不强的人,当他自己陷入困境的时候,团队就树倒猢狲散。
五、物色团队的普通成员
连普通成员都要物色吗?
是的,任何成员都会对项目产生影响,有正面的也可能有负面的,所以团队领导也要用心物色普通的成员。如果把核心成员比作医生,那么普通成员就相当于护士,好医生加上好护士才能把医务工作做好。
选择普通成员的主要指标是“技能合格、安分守己、任劳任怨”。
技能合格是最低要求,因为招聘他来是干活的,而不是摆在那里看的。团队中技能不合格(没有用处)的人应当通通剔除,既便他是个老好人。如果项目要招聘程序员,而有一个落魄的博士前来应聘,他虽然写过许多文章却几乎不会编程,那么请他另谋高就而不要招来撑门面。
安分守己是指这个人比较老实,不搞破坏也没有非分之想。安分守己的成员让领导放心。安分守己向前一步就是任劳任怨,不仅让人放心而且让人感动。
任劳任怨是指领导让他干啥他就认真地干啥,即使很劳累、没有多少成就感,他也乐意。任劳任怨这种美德只有普通人员才可能具备,因为优秀的人才只会对自己追求的东西倾注热情,很少对上级指派的工作任劳任怨。
任劳任怨的普通成员虽然在事业方面成不了大器,但是很值得交朋友。朋友的远近是用情感而不是用功利来衡量的。无论你的领导才能多么出众,在你强盛时期,你要用心照顾那些任劳任怨的普通成员,让他成为你的朋友。而当你脆弱之际,他们会回馈给你友情,帮你走出心灵的困境。
小结:就如人们找对象一样,你极难找到心目中完美的人,你目前所拥有的其实就是最符合你的。在现实中,物色人才不要太挑剔,不要期望太高,甚至聚散离合都是正常现象,因为你不可能让所有理想中的好人全聚集在一个团队之中。重要的是利用现有的条件组建一支能战斗的团队,向目标前进并努力获取胜利。
1.5.2 如何管理软件开发团队
软件人员在读技术书籍的时候,可能学起来比较费脑筋,但学会后就很容易使用。而读管理书籍的时候基本上不会太费脑子,可惜看完了仍然不知道怎么用。书市上有许多项目管理和企业管理的书籍,常常让我们看得眼花缭乱、无所适从。久而久之,管理的学问被“高深化”了。
本节探讨“管理软件团队”这个话题,总结了一般性的规律,旨在创导一种“简单而有效”的管理方法,使普通软件人员都能容易地学会。
一、团队管理的目标与策略
团队管理的基本目标是:让所有成员有条不紊地开展工作,在预定的时间和成本之内,开发完成质量合格的产品,从而使企业和个人获得预定的利益。
团队管理的努力目标是:调动一切积极因素,努力提高产品质量、提高工作效率并且降低开发成本,使企业和个人获取比预定目标更多的利益。
团队管理的策略:大部分的管理工作是成熟的,有成功的模式可以套用,应当走规范化管理的路线;而另外小部分的管理工作可能是富有个性化的,并不适宜套用规范,那么应当采用超越规范化的管理方式。
规范化的正面意义是“稳定有序”,负面意义是“僵化死板”。超越规范化的正面意义“高效灵活”,负面意义是“混乱无序”。
团队管理既需要大量的规范化管理方式,又需要小量的超越规范化的管理方式。通常前者约占80%,而后者约占20%(注意80-20仅仅是参考数据)。
国内大部分软件企业的管理现状是:规范化管理太少了,非规范化的管理太多了,到处都是土匪游击队的运作方式。阻碍中国软件企业发展的瓶颈问题通常不是技术,而是杂乱无章的管理,这个共性问题值得业界人士高度关注。
二、规范化的管理
规范化管理有两层含义:首先制定工作规范,然后按照规范开展工作。
软件团队的主要工作包含了技术开发和管理,因此至少需要两类规范。一类是软件技术开发规范,它规定了如何开展需求分析、系统设计、编程、测试等工作;另一类是项目管理规范,它规定如何开展项目规划、项目监控、质量管理、配置管理等工作。上述通称为软件过程规范。
企业需要实用的、容易执行的,而非高深的、复杂的软件过程规范,制定这样的规范是一项颇具难度的工作。规范制定者首先要深入调查企业过程能力的现状,识别出薄弱环节,分清“轻重缓急”。再根据企业的实力(如资金和人力),确定过程改进的各个阶段目标,制定与目标相适应的规范。在参考业界推荐的过程标准或规范时,要舍弃那些听起来很先进但是对本企业无益处的东西,只选取对企业有实用价值的东西。
企业制定软件过程规范是为了帮助人们把工作做得更好,而不是存心与人们过不去。企业一方面要用行政命令和奖罚措施来强制实施软件过程规范,另一方面又要设法使员工们乐于执行规范从而避免流于形式。
作者已经创作了一套切合国情的通用的“CMMI 3级软件过程改进方法与规范”,命名为“精简并行过程”(Simplified Parallel Process, SPP)。SPP包含19个过程域、40余个规程、近60个文档模板。所有规程的“目标”、“角色与职责”、“启动准则”、“输入”、“主要步骤”、“输出”、“完成准则”和“度量”均已定义。SPP模型如图1-5所示。读者根据自身情况(如企业发展战略、研发实力等)适当地裁剪SPP,可以在最短的时间内建立适合于本企业的软件过程规范,大大降低研制规范的代价和风险。
SPP模型
关于软件过程规范更多的论述,请参考作者的另一本著作《CMMI 3级软件过程改进方法与规范》。本书后面的章节将解析软件工程和项目管理规范中蕴涵的道理。
三、超越规范化的管理
在团队的日常工作中,总有一些事情无法套用规范,因为干活的是活生生的人而不是机器。无法套用规范的管理并不见得就会杂乱无章,情况好坏取决于领导者的管理才能。
本节之所以用“超越规范化的管理”这个名称而不是用“非规范化管理”,就是想突出“超越”两个字。规范的东西通常是平凡的,普通人都能学会用;而“超越”则是不平凡的,它需要智慧。超越规范化的管理的精髓就是“知人善用”。
团队领导给成员们指派任务、制定进度计划是项目管理中的一项重要工作,属于项目规划过程域。一般地,规范化的做法是:
(1)先分解产品的功能,给出WBS(work breakdown structure)图;
(2)根据WBS图估算产品的规模(例如用代码行或者功能点来度量);
(3)根据产品的规模和团队的平均生产率,进一步估算工作量(如用人月来度量);
(4)根据工作量和团队的人力资源,确定人数和工作时间。
(5)最后把符合角色要求的人安插到具体的岗位上(即分配任务),并给出期望的时间。
上述做法比起瞎指挥好得多了,但是该规范并没有告诉我们哪个人最合适干什么事情,所以依据规范制定出来的计划具有统计意义上的合理性,但并不是最优的。软件开发是智力创作而不是体力劳动,给软件人员分配任务不能象对待民工那样随意。领导者可以不必深入了解民工A和民工B的技能,反正两人干的活都差不多。然而对于软件人员C和D,假设C很擅长于设计用户界面而编程水平比较低,D很擅长于编程而几乎不懂得界面设计,如果C和D的工作错位的话,那么将对开发工作产生严重的负面影响。
知人善用显然是超越规范的。直观地理解,“知人”是指领导者应当非常了解他的团队成员,包括知识技能和性格爱好等等。“善用”是指让团队各成员扬长避短,使团队战斗力达到最强。
人到企业工作,既要为企业创造效益,又要获取个人的利益。一般地,规范化管理的目的是使企业和个人获得预定的利益(实现这个目标已经相当不错了)。然而人的潜力是巨大的,卓越的领导者能够充分调动团队成员的工作积极性,使企业和个人获取比预定目标更多的利益,这也是超越规范的管理。
具体做法可谓五花八门,例如:如果经费充足的话,有些领导经常性地带着团队吃喝玩乐,美其名曰Team Building;有些领导以身作则拼命干活,希望下属效仿他成为工作狂。有些领导经常性地做员工的思想工作,企图让人相信积极地工作是人生最大的快乐。这些激励办法能否起作用只有天知道。
真正有效的激励办法就是利益驱动。利益有许多种,如金钱、地位、荣誉、成就感等等,不同的人在不
同的时刻追求的利益是有很大差异的。所以英名的领导应该为下属设计能够让他心动的激励方案(而不是千篇一律的),这样才有可能真正地提高下属的工作积极性。
知人善用的深刻含义是:
不仅用最合适的人正确地做最擅长的事,而且还要激励他做得更好。知人”是实现“善用”前提条件,如果领导不与下属沟通,没有真正关心下属,那么就不可能做到知人善用,实际上浪费了人力资源(团队最宝贵的资源)。