济南软件开发之成本

2015-11-27 09:01:14
    很多公司管理层的想法:某年某月某日我拿到一个小项目,也就是所谓的私活。我把这个项目丢给某个人搞定,让他兼职美工、文档员、测试员,反正从头到尾他一个人搞定。我希望他花的时间越少越好,完成的质量越高越好,只要他不“叛变”,我一如既往的给他支付正常的工资(什么加班费,要加班,你得先申请,什么项目奖、年终奖,去做梦把。)
   上面说的是幻想,现实中也可以找到原型.
   爱因斯坦的能量守恒定律告诉我们,E = MC*C,就是能量=质量×光速的平方,理论告诉我们所谓的企业核心竞争力来自那个地方。
   做一个项目,如果软件成本是守恒的(由公司的软件团队实力决定),那我们得出一个结论 cost = quality × speed,就是开发成本  = 软件质量 × 软件开发的速度。开发成本是软件团队的实力,包括软实力和硬实力,大致等于这个团队的年薪。软件质量我想大家都知道,开发速度大家也知道。从中看出,在固定成本的前提下,要求软件的质量越高,就是quality越高,那么,speed就会降下来,那么相应的开发周期就越长。
    如果来了一个时间很紧的项目,要保证速度,就是完成时间,就得加班再加班,变相的提高速度,提高进度。以时间换速度,在人的注意力时间有限和精力有限的情况下,此是下策,会带来很多反作用。 加班的效率要比正常上班低很多,特别是不给加班费。造成的怨气会严重影响开发进度和质量。所以软件质量会被降低。加班会让程序员对软件产生怨恨情绪,对设计、性能要求、错误等得过且过。所有的软件工程理论都是要求质量第一。而且明确说明,反对加班以追求速度。 
    所以你的观点是错误的。成本是多方面的。不是简单的质量×速度。你把日后的维护成本刨除了。质量越差,维护成本越高。很多系统开发完成后,发现因为过分追求速度,造成维护成本居高不下。故障频发。最后只好重新开发,造成严重浪费。 
    所以,要降低成本,不能降低质量,也不能靠压榨程序员。要采用更加科学的开发管理手段、更加先进的开发技术框架来提高软件生产效率。而不是对程序员进行掠夺式剥削。