为什么要记录Bug的制造者或引入者?

看到Stack Exchange上对于在Bug Report中加入"Person to blame"栏位的讨论,这的确是一个很好的题目,这里面包含了很多的东西。该不该加这个栏位且不说,其实最重要是看动机和目的。

为什么管理者要加这个栏位呢? 自然是可以方便地统计出哪个组、哪个伙计引入的Bug状况。这可是绩效考核中一项非常有效的KPI(核心绩效指标),一定能符合SMART原则,随后的奖惩也就有了基础。开发者必然会认真对待,这样也可以提高大家的责任心。这是管理者的思维。可它真得有效吗?如果能读读<<人件>>,或许会理解地再深入些。

首先分析一下管理思维的基础。

管理上是基于X理论还是Y理论呢? 就是认为人本恶还是人本善的问题。认清事情本质是行为的基础,所以要先分析问题(根本原因分析)。不同的理论,会导致不同的结论。比如:Bug是因为人造成的,还是代码造成的? X理论会很容易得出因为人的惰性、马虎、大意而导致了问题。为什么不认真分析所有可能性?为什么没有做好充分的测试?......
 而Y理论,则可能会得出可能是因为设计评估不充分、培训不足、经验分享不充分、代码Review不充分造成的问题。为什么没有让开发者事先了解可能的问题呢?为什么没有人或方法可以提前预防呢?为什么编码规范规定了却仍然有漏网之鱼呢?

两者最大的差别在于它们思考时所针对的目标不同。如果焦点在人身上,态度或职业精神就变成了根本原因。反之,焦点如果在流程和制度上,思考的方向就有如上面的例子一样,完全不同。哪一种更有效呢?  什么是可控的呢?难道公司要控制人吗?

再举一个典型的问题,Coding Review是要Review人呢,还是要Review代码? 可以试着用两种方式思考一下。

再来看看这个指标的真的是可衡量吗? 

对软件开发行业而言,想找些有效的量化指标是很困难的事。 引入Bug的数量和解Bug的数量能体现出一个人的开发能力吗? 或者说一个引入了十个Bug的人会比只引入了一个Bug的人技术差吗? 在绝大多数情况下,答案都是否定的。它里面还有复杂度问题、职责问题、经验问题、专业领域问题,最重要的是项目中的行政因素。想想有多少产品是在管理层的压力下上线的?不过是在项目进度的修饰之下罢了。多少功能是硬上的?又有多少功能是求有不求精的?经过多少加班,产品终于上线了,项目终于完工了,但是开发者的苦日子才刚开始。而管理者呢?
(题外话:所以在这个问题上项目经理负责制,有时不如产品线经理负责制来得好。) 如此说来,谁是Bug的真正始作俑者呢?

最后,再看看可能的效果。

上有政策,下有对策。如果只是加个栏位,大家先填着,那就不用说了。当真从制度面推行时,双方的互信必然受到影响。因为相当一部分开发者会感觉已经被置于不被信任的位置。至于如何应对,只有想不到的,没有做不到的。管理者可以做个换位思考,如果头上悬着Bug数的利剑,在冲锋献阵之前是不是要想想有没有可能出师未捷绩效也会一塌糊涂?

总之,加这个栏位前,一定要想好你拿它做什么? 能不能达到你的目的? 程序员是开发者,并不是麻烦制造者!

转载请注明出处: http://blog.csdn.net/horkychen

时间: 2024-09-23 16:01:03

为什么要记录Bug的制造者或引入者?的相关文章

艾伟也谈项目管理,BUG平台应该是一个知识库

我很喜欢看各个产品的Bug追踪系统,比如jQuery的Bug Tracker,因为在Bug系统中总能发现一些非常细节的问题,补充自己的知识,慢慢地自己的代码的兼容性会有很大的提高. 但是,在各个Bug系统之中,包括现在公司使用的Trace系统,无一例外地存在一些让我不满意之处,其中最大的原因就是很多Bug系统仅仅是作为Bug的记录系统存在,而没有试图去让一个Bug成为一个知识的积累,让整个Bug系统变成一个丰富充实的知识库.这样的Bug系统,永远都只是提供一个简单的业务流程,不会变成干完人员.产

Webscalesql代码浏览记录

浏览了下webscalesql 的代码.目前包含的62个commit分类如下.   目前还没有能够体现"webscale"特征的代码,不过从roadmap上看,fb回头会继续把一些大动作加进来,可以期待. 本文先简要说明一下当前分支中一些有趣的代码.   关于代码洁癖 Steaphan Greene (@fb)同学的代码洁癖从多达二十几个关于testcase和编译参数调整的commit里面可见一斑.这注定webscalesql分支会是一个够干净的分支.从照片上如此粗旷的汉子真是看不出来

如何用轻量协作工具做bug管理

对于一个团队来说,工作效率的高低很大程度上取决于团队的管理. 而作为一名刚接触测试职位的新人来说,如何把一堆堆杂乱不堪的bug管理得井井有条,无疑是最重要的. 我之前一直觉得测试是一份很个人化的工作,每个人有每个人做测试的思路,尤其是编写测试用例,需要大量的自定义字段来充实整个测试体系.在bug管理上,交给任何一个管理工具,我觉得都不如自己手动编辑测试逻辑更加高效. 因此,除了excel,我之前基本没有接触过其他工具. 工作了一段时间,我渐渐发现还是自己太年轻,测试其实是一份非常需要配合沟通的工

EXISTS 条件句防止插入重复记录

exists 条件句防止插入重复记录 exists 和 not exists 引入的子查询可用于两种集合原理的操作:交集与差集.两个集合的交集包含同时属于两个原集合的所有元素. 差集包含只属于两个集合中的第一个集合的元素 mysql教程> create table books(     ->    bookid smallint not null primary key,     ->    booktitle varchar(60) not null,     ->    cop

阿里内核月报2014年3月

目前Linux内核急需的一项功能是在线打补丁的特性.此前被Oracle收购的ksplice一度是Linux上唯一的解决方案.但是在被Oracle收购后,ksplice就闭源了,并且成为了Oracle Linux的一项商业特性.而目前可以拿到的最新版本的ksplice仍然仅仅停留在0.19上,而可以直接使用的内核版本则是2.6.26.对于更新的内核版本则还无法使用. 在目前的实际生产环境中,不论是企业应用还是互联网公司,对于内核bug的修复仍然停留在原始的安排停机,升级内核,重启服务的方式上.这一

vue规模化

路由 官方路由 对于大多数单页面应用,都推荐使用官方支持的 vue-router 库 从零开始简单的路由 如果只需要非常简单的路由而不需要引入整个路由库,可以动态渲染一个页面级的组件像这样: const NotFound = { template: '<p>Page not found</p>' } const Home = { template: '<p>home page</p>' } const About = { template: '<p&g

NTP DoS高危漏洞 CVE-2016-9312 绿盟科技发布威胁通告 中国受影响设备过万

2016.11.21日,NTF's Network Time Protocol (NTP) 项目发布了 ntp-4.2.8p9 ,这是 ntp-4.2.8p8 发布以来的第一次更新.此次更新发布了10个漏洞,其中1个高危,具体信息如下: 1 个高危漏洞,仅影响Windows 2 MEDIUM severity vulnerabilities 2 MEDIUM/LOW severity vulnerabilities 5 LOW severity vulnerabilities 28 non-se

业务技术协同线上化的硬盘式研发管理实践

摘要:在云效平台策划推出的<持续集成与交付:阿里最佳实践>专题中,阿里云效产品专家代平为大家深入浅出地分享了互联网的研发管理理念,解析了企业研发管理面临的挑战和困难,揭密了如何结合云效产品进行业务技术协同线上化的硬盘式研发管理实践. 以下内容根据演讲嘉宾视频以及PPT整理而成. 演讲嘉宾介绍 代平,阿里云效产品专家.在本次分享中,代平谈到自己的职业生涯目前总共经历了三个阶段,第一个阶段她从事研发.测试以及项目管理工作,在这个阶段水深火热地工作了四年,积累了大量的项目开发.测试以及管理经验.第二

淘宝内部分享:MySQL &amp; MariaDB性能优化

编者按:MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务,本文描述淘宝数据库团队针对MySQL数据库Metadata Lock子系统的优化,hash_scan 算法的实现解析的性能优化,TokuDB·版本优化,以及MariaDB·的性能优化.本文来自淘宝团队内部经验分享. 往期文章:淘宝内部分享:怎么跳出MySQL的10个大坑 MySQL· 5.7优化·Metadata Lock子系统的优化 背景 引入MDL锁的目的,最