程序毛病的代价

程序毛病的代价

我在CSDN这么久,都没有看到有关程序毛病出错所造成的代价,那我就写一篇,作为教学参考。一个搞软件开发的公司,为什么需要测试,为什么不能直接开发,然后直接交货。开设一个测试部门要花多少钱,我还是让开发者自己进行测试。 我想降低成本,所以我就让前台小姐,搞卫生的替我搞测试。嘿嘿,看官可能都看见过这些问题。没有一个专业的测试队伍,面对未发现的软件毛病是难以想象的代价,代价是什么就是丢到海里的钱,连个声音都没有,捞也捞不回来。
 
我们搞测试的,都多多少少看到一些专家写的有关为什么测试是软件开发过程中重要的一部分的文章,这些文章的内容无非是假设一个程序员每小时的工薪是XX美元,一个毛病的维修时间为A小时,然后质检每小时的工薪是YY美元,检测毛病已被修好的时间是B小时,所以在开发中检测并维修好毛病的代价是XX * A + YY * B。但是,出现在已交付的产品中毛病要花费更多的代价:XX * A’ + YY * B’ + (其他费用诸如:客户反馈到开发者的时间和费用,修好后要进行更多的测试,然后要构建新的产品,然后要包装并交付给客户,这些用工薪和时间来转换成代价),所以维护已发布的产品的代价是很高的。同样的道理,在开发周期里,越晚发现的毛病,越是复杂,需要花费很多的时间来查找原因,找最好的对策,花费更多的时间来测试新的Patch修复了毛病,同时不造成更多的问题,这些用工薪和时间外加其他资源费用来计算也说明越晚出现的毛病,维护的代价也越高。在现实中,这些代价都是可以估计的代价,在现实中除了这些有形的代价,还有很多无形的代价是无法估计的,越早发现毛病并进行维修,质检就能避免许多开发中不必付出的代价。
 
让我用一个真实的故事来描述一个软件中的毛病能够造成的有形代价和无形代价。大学毕业后我在911的废墟萧条经济里找到了一份工作,我进入的这家公司, 是一家小公司,当我说小公司,也就是200 多个工程师,每年能进账4亿到4.5亿美元的公司。我当时刚刚走出校门,没有经验,所以我也没有看出其中的一些问题。现在回想起来,这个公司里面的很多错误都是经典教材。这个公司犯的很大一个错误就是缺乏规范的质检组。这个错误其实为公司造成了很多不必要的损失,但是整个公司的收益是巨大的,没有必要建立完善的质检机制。所以我想到现在,他们可能都没有完善的质检组。
 
在我准备离开这个公司之前,出了一件非常严重的问题。这个问题造成的严重后果不仅仅是客户的经济损失,工程进度的损失,还有公司内部为了返回声誉的损失,还有无法忍受高层人士的恶言恶语只有离职。这家公司是搞经融信息服务的公司,它的业务主要是从内容提供商那里取得商业信息,然后进行处理分类,塞入数据库然后让客户(主要是华尔街的投资人)来搜索需要的信息。其中的一项业务是将各种各样的金融新闻塞入一个数据库,然后让投资人能够进行检索。我要说到的问题是开发的处理软件出现了一个没有人注意到的漏洞,程序是用C++设计的,一个新闻中有一些关于公司的符号,这是用一个字符串来表示的,当时设计处理软件的工程师假设了字符串的长度不超过1024字节。结果那天提供商送来一个文件,里面的公司符号这个字符串的长度是1800多个字节,我们的软件不停地向服务商的服务器送出“这个文件有问题,请重新发”的请求。服务商的服务器就不断地发同样的文件给我们,最后我们的服务就卡在一个不停循环的重复中;新的新闻没有被处理,用户一直觉得我们的服务已经被中断了。这是Denial of Service。不同的是服务商无意造成这个问题,而不是恶意攻击造成这样的问题。
 
既然事故已经发生了,管理层又是怎么处理的呢?管理层因为这个问题,大骂开发者无用,用尽国民党反动派使用的威逼利诱。具体细节不清楚了,大概也就是这样,一开始的四十五分钟,经理们从上到下威胁说在一小时内解决问题,开发者被痛骂,然后被责令迅速解决问题。开发者忙乎了一小时,回来报告说,问题还是找不到。经理们从上到下又开始大骂,威胁说要在半天中解决问题。大家又开始忙乎,还是找不出问题。为什么找不出问题?程序写得烂烂,代码没有一点规范。这些人都只有两年的开发经验,整个系统的注释又很不好,半天後,问题还是没有解决。高层又开始开骂。这时开发者心情开始变得很坏,说处理完这个问题我们就都辞职,我们好歹也是人,我们也知道系统出问题是我们工作没有做好,但是这样被人骂,给再多的钱也是不值得的。我们需要尊严,需要放松工作氛围,etc,etc。高层只要收回坏脸色,开始利诱,说要给大家加工资,处理好这次事故,没有人会受罚,大家都会受奖励。但是前面的三骂已经把这些开发者给骂怕了,再加上平时的紧张工作,没有一刻神经是放松的,这些人口头上没说什么,他们又花一天时间才把问题发现,处理。最后大家都提出辞职。那个组总共有5个开发者,一时间,4个辞职了。其中一个头回家帮老婆看孩子,两个高级工程师一个去拍电影(这个平时拍电影就能自给自足),一个去写歌(这个老婆大学毕业开始赚钱了)。还有一个是高层告诉他三人辞职后他就是头,他才毕业工作了一年,知道自己以后就是枪靶子,合计了一下当时西海岸开始经济复兴,遍地是工作,也辞职了。高层救火尽力挽留这些人,保证说为这些人提供更高的工资,但是两天来不断地被经理们泼粪。 这些开发者再也不想在这个公司混下去了。
 
我估算了一下,这里的损失不仅仅是在服务运行中整个公司花费了5到10个人力的36小时的工作,副影响包括用户对公司服务的不信任,高层将36小时花费在处理这种紧急事务上,可以用来处理更有价值的东西。四个开发者的辞职,看似给公司省了一点钱,事实上无形资产的损失 比省下的钱更高,首先公司要另外找人,要提供往返的机票,然后是替这些新人搬家的费用,接着是 慢慢培训他们的费用,离开的员工没有很好地编写文档,解开这些程序也要很多现任工程师花时间进行,这就造成其他项目的拖延。你可以看出来,一个小小的假设,造成一个简单,不易查出的毛病,导致如此巨大的损失。
 
我对这件事的个人看法是,这个公司最大的问题就是没有一个强大的质检组。我记得当时我一个单枪匹马,先和市场部联系了解我们下一个产品是什么,然后自己搞产品后台的数据系统,接着搞parser和其他处理程序,随后自己进行前台应用程序界面设计,自己搞测试,而且是每一程序层的测试。最后产品出来後要搞服务支持。这么下来我也做了两三个项目。但是质量就是上不去,其他人也和我一样,一天到晚都是大小问题不断,人也很紧张。谁也不知道什么是开发最佳解决方案,大家根本不知道TDD,用设计模式,如何搞容易扩展容易维护的系统。要是有技术高超的质检组,能够对各种错误的做法进行批评指正,可能这些问题多少都能解决一点。上面描述的问题,有经验的质检人员在开发中可能就能指出产品必须有很高的容错性,安全性,和稳定性。然后他们能够在这些方面设计测试用例来检验。他们能够运用以前出现的问题来总结以后可能发生的问题,来检验系统的应对能力。我不敢保证质检组能够检测出所有的问题。但是多少他们能发现一些问题,并责成开发人员进行改进,这样的 贡献是很大的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值