技术开发 频道

青润:项目管理中的心态对抗


3. 心态对抗解析
  为了说明这种心态对抗是如何产生的,前面我们对每一种角色在项目开发中所产生的心态进行了适量的描述,下面我们看一下这些心态的分析和对抗解析。
3.1. 项目管理者与程序员
项目管理者经常遇到的问题如下:
1、 项目周期紧,必须尽快完成,如何促使程序员能够积极高效地完成开发任务。
2、 工资低,程序员积极性较差,不配合。
3、 自己有一定的技术经验,但是对目前的技术不想插手表现,一个是担心自己的工作完成不了,另一个是感觉没有必要自己再写代码或者认为不想表现自己的技术水平了(前文中有对应例子)。
4、 程序员懒惰,不做事情(前文中有对应例子)。
5、 程序员经常丢三落四,不按照要求进行开发(前文中有对应例子)。
……
概括起来主要有下面几个问题:
1、 程序员待遇低(上面的2)。
2、 对任务的分析与程序员之间有分歧(上面的3)。
3、 程序员不配合自己或者积极性较差(上面的2、3、4、5)。
  项目管理者由于职责要求,必须保证项目按期保质保量的完成。而在实际情况下,几乎90%以上的项目都会延期(参看《死亡之旅》),其原因不仅限于上面几种,但本节主要是分析项目管理者与程序员之间的关系,所以外部关系和原因暂不考虑。

    对于第一个问题,这是涉及到公司整体管理的一个问题。当然,众所周知的是国内程序员工资收入水平是相对较低的,这个问题的解决往往是项目管理者没有权力做到的。对于项目管理者而言,你可以做到的是根据团队中程序员的表现向高层管理者反映相关情况,并获得高层管理者的理解,至少在项目周期内可以得到一定数量比例的月度奖金分配权利。这一点是很多公司在项目进行中都会采取的手段,既是老板很自私,他也会考虑到项目的进展和结项问题而在这方面做出适当的让步并给予项目经理相应的权力。而对于国内绝大多数的中小公司,只要项目管理者真得为团队内的程序员进行了争取,所有的程序员都会看到并会感激你,至少在你可控的项目进程中程序员会相对主动地配合你的工作,而不是完全地不配合或者完全的消极怠工。

    对于程序员而言,由于公司不是很大,基本上真实发生的事情大家都会听到并有所耳闻,他们如果看到项目管理者是这样在为自己争取、保证利益,任何不仅仅是程序员都会因此对你有一种报恩的态度,而主动地完成一些自己份额内的事情。

    对于第二个问题,这种分歧有可能会扩大化,也有可能消弥于无形,关键看项目管理者如何协调如何控制。要知道程序员尤其是优秀的程序员往往都会比较固执,他们会比较坚持自己看到的或者认同的观点,而不容易改变自己的认识去随意地附和他人的观点。项目管理者应该考虑到这一点,然后进行适当的让步,让氛围轻松下来,甚至可以考虑让程序员在一定的范围内进行自己所认同的实践。这样既体现了对程序员本人意见的尊重,同时也表现出了项目管理者的大度。而且,如果这个程序员的看法是正确的,项目管理者的认识因为自己没有进行实际开发工作而有一些偏差的时候,也就可以在一定程度上避免项目走入歧途。相反,如果项目管理者坚持己见(因为不少项目管理者本人也是或者也曾是相对优秀的程序员),那么这种对抗就会因为无法认证而持续下去,既浪费了时间(讨论的时间大大延长),也耽误了正常的项目进度。

    对于第三个问题,程序员的不配合或者积极性差的时候,项目管理者更需要详细地了解程序员本人或者包括他最近的行为以及家庭的情况,看看问题的关节点是在公司内部还是在公司外部。如果问题的关节点在公司外部,那不妨作为项目管理者或者程序员的领导,请这个程序员出去吃顿便饭、聊聊天,进行一下贴心的分析,让他感受到你对他的关心。而如果这个问题在公司内部,即使是看上去有些不合理的要求,也可以将问题进行记录并向高层管理者反馈并争取能够做到解决或者局部的解决。相反,即使你反应了,虽然没有解决,程序员看到你的确在真心实意地帮助他解决问题,帮他考虑事情,他对你的感激也不会少于问题全部解决。至少在你的项目周期内,他不会轻易地考虑辞职或者不负责任的工作。

    对于项目管理者而言,无论你曾经或者现在的技术水平多么高,只要你现在的位置不是在做这个模块的开发,那你就需要考虑一下协调工作和分析心态的事情。程序员不会主动来分析你的心态替你考虑,但是他会想你这个领导是不是真的在帮他考虑。如果是,他一定会感激你并配合你;如果不是,他也会反抗你。另外有一句话就是:站着说话不腰疼!这句话是说,不做事情的人都是站着说话的,干活的人都是弯着腰的。当然你如果不弯腰,你是不知道腰疼的,你的计划和考虑会和已经干了很长时间并感到疲乏的人有所差异!这时候,项目管理者的做法就会体现出他本人的管理水平!

    这里基本上结束了项目管理者与程序员的心态对抗解析,关于反面的教材大家可以从实际生活和工作中看到很多,这里就不进行无谓的罗列了!

3.2. 项目管理者与周边角色
    说完了项目管理者与程序员的关系,下面就需要说一下项目管理者如何与周边角色进行协调和管理工作了。

   首先我们来分析项目管理者和公司高层管理人员间的心态解析。

   项目管理者获得了程序员的要求以后,必须向高层管理人员反映,并期望获得高层管理人员的认同,以便于获得相应的技术和资源的支持,这样才能真正有效地解决程序员的问题,尽快解决软件项目开发中遇到的问题。

    对于高层管理人员来说,节约开支,留住需要的技术人员,尽快完成项目,保证合同资金能够及时收回,这都是很重要的事情。而节约开支与留住需要的技术人员之间是有冲突的,但是如果留不住需要的技术人员,那么项目就不可能尽快完成,而合同资金也就无法及时收回。

    而高层管理人员一般不直接接触技术人员,所以,他不是很清楚哪些技术人员必须留下。因此,项目管理者应该向高层管理人员阐述清楚自己为什么要这样做,为什么需要这些额外的奖金要求或者为什么需要给这些技术人员提高工资。

    如果项目管理者阐述不清楚这方面的理由,高层管理人员一定会拒绝项目管理者的要求,并且对项目管理者后续的要求也会产生怀疑,势必造成程序员心态的不稳定性,同时给正在进行的项目带来内部的风险。

    从这里我们可以看到,项目经理应该是一个具有很强逻辑思维和推理能力,同时具有可以清晰地把自己的观点表述清楚的口头表达能力的人员(关于技术能力不适这一节需要描述的内容,因此不在这里说明)。很强的逻辑思维和推理能力,这一点是几乎所有优秀的程序员都具有的基本素质之一。但是,绝大多数技术人员因为很少与外界接触,尤其是优秀的技术人员因为长时间面对机器而不是面对人,所以,口头表达能力都不是很强,甚至很多人的口头表达能力非常差。可以说,让一个优秀的技术人员写一段异常高难的代码,比让他去说服一个小学生都容易,甚至很多程序员根本就不愿意开口和别人说话。所以,中国传统的学而优则仕的观点在软件项目管理者的选拔中是需要特别小心的。IBM的非技术项目经理的定义,是我比较推崇的一种项目管理模式,这属于我定义中的弱势项目经理的角色,主要是承担协调任务,而不是强调管理。因为在中国,所有的人都喜欢这个“管”字,因为管下面是“官”字。如果一个公司的高层管理者能够选拔出能言善辩的优秀技术人员那是最好,这就是笔者项目管理定义中的强势项目经理。如果做不到这一点,那么,不妨把你们的项目管理角色分开,一个专门做项目协调工作的项目经理,另外是一个负责技术和实现把握的技术经理。这样,既能避免程序员本身的弱点,同时也能发挥程序员本身的优点。这个项目协调人员担任的项目经理可以是一个市场人员,也可以是一个管理人员,甚至可以考虑用能言善辩的美女(程序员大部分都是男性角色)来担任。

    说到这里,我们基本上不需要再继续后续的关于高层管理人员的分析了,因为那将超出本文的范围,下面我们来说一下项目管理者与客户之间的心态对抗解析。

    前面提到,弱势项目经理的主要任务就是协调工作,除了项目内部和公司内部的协调工作外,还需要在一定的时候协调与客户间的关系,甚至要辅助参与商务谈判的工作内容。

    项目经理在安排到客户方进行调研工作的技术人员之前,一定要到客户现场进行前期调查或者称之为“观察”,仔细看看客户方的人员情况和工作环境。比如说客户方大都是年龄较大的人,那么你需要安排一个“懂事”的程序员过去进行需求调研。而如果客户方大都是年轻人,就需要考虑安排会“玩儿”的程序员过去进行需求调研。当然,安排的这些程序员都必须懂得日常礼仪,懂得如何谦虚地和客户讨论问题,同时有相当的技术水平,不拒绝琐碎的工作,而不是过去指手画脚地指责客户的行为或者错误的判断。

    举个例子,笔者接触过的工作单位的一个研究员(海归)亲自到深圳某国家机关单位调研并进行设备的初步安装调试,期间,他居然直接指责对方的总工程师如何如何不懂。还曾对那位总工程师说:“你,把那个螺丝刀给我递过来”(说这句话的时候,他身边就站有两个他从北京带到深圳的技术人员)。对方虽然碍于面子按照他的话做了事情,但因为他的这种行为让对方极为反感,在他返回北京后,对方就要求立刻撤掉所有设备,如果不是相关市场人员的工作和高层管理层的介入,这个项目险些就此终止。

3.3. 程序员与周边角色
    程序员因为其工作的特殊性和生活环境,他们很少与外界打交道,在公司里面也主要和项目管理者以及相关的技术人员在一起。关于高层管理者如何留下公司需要的程序员的问题因为超出了本文的内容,也就不在这里继续讨论了,可能会在相关的后续篇章中进行分析。

    程序员与客户打交道的过程属于需求调研工作的内容,或者说带有部分市场工作性质的工作活动,限于篇幅也就不在本文继续讨论了。
0
相关文章