2015年11月17日

软件工作量和价值体现

作者 kevinwang

有不少软件公司的老板希望通过工作时间、工作量对于技术团队进行评价。作为老板来说,我出钱你出力,我要知道你干了多久编了多少行代码,这是很正常的,也理所当然,老板出钱员工干活,给公司回报。可能老板们认为,工作时间长、代码行数多,工作量大,就会对公司产生的价值就会大。

不幸的是,软件行业并不遵从这个规律,这是一个知识性行业,工作量大时间长,未必会给公司创造更大的价值,某些情况下甚至可能适得其反。更为可怕的事,一段时间内所谓的“进度快”,或者说大工作量,可能会给未来留下数十倍甚至更多维护成本的隐患。也有可能短时间内是较慢的进度,但是对于未来会节约几十倍的工作量。这些都是经过无数案例证明过的。也就是说,对于软件行业,工作量和工作时间并不能衡量所产生的价值,有时候可能一句话胜过几十个人月工作量,一个精巧的设计会避免未来不休止的维护,微观上的延期能够提升宏观进度,工作量仅是参考性的数据。

软件有两个重要的作用,一个是开源,另一个是节流。从开源角度说,软件能够打通人力所不能企及的壁垒和关联,提高交易效率和范围,迅速扩大影响面积,扩展视野和思维,提高决策效率,改造人所不能的行为,创造原来想都不敢想的商业模式;从节流角度说,软件能够缩短工作链条,减少时间损耗,使得办公不再局限于地理位置和时间。总之,软件使得我们这个社会生活和工作变成全天候模式,甚至有些时候显得无所不能。这就是软件的价值。这个价值没有工作量是万万不行的,但是仅仅有工作量更是万万不可能的,这需要高智力高素养的专业团队来完成。

而软件价值的评估,必须是由专业且有丰富经验的人进行评估和判断,这恰恰是很多老板不擅长的。老板们当然明白衡量投入和产出的价值,却苦于缺乏专业评判的手段,只能暂时通过工作量和工作时间来衡量“价值”了。

软件价值评估可以从对某个项目或产品阶段性的总体影响方面评估,例如,已完成了一个项目A,现在计划进行项目B,项目B相对A有20%的差异,那么如何进行项目B呢?工程师甲可能会采用copy然后修改的方式,工期1个月,工程师乙会首先评估差异性,然后在A基础上对差异性进行架构修改,增加配置和多元化的方式实现项目B,工期2个月。对于使用者来说,功能最终是一样的,但是对于软件公司来说,工期、工作量不一样,产品性质不一样,后期如果有项目C/D等等,工作量和维护难度不一样。综合评估,此案例是乙的方案更好,而且乙的技术能力明显比甲高一个层次。这里也引出了另一个话题,对于软件工程师技术等级的评估问题,也不是仅仅从工作量体现,而是涉及到能力、价值和影响等多方面的因素。

上述仅仅是一个简单的案例,在实际工作中还有更多评估软件价值、软件工程师能力和价值的方面。总之,工作量既不能表示软件价值,也不能体现工程师的能力和价值,需要从过程、性质、影响、质量等等方面综合评价。