【IT168管理分析】
话题目标
这个话题是针对企业管理者而提出的,本文的定位在于给企业管理者一个心理分析的启示,这个启示应该有助于您做好项目管理工作,让你的项目进展得更为顺利,让您的项目管理者不至于过于为难而无法开展他的工作,同时让所有的开发人员具有更大的工作积极性。
1. 引言
项目管理在当前已经是一个被所有人都了解并熟知的概念,不过,当大家提到项目管理的时候总是会说计划、管理、人员、资源、任务……从来没有人提到过心理这个词。相信很多人都看过温伯格的《程序开发心理学》,也许很多人都认为程序开发心理学到这里也就足够了。其实,温伯格的《程序开发心理学》只写了程序开发中的一部分,那就是程序开发中的程序员心理学,而实际上,程序开发心理学或者推而广之的软件项目开发心理学里面应该至少还包括投资者心理学和客户心理学这两个部分。
有人会问:客户的确和软件项目关系很密切,但是投资者和软件项目似乎关系不大,所以认为应该不需要考虑投资者的心理。这里的投资者的定义与传统意义的投资者定义有所差异,这里的定义是根据环境不同而定义的,一种是在公司内,那么你的高层管理层就是这个项目的投资者,他们虽然是从客户那里拿到钱来做这个项目,但实际上,他们也在衡量拿到的钱和做这个项目的开销之间的比例关系问题,如果不合适,他们也会中止你的项目的。另一种,是你找真正的投资者,或者称之为风投,天使投资人来投资你的软件产品的时候,这时候的投资者的心理也同样会对你的产品开发过程产生影响。所以,投资者心理学也是必须研究的一个问题。
好了,到这里,我们谈到了关于心理学的问题,心态对抗的话题好像还没有引入。下面我们来一步一步分析:
既然有了投资者心理学、客户心理学和程序员心理学三个部分,而对于项目管理者或者说项目经理也有他本人的项目管理心态,或者称之为项目管理者心理学。这四个心理学合起来,就是完整的程序开发心理学!
四种人的四种心理之间因为软件项目的存在而相互碰撞,这样就必然产生了心态对抗的问题。这种心态对抗如果处理不好,结果就可能会让进展很顺利的项目面临危境,而如果处理好了那也许能让濒临绝境的项目起死回生。因此心态对抗或者说心态分析也就成了这个方面的重点研究内容了。
鉴于本文的篇幅和时间,这里不可能将这四种心理做非常完整的分析,在第一篇文字中我们已经有针对性地进行了项目管理者/程序员的心态分析和项目管理者/程序员之间和他们与周边角色之间的心态对抗,本文将针对企业管理者进行一些心态分析和研究,其它内容将来可以考虑在后续的文字中进行一些探讨。由于本文是针对企业管理者的,那么企业盈利就是其首要任务,为了企业能够盈利,他必须保证项目可以及时、高效地完成,在客户那里他可以得到更多的合同/订单,所以这里我们主要做企业管理者心理学与项目管理者/程序员心理学之间的对抗分析。
范围限定:本文以及相关文字主要针对软件研发公司,对于销售公司和其它类型的软件相关企业本文不考虑兼容性问题,可以借鉴,但是请不要照搬,因照搬产生的相关责任请自行承担。
2. 角色定位
在一个公司中,有如下角色:企业管理者、项目管理者、程序员、其他人员。公司的外围主要是公司的客户。
2.1. 企业管理者
正如前文所说的,企业管理者的终极目标是:保证企业持续的盈利。
为了这个目标,企业管理者必须做到留住必要的员工,减少不必要的开销。其实,留住必要的员工要比减少不必要的开销相对容易,但是,很多企业管理者却为此伤透脑筋,他们反而认为减少不必要的开销更容易。这里我将用我认识的一个朋友的情况来
举例说明。
注:我的观点并不是这个做公司老总的朋友完全赞同的,不过,这并不妨碍我把我认为的观点和考虑写下来和大家讨论。
案例介绍
公司背景:
一家成立了5年的公司,前身是一家国内做通信的老牌公司,目前核心成员5人都是股东,大部分都是技术出身。目前主要市场在通信、电力、安防行业方向。和我关系较好的这个朋友也是5个股东之一,目前主要负责市场。
事件说明:
有一次他很郁闷得从山东过来找我聊天,就提到一个问题:如何留人。
他告诉我(下面都是他的原话的真实意思,但并非完全照搬,毕竟我没有那么强的记忆力),他们公司做的是一部分作软件平台开发,一部分作硬件开发,而软件平台开发的这批人他想换随时都可以换,因为这些人比较容易招到。而做硬件开发的这批人,在山东太难找了,他培养一个人花费了三年时间,结果,这个人前几天(2006年的某一天)再次向他提出要走,他没办法了,立刻从深圳回到山东。周六,打电话约这个员工出来吃饭,吃了三个多小时,闲聊,谈生活,聊工作。最后问他,有什么想法……最后,那个人说不走了,继续干。他才放下心来。但是,这个人已经是第二次提出了,这让他很担心,万一哪天这个人真得走了,怎么办?他做的产品就没人做了,他的工作没有人能够承接。
他说,虽然他那里的技术人员都有备份,但是,这些备份大部分年龄偏大,现在都是在做管理事务(后面的话他没有多说,话外就是说,这些备份也未必有效,或者说是根本无效的)。
后来他的公司推出了措施,凡是在公司工作满多少年,级别达到某种程度的,一律可以向公司申请10万元无息贷款来买房,今后每个月在工资中扣除相应的贷款按揭数量。另外还准备为员工提供同类的买车或者其他服务,但是,要求在按揭期限内,不得离开公司。通过这种手段,帮助了他稳定了一些技术人员。
但是他还是一直忧心忡忡,总觉得这样也不够放心,但他也找不到更好的解决办法。于是过来问我如何解决。我给了他我认为的一些解决方式,不过有些点他并不是很认可,不管怎么说,至少对于技术人员来说,我的方法应该是足够贴心的,但对于管理层来说,是否能够得到认可的确是需要时间和磨合的。具体的建议将在后文中逐步介绍。
在第一篇中,我也举过一个类似的例子:
一个公司开发人员只有6个人,如果走3个人,又新招3个人进来,公司的技术实力就会发生很大的变化。如果6个人全换了,公司的技术实力就由新来的这6个人决定,我想问怎么避免这种情况,怎么能够使公司的技术实力,不随技术人员的变动而变动?或者尽可能的减小影响?
这也是一个类似的技术人员变动的例子。
这两个例子都表达出一个观点:高层管理者为了公司的利益一定要让整体技术力量能够稳定并发展,而不至于后退。同时,能够通过公司的技术力量及时地为客户供货,完成客户方的合同和订单,这样来保证公司的收入和整体利益。
这里面其实是一个关于企业管理者与员工之间的心理对抗问题,对于企业管理者来说,就是要知道员工是如何想的,这样才能有针对性地提出自己的对策,才能留住自己需要的员工,当然,同时也会送走自己不需要的员工。
其实,真正的解决之道,应该是将时间消弭于无形,在事态发生之间就将事情解决,这才是最高的管理哲学或者可以称之为管理上的王道。要做到这一点实在太难了,后面文中还会举出一些相关的例子,都是在最近发生的。本文也将针对这些例子提出企业管理者的具体考虑和做法的建议。
2.2. 项目管理者和程序员
这两个角色的定位分析请参考第一篇:《项目管理中的心态对抗》。
2.3. 周边角色分析
周边角色,就主要是客户和公司的投资者。
对于客户来说,主要是关心来找我调研需求的人是否能让我看顺眼,另外就是产品做出来是否好用,是否既能提高效率又能节省人力。
公司的投资者只会关心公司是否盈利,当然,也会考虑在真正遇到经济不景气或者较为严重的问题的时候,出手来帮助公司解决具体的问题。毕竟公司的存在与发展才是公司投资者的利益最大化倾向,除非他获得了比这更大的报酬。
3. 心态对抗解析
为了说明如何这种心态对抗是如何产生的,前面我们对每一种角色在项目开发中所产生的心态进行了适量的描述,下面我们看一下这些心态的分析和对抗解析。
3.1. 高层管理者与项目管理者
要讨论高层管理者与项目管理者之间的关系,首先要了解程序员的心态,只有这样才能让项目管理者理清自己的位置,才能让高层管理者明白项目管理者为什么如此思考问题。关于程序员的心态请参看第一篇中的2.2节和3.1节的内容。
在项目进行中,项目管理者经常遇到的问题如下:
1、 团队内部分或者全部程序员待遇偏低,领导不给涨工资。
2、 对任务的分析与程序员之间有分歧。
3、 程序员不配合自己或者积极性较差。
4、 在其位而无实权,没有基本的奖惩权力。无法对程序员的积极工作进行表彰或者错误进行惩罚。
5、 担心项目中主要技术人员在项目进行中发生变动。
6、 ……
而在项目进行中,高层管理者除了正常的管理工作外,会有如下担心:
1、 项目进展是否顺利,能否按期交货。
2、 按期交货,能否保证运行质量,让用户少提意见,尽快付款。
3、 项目成本不要上升,最好能按照预计的进行,或者更多地节约。
4、 项目经理不要在项目中拉拢帮派,以免公司被架空,发生更大的危险。
5、 ……
总之,项目经理是从项目层面上考虑团队/项目的管理问题,而企业管理者是从企业盈利的角度来考虑项目管理问题。
从上面来看,可以看出两者的想法之间有不少冲突点,这里列举如下:
1、 项目管理者的1和高层管理者的3;
2、 项目管理者的3和高层管理者的1、2、3;
3、 项目管理者的4和高层管理者的3、4;
4、 项目管理者的5和高层管理者的1、2、3;
项目管理者由于职责要求,必须保证项目按期保质保量的完成,而在实际情况下,几乎90%以上的项目都会延期(参看《死亡之旅》),其原因不仅限于上面几种,除了在第一篇中已经分析过的项目管理者与程序员之间的关系,本文重点分析高层管理者与项目经理之间的关系,所以其他外部关系和原因暂不考虑。
3.1.1. 第一个问题分析
对于第一个问题,这是涉及到公司整体管理的一个问题,同时还会影响到项目的成本,所以,直接和高层管理者关注的第三点相冲突。当然,总所周知的是,国内程序员工资收入水平是相对较低的,这个问题的解决往往是项目管理者没有权力做到的。对于一个优秀的项目管理者而言,他往往会根据团队中程序员的表现向高层管理者反映相关情况,并期望获得高层管理者的理解,至少在项目周期内获得一定数量比例的月度奖金分配权利。但是,在提出这个申请的同时又会触发高层管理者担心的第四个关注点的产生,因此,项目经理往往很难得到这样的支持。这就是冲突之一!
其实从正常的心态分析,一个优秀的项目管理者不会脱离公司来做一些事情,对于每个程序员来说,他拿到的额外的工资奖金是公司发给他的,项目管理者虽然起到了一定的促进作用,而如果没有公司高层的理解和体谅,他也明白自己是不可能拿到这些的。
在团队内如果只是部分程序员收入相对偏低,那还可以理解,对于项目管理者来说这方面的压力并不是很大。而如果普遍偏低,那带来的后果,虽然因为人的适应性可以调控,但是,却不会因此让人保持沉默。可以说,在普遍的低收入状况下,人遇到机会,是会选择新的机会的,哪怕新的机会并不一定有什么新的好处和更好的未来,至少对于任何一个人来说,都会憧憬新的机遇能够带来相对较好的未来。
一个不负责任的项目管理者会带着团队在自己承接的项目过程中跳槽离开。而一个优秀的项目管理者永远不会劝说自己团队内的技术人员在项目进行中辞职!但是,他会劝说得到不公平待遇的技术人员在项目结束后辞职!这并不是说他对公司有二心,而是他作为一个人,作为一个优秀的项目管理者应该做到的对上和对下都负责的处世方法。公司的高层管理者必须体会到这一点,并且体谅这个项目管理者的做法。因为只有他的这种做法才能在最大限度内保证公司当前进展的项目得到最高效的完成,最大限度范围内的降低公司的开发成本。
如果真的是公司运营和经费问题,高层管理者应该放心地将这些问题和项目经理进行商谈,你既然敢把一个项目组交给他来运作管理,你就应该敢把公司的危机问题也告诉他,要知道,一个项目的失败可能会比公司财政危机的现状泄露更危险,而如果你不能信任这个项目管理者,那你就更不应该把团队交给他来管理了。
3.1.2. 第二个问题
这个问题和高层管理者无关,只和程序员有关,这个问题的讨论请参看《》,本文不再叙述。这里只需要补充一句,如果这个问题项目管理者都不能合理的解决好,高层管理者似乎应该反省一下自己,是不是选错人了。
3.1.3. 第三个问题
程序员的不配合和工作积极性差将会导致项目任务的延期完成,整个项目进度的拖延,同时带来交付日期的延后,往往因此根据合同,客户方也会延缓相关合同款项的支付。这种延期必然造成项目成本上升,客户的满意度下降和合同履行延期等问题。
这个问题上,高层管理者一般都会支持项目管理者的做法,来促进团队内程序员的工作积极性,但是,相关的原因可能会涉及到很多方面,如果是技术方面的问题,项目管理者必须有能力来解决或者协调解决的,而对于非技术方面的问题会在其它几个方面做出讨论,这里就不再继续了。
这种情况下除了正常的解决途径外,如果是因为长时间开发任务使得技术人员过于疲劳而产生了工作任务延期的问题,可以考虑我下面这种方式:
在开发进度遇到延迟的时候,可以考虑给所有的开发人员更换一个开发环境,因为,当一个人到达一个新的工作环境的时候,往往会因为外界的刺激,让人的神经在两到三个月内保持相当高的兴奋度,这种兴奋度可以在一定程度上与人对周围环境的疲劳度进行抵消,让技术人员持续高效地完成一些开发任务。
这个建议我提供给我那个合作方公司的总经理朋友后,他很高兴,他说他们在威海有足够多的场地,可以将公司总部的技术人员调动到那里去做开发,这是个很好的建议,他回去后立刻就去实施。
3.1.4. 第四个问题
这个问题是中国最常见的项目管理者的困境,这也是很多公司不敢轻易解决的问题。甚至可以说,很多项目最终失败的原因并不是选择的项目管理者有问题,或者技术人员有问题,而是因为这个问题没有解决好带来了负面的效应造成的。
最有效的管理方式莫过于奖罚分明,而奖罚,在公司里面能做到些什么?我们可以考虑一下。
可能的处罚措施基本罗列如下:扣工资/奖金、延长加班时间/减少休息日、训斥、体罚、打骂、辞退……
这里面延长加班时间/减少休息日对于程序员来说简直不是出发,就是日常工作状态,剩下的除了扣工资/奖金、训斥、辞退这三个意外,其他的都是不可行的。而辞退,对于一个仍然对公司有价值的程序员来说,是不能轻易实施的,要知道,开发组本来人手就不足,还敢辞退?是不是不想完成项目了?那剩下的就是扣工资/奖金、训斥这两种手段了。
扣工资/奖金,怎么扣?如何扣?扣多少?这都是一个问题,扣多了,人家辞职了,你就成了变相的辞退,对项目不利。扣少了,人家怠工了,本来收入就不高,还要扣除,结果仍然等同于辞退。于是,项目经理的手段就减少了,只有训斥,那我们来看看训斥的结果。你项目管理者技术很牛,说话让人家信服,那你训也就训了,大多数技术人员都不会反抗,因为你说得有道理,他会反省自己,但是,如果你的技术不够牛,不能让人信服,那后果是什么,几乎所有做过项目管理工作的人应该都能想象到的。
可能的奖励措施基本罗列如下:增发奖金、增加休息日、公开表扬、提职加薪、请他吃饭……
这里一般来说提职加薪是没有什么可能的,因为你只是个项目经理,没有那么大的权力。
请他吃饭,这是可行的方法,但是,如果让你花自己的钱请他吃饭,你是不是觉得有点亏呢?而公司给你的待遇也不够高的情况下,公司又不给你报账的情况下,或者说,公司也在同时压低项目管理者本人的收入,那你还能有心情为了公司的事务自掏腰包请别人吃饭么?
公开表扬,这也是可行的方法之一,但是,光是口头表扬,其实意义不大,所有的技术人员都已经很清楚这种空头支票的价值几许了。
增加休息日,这个方法看似可行,但是,实际想想,你能增加几天?少于两天的话你可以回想一下:这些程序员每天增加的加班时间是多少?他们被占用的休息日有多少?增加休息日的价值大么?很多时候对于程序员来说,休息日本来就不存在,尤其是增加的,连找朋友聊天都没人,就一个人在家里睡大觉么?更没有意思,所以,增加休息日的方法,真得可行么?而你增加超过两天,高层管理者能同意么?
那最后一个办法,就是增发奖金。一提到钱,大家都会感兴趣,至少对于我们这些收入微薄的技术人员来说,不可能不感兴趣,大家也会认为这是最实在的表扬方式了。这里就遇到下一个问题:高层管理者是否同意增发?毕竟这种奖金是额外增加的,对于项目来说,将会造成项目成本的提高,对于公司来说将是一个额外的成本开支。但是,发不发,是一回事,发多少好像又是另一回事。
这里我列举一个我曾经经历的公司的政策制度:
当年那家公司为了激发技术人员参与项目的热情,在月初发布了一个政策,允许项目中对部分人员进行高聘。也就是给这些技术人员一个短期内拿到较高工资的机会。当时大家听到以后都很激动,都觉得公司在为我们考虑了。要知道,当时很多人正在因为半年一次的提升机会数量过少没有机会提升而感到不满。
可是,在下个月初上报项目高聘工资之前三天,公司发布了新的政策,内容说,一个项目组中的高聘人员不能超过项目总人数的5%(具体数字记不大清楚了,但绝对不会超过10%),高聘最多高聘一个级别,然后又在部门整体的高聘人数上进行了一个限制,每个部门的高聘人数比例不能超过3%(比前一个数字低),后来又增加了一条:高聘的理由必须经过专家委员会的审核,通过后才能得到高聘,同时,每个月都要重新申请一次。
于是众人哗然!然后在项目中,有个项目经理直接给自己办理了高聘,理由很充分,如果我的工作都没做好,整个项目自然更不会好。另一个项目组中,项目经理没有给自己做高聘,而是给下面的两个弟兄作了高聘,而其中一个后来因为部门总人数比例超标,被取消了高聘资格。
3.1.5. 第五个问题
如何稳定项目组中的主要技术人员,让他们安心的在项目中努力工作,这个问题相对于前面的问题会比较容易解决,主要的重点在于,项目管理者如何向高层管理者解释清楚,这个人为什么重要!只要能说明这个问题,高层管理者至少都会表示体谅的。
这里应该举一个前面提到的例子:
我那个合作方公司总经理的朋友对我说他一直很担心。于是,他们公司推出了一项新的政策:在公司工作满三年的员工,如果需要买房结婚,公司可以提供10万元无息贷款,在5年内按月从工资中扣除归还公司。后面他还打算推出相类似的政策支持员工买车和其他大件消费品。
他说,通过这种方式,他留下了几个技术人员,终于有一点安心了,但是,还是经常遇到问题,比如这次提出要辞职的那个做硬件开发的技术人员,就再次让他头疼了很久。
于是,我给他提出了我的建议,不仅是软件开发,硬件开发也是一样,都可以参考我的交换编程的概念,来进行人员备份工作。但是,他对此却产生了异议,并说,在他们那里找到一个合适的技术人员很困难,好的基本上都跑到北京、上海、广州、深圳了,所以,让他找个这样的人员来做交换,难度太大了。他前面的技术人员也都是自己培养了三年多才培养起来的。
这里面其实就涉及到一个问题:公司对员工的投入是否能够让员工感到安心并产生报恩的感觉,中国人自古就讲“义”字,其实,除了正常合理的金钱支出外,通过管理方式,尤其是人与人之间的沟通交流,是可以解决大多数问题的。
而我这个朋友一直都是把员工当作员工,并没有当作自己的兄弟来看待,这也是他对这些下面的技术人员严重不放心的原因。他给我说,如果这个人到了一定程度,可以被他认为吸纳作为兄弟的时候,他才可以放心得如何如何。而这句话,我没有当着他的面反驳,因为我觉得他的思路进入了一个误区,这个误区就是:并没有真心地和下面的技术人员交心,表面文章做的比实质得多。因此,我后续的考虑和建议,也就没有更多的对他提出了,因为他的兴趣主要在如何为企业直接盈利,而不是如何长期的保持企业团队的技术稳定和发展状态上。随后,我和他的合作也产生了一些分歧,我就没有再和他续签后续的合同,虽然他每次到北京还是会过来请我吃顿饭,聊聊天,但是,我却感觉,他的公司不是我能够完全认同的公司,不是一个能推动我所认同的整体的管理思想和方式的场所——其根本原因,就是因为企业高层管理者对员工的本质想法。
3.1.6. 汇总
上面这几个问题其实更深层次的问题就在于,公司是否足够信任项目经理的管理操作,对于高层管理者来说,他也很担心项目管理者在公司里面拉帮结派,形成自己的独立实体而与公司对立,但是,他又希望项目管理者能够留下这些技术人员和他们搞好关系。其实,对于高层管理者来说,他本人也喜欢使用自己熟悉的人,中国历来都有一朝天子一朝臣的说法,不拉帮结派,怎么搞好关系?怎么才能团结人?
这里顾虑的深层次原因有两点:一是高层管理者对程序员的心态不够了解,二是过于顾忌项目管理者的人际关系好可能给公司带来的不利因素,却没有考虑到另一个方面。
程序员的心态相对来说是传统的中国文人/技术人员的心态居多,更多的是
只有项目管理者的人际关系足够好,才能让技术人员和他交心,才能在足够的程度上稳定公司的项目团队。其实,高层管理者更应该反过来思考一下,既然项目管理者有能力将团队内的人员稳定住,这对你难道不是一件简单的事情么?本来你需要应对整个项目团队的单一的个人的去留问题,每个单一的个人都是你必须考虑的问题,而现在,你只需要考虑一个人,就是项目管理者自身就可以了,解决好他的问题,他就可以帮你留住整个团队,保证你的项目实施。相反,如果他留不住项目组中的技术人员,无法团结他们,这时候才应该是你高层管理者真正担心的事情。对于管理问题,将矛盾集中于一点进行解决,比矛盾散播于多点的解决方案要简单得多,往往不需要全部解决,只要部分解决也一样能极大的缓解矛盾冲突。这和写代码不一样,写代码更倾向于将接口简单化,而不是将所有的接口集中于一点。反过来想一下,如果你这个高层管理人员都不能留住自己的下属(项目管理者),你怎么才能让他留住自己团队的技术人员呢?
对于一个软件公司来说,技术人员就是广大的劳动人民,如果没有了技术人员的存在,你这个公司再好,也就是个倒买倒卖的,不可能做大,善待你的技术人员,这样才能保证你的舟不会轻易颠覆。
给你的项目经理以一定的权力,让他可以对项目组的成员进行奖励和处罚,要知道,平时的加班已经是一种违反规定的处罚方式了,因此,为了团队的工作积极性和稳定性,付出一些小的资金来奖励一些技术人员也是应该的。
3.2. 高层管理者与程序员
这方面的内容在第一篇中进行了相关讨论,这里就不作补充了
3.3. 高层管理者与周边角色
高层管理者与周边角色的关系主要是在于市场推动活动以及相关的资源信息管理上,或者说带有很强市场性质的工作活动,不属于本文的重点讨论内容,限于篇幅也就不在本文继续讨论了。
4. 总结
本文从四种角色进行了软件项目开发过程中的心态对抗分析,同时着重对高层管理者和项目管理者进行了深入的心理分析。一个软件技术企业能否走得很顺利,其核心重点有两个,一个是市场上的项目和合同签订情况,另一个就是其技术团队的稳定性和发展性,这两者,缺一不可。而国内的企业大都强于前者而弱于后者,更主要的原因虽然是很多企业高层管理者并非出身技术,但是,他们的想法和思路往往会决定他们是否能够留得住企业内的主要开发人员。这也就决定了他们的团队是否可以顺利地完成项目,如何让项目管理者如何在项目进行过程中留下技术人员并激发技术人员的工作积极性的问题。
讨论到这里,本文也就基本上告一段落了,如果本文的内容能够得到一些公司的认同和采用,那么本文的目的也就达到了。只希望国内能够多一些百年老店,少一些一次性作坊。多一些关心技术人员的企业,少一些恶性盘剥技术人员的公司。