转发同事总结:一个BUG引发的血案(起因篇)

序:

博文《公司的一个“新记录”:项目初验不成功》记录了项目P初验不通过的事情,项目经理P在而后的一个星期顺利通过初验后,将以往的经验总结成文,在部门内部进行相互学习。应Stud_100等读者的要求,现在将同事P的总结共享如下,由于篇幅原因,分起因篇、经过篇、结果与总结,本期刊登他的起因篇。

 

原文如下:

上周五,项目P的验收因为一个我们看来小小的bug被业主C部门用户在初验会上拒绝了。虽然这个问题看起来是由于种种偶然造成的,但从某种程度上说,这也是偶然中的必然。

而后的一个星期里,几经波折,项目涉及到的8个各个单位干系人最终都在验收报告上签了名。现在到了需要总结问题的时候,下面我将代表项目组具体阐述一下这个问题的产生过程,以及我们认为可以有所改善的地方。

1. 起因

EVENT1:字段的倒置   TIME:初验会前4个月

财务报表是一种很复杂的东西,每个字段的名称都很长很拗口。于是开发人员在开发过程中把“在建工程科目年初金额”(CONS_PRJ_SUBJECT_YR_BEGIN_AMT)和“工程物资科目年初金额”(MAT_SUBJECT_YR_BEGIN_AMT)弄反了。

数据库设计人员其实是采用了直译的方法,字段名和中文名是一一对应的,只是问题出在由于名字太长,采用了缩写,比如CONS是construction,MAT是material。而开发人员在看不太懂的情况下,发挥了博闻强记的功力,一个个手工对应,于是乎出错也就在所难免了。

SOLUTION1:统一语言

设计人员应对开发人员阐明缩写规则,开发人员在明白缩写含义的情况下出错的概率会小很多。同时开发人员在不明白的情况下,也应该主动沟通了解字段名的具体意义,而不是强行记忆天书,苦了自己也更容易出错。

 

EVENT2:越智能越好吗  TIME:初验会前4个月

单纯来看,XX信息的编辑其实是比较容易实现的,但是我们想达到智能一点的目的,在一个月未填报的情况下,把未填报的XX也列出来。这样就不仅仅是临时表的增删改查了,必须要关联到正式表,再做一些decode的判断。于是SQL就变得很复杂了。

项目组派出数据库专家作为设计角色来协助开发人员编写这个SQL。设计人员觉得光是这样还不够智能,如果一个XX在关帐后没填写的情况下,自动把XX的各个填报金额汇总上来不是更好了吗?于是指导开发人员按照这种思路写完了SQL。

可惜的是,这个新增功能被客户否定了。原因很简单,用户导出的数据和他当初导入的不一样,作为严谨的会计,这点会导致他无法审核数据。否定是理所当然的。

另外一点,这个问题本来只存在于总部.但是系统对于用户来说是黑箱,总部发生问题了,他自然会质疑是不是所有下属机构的数据都被计算错了。恰巧下属机构公司用户导入的数据刚好是有问题的,所以用户对系统的信心严重降低。我们扛了另一个不属于我们的黑锅。在同用户解释时多费了很多口舌。这个算是此问题的副作用。

SOLUTION2:需求导向和质量意识

设计人员在设计一项关键功能时应征询需求人员意见(需求人员如仍无法确定应询问用户),而不是盲目实施一项新功能。同时开发人员也应站在用户的角度提出自己的质疑(一般任何系统的导出都应该要和导入一致,否则用户无法核对数据),而不是设计人员说什么就是什么,不光要know how,还应该要know why。

这个问题也告诉我们,应该提升对系统质量的重视程度。很多情况下的bug都是我们开发中的一个小小的失误,但由于用户对系统内部运转的不了解,常常会存在放大问题的倾向。这和需求变更时,用户存在低估变更工作量的倾向是同一个道理。并不是用户刻意难为我们,而是立场不同,认知程度不同导致的结果。所以,只有端正对系统质量重要性的认识,充分了解到所谓“小bug”造成的严重后果,才能尽量避免这种情况,建立客户对我们系统的信任。因为真正等到问题发生,用于解决问题、重建客户信心比避免bug产生所花费的功夫要大得多得多。

——未完待续

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值