QCD怪圈
和其他工业一样,从经济角度上来说,软件开发注重三个重要的指标
Quality 质量
Cost 成本
Delivery 交货期
Q-C-D三个指标综合起来考虑软件项目是否成功。
质量 按照bug数量来测量
成本 按照投入的工时来测量(以后还会讨论《软件开发按工时收费的荒谬之处》)
交货期 按照交货时间来测量
一般企业在改进的时候总是困扰于一件事情:QCD三个指标无论如何都无法改进。
过去人们在用油纸伞,后来人们用折叠伞。
因为折叠伞在:
质量
成本
交货期
方面都比油纸伞有优势。
在其他的生产制造行业也有同样的例子,比如:电灯和蜡烛,打火机和火柴,等等,不一而足。
那么在软件行业也有这样的改进方式吗?答案是肯定的。
在软件的几十年发展史中,编程语言从最早的纸带打孔到汇编语言,再到BASIC,C语言,C++,再到Java.C#.Net,以及最近才流行的Ruby,Python,Groovy等等。
除了在编程语言方面,在集成开发环境方面也发生了巨大地变化。从单纯文本编辑器到Turbo C++编辑器再到C#Builder,Visual Studio, 以及Eclipse,IntelliJ IDEA。
版本管理工具也有很大的改进。从文本对比,到Visual SourceSafe,以及CVS,SVN等版本对比工具,乃至近几年出现的Git。
另外,可重用开发包也有很大的变化,比如:Struts,Hibernate。
可见,从工具方面经过几十年的变化,发生巨大地变化,这些对于软件开发的QCD三方面都做出了很大的贡献。
但是,为什么软件企业仍然觉得自己困扰于QCD呢?
1. 市场竞争
更多的功能,更早的上市会给企业在市场上带来更多的优势。
2. 成本竞争
成本上的优势能够给企业带来经济上竞争力。
3. 质量竞争
质量上的优势无疑会增强产品的竞争力。
那么,软件企业采用了什么方式进行改进呢?
1. 外包给更便宜的地区
外包的时候成本虽然得到了下降,但是质量也同时大幅度下降,为了修复质量问题,还要投入更多的精力。乃至于原本打算寻求的成本优势也不再是优势了。
2. 无偿加班
虽然以后将会讨论《加班费是赏恶罚善的制度》,但是这里先讨论无偿加班的情形。企业也是在竞争压力的情况下出此下策。虽然其本来目的是为了节省成本,但是实际效果是,由于长期加班,导致效率严重下降,进而导致交货期变长,成本提升,同时伴有质量下降。
3. 减少福利
具体方法略,这种方法的结果是增加离职率。
我们下一讲将会通过其他行业的改进来研究一下软件行业如何才能够跳出QCD怪圈。