在硅谷,流传着软件开发的两条铁律, 一是 over time 超工期,一是 over budge.超预算。既然是铁律, 那就是基本不会被违背。 软件行外的人, 甚至国内的软件开发员都不太相信这两条铁律。但结果往往总是被事实证明。有的人说, 那好办,我把工期定的长一些不就行了,本来只要2个月完成的,我计划4个月来做, 不就不会 over time了。实际上你会发现,就算是你计划6个月来做,一样 over time。只要你是在认真地发开一个有一定复杂程度的软件。
几年以前,我在国内的公司还在南方,我在美国给他们项目做, 是一个监控系统,用别人的监控卡和API,要求并不高,能工作就好,我从美国给开发员电话, 现在做的怎么样了? 还要多久? 回答说,还要2周。我说,好,我给你沈阳网页设计们 2 个月。结果这个项目做了2年也没有做好。
有朋友说,哈,那是你的公司水平太差。特别是软件工程水平太差。好,那我们来看看软件产业的老大,微软公司,微软财大气粗,软件工程师可以组成一个军。如果说微软软件工程水平太差,就像说中国银行缺少人民币一样。对吧? 但我们看看微软每次推出他的新软件产品的时间, 至少比他事先宣布的发布日期要晚半年以上,有的时候甚至要晚两年。像微软这样的大公司,宣布发布新软件产品的日期可不能忽悠大家,那要影响股票市场和整个产业的。 故意忽悠是要吃官司的。那微软为什么老拖工期?那就是他也没有办法突破铁律。 但微软为什么老拖工期而没有太大的麻烦呢?因为任何其他软件公司也都在拖工期。大家都想按时出来,但大家都按时不了。如果真能按时出来那真的要引起股票市场波动了。
就是微软发布了新产品,在产业界也没有什么人敢马上用来开发。大家都知道,微软新产品第一版基本上是垃圾,总要等到第三版才能用。 Wndows 到3。0, NT 到4。0,软件公司才敢在上面作开发。一开始全世界的电脑玩家就免费替微软做测试员吧。微软的window 95推出时在市场推广上是登峰造极的做宣传。微软在纽约时报上登全版广告,广告上说, window 95 的开发员和测试员为加班吃去了10万块pizza 比萨饼。 比尔亲自第一次出来在大会上演示 window 95,结果window 95当场蓝屏,全场哄笑,比尔也跟着打哈哈。 但从此比尔再没有亲自演示任何微软的新产品。
最近我的一个学生在国内一家著名软件公司替中国电信作项目,说拖了半年,电信很不高兴。 一个大项目,拖了半年很正常啦。 我知道的国内一家老大软件公司替国内一家老大电器公司作ERP, 拖了4 年了还不能上线。
这就叫 IT 陷阱,像 “人月神话” 说的,恐龙陷进泥潭了,越用力就陷得越深。俗话说, 炒股炒成股东,网聊聊成老公。非IT公司做IT项目则往往把自己做成IT公司了。
有的朋友可能会说, 我们的IT 项目都基本按时完成。 我不用去看,就知道你们是用已经成熟的软件产品在做实施,你们不是在做软件产品开发。
学院派或资源丰富的大公司会强调软件工程高端网站设计, 软件工程是一方面,但软件工程的完全效果那其实往往出在没有压力的R&D 项目上。现实中其实很多问题其实不是软件工程学的问题。很多实际情况下没法完全用软件工程学。 中国的erp实施就是很好的例子。最大的问题往往是需求方跟实施方扯不清楚。这里其他方面的因素更为重要。就是公司自己同时是需求方跟实施方的时候,也有很多问题。不然微软也不会老拖工期了。