Five Principles of Bug Tracking[翻译]

五项原则之漏洞跟踪

2014年11月24日

远程团队协作不像本地团队那样在同一个办公室里,远程需要更好的规范约束。

首先,我要说的是交流规范。在teamed.io这个团队中, 我们在最后的五年里,是通过远程协作来进行软件开发的。我们通过管理系统(如:Github, JIRA, Trac, Basecamp 等等)来严格的管理我们的任务,并且不鼓励任何其他形式的通信交流方式,像网络电话, HipChat聊天工具, 电子邮件或是电话。每个管理系统对于我们来说都是一个带有单独的有其生命周期的任务,有其特有的参与者和目标。多年来,我想分享一些我经历过的经验。如果你和你的团队是远程工作的话,那么你将发现它是多么的有用。

电视剧 巨蟒剧团(1969-1974)

1.保持一对一

每个错误标签都作为连接两个人的纽带:问题的识别和问题的解决。如果是个错误,我来报告出来,你来解决它。如果是个问题的话,我要知道是什么原因,你解释出来。如果是个任务,我让你做什么,你就做什么。任何情况下,都有两种主要的角色。无论在解决错误的过程中有多少人,只有这两个角色才是正式的。

错误标签记录者的责任是负责维护这个问题,当我报告了一个错误,我必须确定它的存在—这是我的职责。其他人也许会告诉我,我报告错了,这个错误不存在。他们也许还会说,他们不能探测到错误。他们也许还会说,我描述的任务太模糊,没人明白。有许多的争议。我的责任就是努力为了保维护标签的的正常。很明显,如果错误不存在,我就必须将错误错误取消。我就是其守护天使。

另一方面,错误解决者的责任是找到解决方案。当一个错误分配给我,我就必须解决它。我的职责就是确保我的解决方案是完美的。他也许会告诉我,我的解决方案有不足之处,不是很有效,或是不完整。而我的工作就是确信我是对的,他是错的。当然,是以合理的方式。为了找到足够的可被接受的解决方案,我不得不首先调查所有的可能性来了解问题,然后找到一种简洁的解决方式。但是,这是次要的,最主要的还是关注怎么说服错误记录者。我要时刻谨记,我最主要的目的是解决错误。

我的观点就是,无论有多少人讨论解决问题,永远都要记住,到底发生了什么—只有一个人负责提出解决方案,其他的人负责讨论(请看下文)。

2.解决它

记住,错误标签不是一个对话。你不是来这聊天的,你是来这解决问题的。当这个问题分配给你了,那么你就尽可能的解决它。

此外,切记,尽早的解决问题,对于项目的进展是很有好处的。时间越长,项目管理起来越麻烦。以为追踪和控制这些问题不是很容易的。很难知道到底发生了什么。你见过哪个开源项目有一些持续了2年的问题,并且有几百条评论,然后没有交付的?

对于项目管理者和参与者来说,这是不对的。每个错误应该有一些简短的认知,-1)一个问题,2)一个准确的询问,3)一个简短的解释,4)一个解决方案,5)解决,谢谢。这是理想的方案。

一旦你意识到问题进入了长期讨论的阶段,就要尽快的解决它。如果报告者不喜欢我的解决方案,该怎么办呢?那就找一个暂时的另他们满意的方案来解决它。可以在代码中使用“TODO”—这总比被问题长期困扰好吧。

一旦你发现提出的解决方案足够解决问题了,这时候就让报告者来解决它。如果你不介意周围的人说这个解决方案可能被接受,那么就明确的说,这是可以的。你要明确表示解决这个问题。试着这样:“@jeff,如果你没有任何疑问,请解决这个问题。”

3.不要解决它

每次你提出了一个问题,你就消耗了一些项目资源。每个问题报告者都意味着项目中花费了钱:1)这些钱用于发现问题和修复问题;2)对于项目管理者来说,他来找到解决问题的人;3)对于问题解决者来说,他尽量的来了解你提出的报告和解决方案;此外,4)其他人将会参与到讨论中。

如果你在没有在恰当的解决问题的时候,就把标签关闭了,而是将标签扔进了垃圾箱。一旦错误标签的内容发生了,是无法恢复的。所以,我们不能只是说,“这个标签不再有用了。”你的错误标签已经消耗了项目资源,并且花费了时间,为了使它们有可用之处,你不得不确定出来解决方案。

也许会是暂时的解决方法。可以改变项目中一行的内容。可以在代码中使用TODO标记来说明“我们意识到这个问题了,由于我们很懒,还没修复它”。总要做些事情,而不是什么也不做。

从不同观点角度来观察问题。当你开始发现这个错误标签,你在脑海里就要有东西了,关于你为什么报告了这个问题。即使有时候跟项目没有关系。如果你关了这个问题标签,在没有任何人看到这段代码的情况下,也许其他人可能会在这个问题上困扰几天甚至几年。然后,这个项目不能不再次花钱来重新标记错误标签,并讨论和解决这个相同的问题。即使你认为你发现的问题实际上不算是个问题,

那你也要让一个问题解决者来看看源代码,为了防止同样的问题在以后再次出现。

4.避免无意义—写下你的注解

每次你在标记错误的时候,都要写下注解。否则,如果你仅仅是因为想表达下观点就标记的话,你的评论将会变为无意义的垃圾。记住,标签是两个人之间的通信媒介—其中一个人报告了错误,同时,另个人要试图修复它。像“我试试其他方法怎么样”或是“我记得我之前修复了一个相同的问题”这些评论,都是让人恼火的和分心的。让我们真诚点,没有人真的需要或是关注什么观点。真正需要的是错误的解决方案。

如果你认为错误标签应该关闭了,因为解决方案足够好的。那你就写个注解给错误报告者,注解以“@jeff,我认为你的解决方案已经足够好了,因为…”开头。这样的话,你就帮助了他关闭了这个标签。

如果你认为解决方案是错误的,也记下的注解给标签报告者,以“@jeff,我认为你的解决方案不是很好,因为…”开头。这样的话,你就使得标签一直存在在这,直到有合适的解决方案出现。

再一次提醒,不要有无用的观点。而是,明确的在旁边注解出来—如果你喜欢这个解决方案,就关闭它。如果不喜欢这个解决方案,就保持它的开启。否则,只是让解决方案更加复杂,而对项目根本没有好处。

5.当产品出现问题,报告出来

我认为这是很明显的,但是我还有重申一次:每个问题都可能再次出现。每次你报告了一个问题,你就应该很好的解释产品为什么会出现问题。是的,产品没有像预期那样工作,或是没有正确的工作,甚至没有满足需求等等,这都是你的工作。

每个错误报告都应该伴有类似的结构:“这才是我们需要的,这是我们需要修改的,修复它”。每个错误标签,都是一个问题,一项任务,一个疑难,或是一个建议,都要以这种方式来处理。在提交的时候,你需要将项目从A点转移到B点。有时候,A点是不合适的,在B点可能会更好。所以,你需要解释A点和B点的情况。如果你可以解释怎么转移—问题是怎么再生的,怎么修复它,这会是非常令人满意的。

即使当你有问题,你也要以这种规范格式来处理。如果你有问题,就说明项目文档没有满足你找到问题的所在。这就叫做错误。应该修复它。以报告的形式,像“我怎么才可以看到X.class?”这么说,“目前的文档不完整,不能解释我怎么使用X.class,请修复。”

如果你不能解释怎么转移到另个地方的,那你就在标签中这么说:“我发现这个类不能像预期那样工作,但是我也不知道怎么处理这个问题。”这将给每个人一个明确的信息是你意识到了问题报告是不完整的。解决问题的第一步就是提取问题,使之在现。如果不能再现,很明显你的问题就会被关闭。

让我再次重申:每个错误标签都牵引着项目从A点到更合适的可以修复项目的B点转移。作为错误标签报告者,你的工作就是明确的清晰的记录出来出问题的那一行代码。

相关帖子

你也许会在这找到你感兴趣的话题:

本内容原文地址:http://www.yegor256.com/2014/11/24/principles-of-bug-tracking.html

时间: 2024-10-11 13:02:22

Five Principles of Bug Tracking[翻译]的相关文章

adaptive color attributes for tracking翻译

本文章是基于目标跟踪的翻译,供大家学习参考! 自适应选择颜色属性的实时视觉跟踪 摘要 视觉跟踪在计算机视觉中是一个很有挑战性的问题,现在最好的(state-of-art) 视觉跟踪器只使用了图片的光照信息或使用简单的颜色表示(RGB 这样的三通道)来表示图片.和视觉跟踪不同的是,在目标识别和检测问题中,结合光照信息和复杂的颜色特征可以提供非常好的表现.由于跟踪问题的复杂性,所需要的颜色特征应该是计算起来比较高效的,并且用有一定的光学不变形,同时具有比较高的判别能力. 这篇文章调查了在tracki

优先级与严重级

Q. What’s the difference between priority and severity? Answer:“Priority” is associated with scheduling, and “severity” is associated with standards.“Priority” means something is afforded or deserves prior attention; a precedenceestablished by order

C#.NET开源项目、机器学习、商务智能

所以原谅我,不能把所有的都发上来,太杂了,反而不好. 1..NET时间周期处理组件 这个组件很小,主要是对时间日期,特别是处理时间间隔以及时间范围非常方便.虽然.NET自带了时间日期的部分功能,但可能还不强大.这个组件就是增强版本.详细功能可以看项目主页的介绍.在CodeProject: http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET 2.OxyPlot绘图组件 OxyPlot是一个.NET跨平台的绘图

[it-ebooks]电子书列表

#### it-ebooks电子书质量不错,但搜索功能不是很好 #### 格式说明  [ ]中为年份      ||  前后是标题和副标题  #### [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/ Learning Web App Developmen

Joel谈软件 12步让代码趋于完善【译】

2000年8月9日 星期三 你听说过SEMA(软件工程测试与分析)吗?那是一个相对难懂的系统——用于衡量一个软件开发小组的好赖.停下来,别点击那个链接,弄懂那个系统兴许长达六年之久.我提出一个我自己的.不负责任.草率的方法测试软件团队的质量.这个方法的好处是它只用大约三分钟.如果你总是节省时间,你可以出门右拐. Joel的测试: 1.代码源控制软件你有用吗? 2.你能一步建立工程吗? 3.平时做工程吗? 4.你有bug数据库吗? 5.在写新代码前bug是否都已排除? 6.你有不断更新的计划表单吗

(转) [it-ebooks]电子书列表

[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/Learning Web App Development || Build Quickly with Proven JavaScript Techniques http://

8) pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://maven.apache.org/POM/4.0.0" elementFormDefault="qualified" targetNamespace="http://maven.apache.org/POM/

版本管理和项目管理软件浅谈

版本管理和项目管理软件浅谈 项目管理软件 Trac vs Redmine 关于Trac,之前想为计组实验平台搭建Wiki的时候作为“备胎”所了解过,而与当时功能与其相似,看起来更有竞争力的产品——Redmine相比而言我更加看好Trac,因为Redmine有一些严重的缺点: 安装非常麻烦.在实际的生产环境中,Redmine在Debian\Ubuntu系统下没法稳定运作.Redmine的依赖是固定的,所以一些新的版本库可能没法工作.而且必须自己在apt-get中配置更新源,否则很容易错将某些依赖升

AI-随机迷宫&amp;迷宫求解

本文记录了,人工智能中简单的搜索策略中的路径搜索策略中的A*算法,来实现迷宫寻路的问题.(这只是一次本人的课外作业) 完整的程序源码已经发送到我的Git.这里只记录了我的思路和感想以及收获. 产生随机迷宫 迷宫求解没有迷宫怎么可以呢.而本人是个懒人,每次都要手动输入迷宫,重复性的工作让我很不爽.你可以在程序中用数组定义一个迷宫啊,有强迫症的我,怎么可以这样随便的要求自己的程序呢.及时求解算法的出来了,但是测试数据有限,还是让我很不爽的,所以,干脆先花一些时间,写个随机迷宫的产生吧. 遇事先搜索,