分享

软件开发中的道德风险

 wanglh5555 2017-03-03

罗翔(北京软件造价评估技术创新联盟)

道德风险(Moral Hazard)是一个经济学术语,1980年代由西方经济学家提出。是指——人们执行活动,却不用全部或部分地为此活动的后果负责,所以会选择自身效用最大的自私行为。


要说明——道德风险不是道德败坏。

例如:一个十多岁的孩子刚考了驾照,通常都是其父母来买相关的保险。某些孩子在这样的情况下,就特别喜欢开车出去“撒欢”,因此发生事故的几率较大。而一旦发生了交通事故,明年的保险费率肯定就要上升了。

再例如:中层管理者在聘用新员工的时候,也或多或少要面临着这这样的风险,因为他也不能确定新员工是否真的能够胜任工作。


只要有经济活动,就难免会产生道德风险。


相比较于制造和建筑业,软件行业还是属于新兴领域,很多管理制度不科学,所以这种道德风险普遍存在。本文只讲“开发成本”有关的风险,其他的风险,例如——最根本的“需求风险”并不涉及。

 

理论基础

我们很多人都有写论文的经验,当教授在给学生们布置工作时,聪明的学生们肯定会问道:评分的标准是什么?

(1)字数

(2)句数

(3)页数


优秀的讲授肯定会说道:以上答案都不是,我看重的是内容。(看到这里,也许很多中国人,都会回忆起自己不幸的小学时光了——为了作文的页数和字数而努力拼凑)


在软件开发领域,也是同样的问题。对于软件产品的内容(价值)——如何来衡量?


软件行业的初步尝试,就是用“代码行”来度量。由代码行的数量来决定软件的价值,表面上看起来还是很符合逻辑的——代码行越多,交付的价值越高。


然而在现实中,这种方法有很多弊病:

(1)就像句子数量不能体现论文的内容;同样,代码行数也不能反应程序的内容。

(2)同样的内容,如果使用不同的开发语言,就有不同的代码行数。越是新的语言,所需的代码行越少。

(3)同样的内容,使用同样的开发语言,由不同的程序员来开发,最后的代码行数差距也是很大的。

(4)代码行数很容易“作弊”,很容易“虚假繁荣”。

 

为了解决上述方法的缺陷,在1970年代的后期,IBM公司的Allan J. Albrecht团队,研究并发明了“功能点法”(Function Point)。这套方法的逻辑模型,就是通过度量软件的“数据处理能力”——来度量软件的“内容”。这个数据处理能力,就是被称之为“功能”;计量的单位就是“功能点”。历经尽40年的实践,功能点方法已经成为了ISO标准。


功能点方法,与开发语言、程序员个人能力、代码行数都没有关系,它只关心“内容”本身。这种方法得出的结果,几乎不能被“作弊”。


使用这套度量方法,客户按“功能点”来买软件,就像按“斤”买苹果一样。


优秀的软件开发团队更喜欢使用这套方法来进行度量,因为得到相关的数据可以帮助团队很好地解答如下问题:

(1)每一个功能点的成本是多少?

(2)交付一个功能点,需要多少人天?

(3)交付软件的成本与速度,在整个行业中处于什么水平(即:行业对标)?

(4)如何更精确地控制项目的成本?


道德风险

第一个道德风险:团队拒绝进行软件开发的度量。

经过统计,团队拒绝的原因主要有以下:

(1)不想基于“内容”来度量;

(2)不想进行“行业对标”;

(3)不想被精确的预算所控制;

(4)担心度量不准确。


对于软件项目而言,开发团队是成本活动的执行主体,却不用为此负责。为此“买单”的是组织管理层,但是由于没有度量,就不能掌握项目的实际进展情况。

 

第二个道德风险:进行度量,但是方法不当。

很多组织是希望度量的——能够对软件开发的预算和成本进行量化管理。但使用了代码行法,而不是功能点法。


有些组织之所以选择了代码行法,还是出于对“度量”根深蒂固的偏见。这个风险在本质上来讲,还是软件开发团队不想担负“全责”。有些开发团队特别“推荐”代码行法,就是希望能够更方便地“操作”。


另外一方面,也反映出了——度量人才的缺乏。其实,很多组织是希望能够进行科学地度量,但是真正懂这方面的人才很匮乏——国外都匮乏,就更不要说国内了。


结论

产生道德风险的原因是什么呢?——软件开发团队的“经济利益”与“组织目标”相矛盾。就软件开发而言,“组织目标”之一,肯定是在项目预算内交付。但是,项目团队也许会受到这样或那样的影响,而不去实现此目标。


在现实中,无论是国内还是国外,软件开发超预算的情况非常多。而组织的高层管理者对此也是“百思不得其解”。项目团队负责花钱,而最后成本超支的黑锅却由管理层来背。


为了真正解决这个问题,高层管理者就应该将“经济利益”与“道德利益”的方向设为一致。


在实际操作层面,组织里应该有一个或多个“调解人”(honest brokers),向管理层去灌输和推荐科学的度量方法,也就是基于功能点的度量方法,在组织里,建立相关的制度,并不断升级。


以下是几条国外专家给出的“最佳实践”:

1、老板(Boss)要了解科学度量的基础理论,并建立起相应制度。一定要将度量的制度规范化,在组织中能够进行落地。

2、度量的团队能够直接(或有直接的通道)向老板(或老板代理人)进行汇报。他们一定不能被放置在组织的底层,否则他们的产出和建议会被管理层过滤掉。

3、软件开发团队也要接受功能点方法的培训。

4、度量项目实施成功后,度量团队一定要被及时奖励。


以上的内容,很多部分参考了美国Marymount大学Charley Tichenor教授去年8月的文章。在这里表示感谢。


西方文章如果是完全直译的话,有很多思路会觉得很奇怪。但是深刻去理解其“语义”,就会发现很多情况,东西方已经是共融的了。例如:西方人也一直在强调“一把手”(Boss)的作用。


这些年,我们的团队在国内实施了多个软件度量项目,对上述的最佳实践也是深有体会。



 

IT项目成本评估社区

分享IT项目成本评估的最新动态、专业技术及服务;分享企业优秀实践案例;发布行业最新基准数据

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多