四.相应的对策
1.工时研究与标准化
我们可以在这里引入泰罗的科学管理理论——工时研究与标准化。它不是简单地对每位开发人员完成一项任务作出时间上的统计,而是把一项任务分解成各种基本的步骤,并作测试,然后根据其合理性,重新进行安排,以寻求非常好的开发方式。采用工时研究的好处是,通过任务的分解,去掉无用的步骤,可以对高水平的开发人员在软件开发过程中的每一个基本步骤进行观察,并记录下完成每个步骤所需的时间。在所记录的时间上,再加上不可避免的耽搁和停顿所需的百分比,所得到的时间就是完成这个基本步骤的标准时间。项目经理可以以此作为评价开发人员业绩的标准。有了这个标准,开发人员就不用担心自己的努力得不到承认,“棘轮效应”也就不会发生了。当然,由于软件开发本身所固有的特性,这个标准不可能是精确的,开发工具的选取、开发环境的好坏、业务需求的清晰与否、软件质量的高低,等等,都可能改变标准时间的结果。
2.加强项目经理与开发人员的沟通
加强项目经理与开发人员的沟通是克服两者之间信息不对称的重要途径。在缺乏信息的情况下,任何高明的项目经理都难以客观评价开发人员的业绩。我们建议,除了在开发实践中自发的交流,项目经理还应有意识地抽取一定时间,召集开发人员进行沟通,了解开发过程中的问题,制定下一步开发计划;开发人员应严格按照软件工程的要求,详细记录自己所做的每一步工作,实现开发过程文档化,并提交项目经理,使其能清楚地了解自己所做的工作。在沟通过程中应该注意:提高沟通的效率,只沟通必要的信息;排除个人之间的成见;改善沟通环境,避免外界环境的干扰;沟通之后,对沟通进行追踪,了解执行情况。
3.建立长期的合作关系
虽然项目经理和开发人员之间长期合作关系是“棘轮效应”产生的必要条件之一,但这种长期关系发展到一定阶段就能弱化“棘轮效应”。在长期合作关系下,项目经理和开发人员都有足够的耐心来实现自己的利益最大化。一方面,根据大数定理,开发过程中的外生不确定性可以剔除,项目经理可以相对准确地从观测到的信息中推断开发人员的努力水平和能力高低,开发人员不可能用偷懒的办法提高自己的利益;另一方面,长期合作关系以保险的方式克服了项目经理和开发人员双方的风险,通过长期的合作,双方了解加深,项目经理不会坚持给努力工作或高水平的开发人员制定高标准(这样会打击他们的积极性);而工作偷懒或低水平的开发人员也不可能永远滥竽充数。因此,在长期合作的项目组中,初期可能存在“棘轮效应”,但随着时间的推移,“棘轮效应”将逐渐淡出。
4.采取有效的激励方法
消除“棘轮效应”的另一个途径是采取有效的激励方法,让所有开发人员都有积极性努力工作。莱瑟尔(Lazear,1979)证明,在长期的合作关系中,“工龄工资”制度可以遏制员工的偷懒行为。直观地讲,在工作的早期阶段支付的工资低于边际生产率,二者的差额等于一种“保证金”;当被发现偷懒时,偷懒者被开除,损失了保证金;因此,偷懒的成本增加,努力工作的积极性提高。当一个项目中所有的开发人员都努力工作时,所作出的成果分别反应了他们的真实状况,项目经理也比较容易从获得的这些信息中制定业绩评价标准。
5.引入相对业绩比较
另一个办法是使用他人的业绩,使开发人员业绩评价标准的建立不仅依赖于自己而且依赖于其他开发人员的业绩。即引入“相对业绩比较”。通过比较开发人员相互之间的业绩,反应出一定程度的各自努力水平,为制定相应的业绩评价标准提供依据。注意,“相对业绩比较”只适用于开发人员业绩相关的情况,此时它可以剔除更多的不确定因素从而使项目经理对开发人员努力水平的判断更为准确,既降低风险成本,又强化激励机制。在开发人员的业绩不相关时,参考价值不大,容易诱发项目经理的错误判断。
6.确保充足的统计量作为参考
在建立客观的业绩评价标准时,保证充足的统计量作为参考是一个很重要的因素,它直接影响到标准的准确性。 数据的主要来源应该是在软件开发过程中一点一滴的积累,而不是为制定标准临时杜撰的;其次也可以来自项目经理与开发人员之间的讨论总结;以及借鉴其他类似项目的历史数据。做好统计的关键在于开发人员要有良好的软件工程意识,理解做数据统计的意义;项目经理要鼓励并时刻督促开发人员完成这项工作,同时加强检查。
7.强调项目的整体利益
前面我们所提到的对策,都是从“理性人”的角度考虑的。现实中,人还有“道德”的一面,即所谓“道德人”。“道德人”是把项目的整体利益放在第一位的,即使明知努力工作会导致业绩评价标准提高的后果,只要对项目整体利益有益,他仍然会努力工作。因此,在一个软件项目开发过程中,项目经理要注重培养开发人员的团队意识,要树立整体利益高于一切的思想。如果所有的开发人员都是“道德人”,每个人都自觉努力工作,显然会是一个双赢的局面,不存在“棘轮效应”。
五.小结
上面,我们把研究重点放在项目经理与开发人员之间的“棘轮效应”。在软件开发中,项目需求方与项目承包方、部门主管与项目经理、项目经理与软件维护人员等等,都存在着“棘轮效应”。我们应该根据软件开发中各个领域的特点,研究出相应地管理方法,弱化“棘轮效应”。我们前面所提到的七点对策,具有普遍的借鉴意义。