我曾多次面对一个团队想要构建自己的缺陷跟踪系统,这不是作为产品,而是作为内部工具。
我听到的支持意见通常是:
- 希望通过一些内部构建的Web框架来“吃自己的狗粮”
- 需要一些高度专业的报告或以某种所谓独特的方式调整某些功能
- 认为构建缺陷跟踪系统并不困难
如果要支持购买现有的缺陷跟踪系统,你可能会使用哪些论点?特别是,哪些功能听起来很容易但实际上很难实现,或者很难并且很重要但常常被忽视?
我曾多次面对一个团队想要构建自己的缺陷跟踪系统,这不是作为产品,而是作为内部工具。
我听到的支持意见通常是:
如果要支持购买现有的缺陷跟踪系统,你可能会使用哪些论点?特别是,哪些功能听起来很容易但实际上很难实现,或者很难并且很重要但常常被忽视?
首先,看一下这些 Ohloh 指标:
Trac: 44 KLoC, 10 Person Years, $577,003
Bugzilla: 54 KLoC, 13 Person Years, $714,437
Redmine: 171 KLoC, 44 Person Years, $2,400,723
Mantis: 182 KLoC, 47 Person Years, $2,562,978
从这些数字中我们能学到什么?我们可以得出结论:建造另一个Bug跟踪器是浪费资源的好方式!
所以,以下是我建造内部Bug跟踪系统的原因:
否则就不要建造。
我想反过来问一下,你为什么要自己建立呢?
如果你需要一些额外的字段,去选择一个可以修改的现有软件包。
特殊报告?从数据库中获取数据并制作即可。
认为这并不困难?那就试试看吧。对其进行详细规划,看看功能列表和所需时间是否越来越多。然后在列表完成后,在实现自己的方案之前尝试找到一个可以修改的现有软件包。
简而言之,在另一个轮子只需要进行微调以适应时,不要重新发明轮子。
程序员喜欢构建自己的票务系统,因为他们曾经看到和使用过很多这样的系统,了解它们的一切。这样他们就可以保持舒适区。
这就像尝试新餐厅一样:可能会有回报,但也有风险。最好还是再点比萨饼。
还有一个关于决策制定的重要事实被埋藏在其中:做某件事情总是有两个理由:一个好的理由和一个正确的理由。我们做出决定(“构建我们自己的系统”),然后为之辩护(“我们需要完全控制”)。大多数人甚至不知道他们真正的动机。
要改变他们的想法,你必须攻击真正的原因,而不是辩护。
有第三个选项,既不买也不建。市面上有很多好的免费Bug跟踪工具。
例如:
除非是为了学习目的,否则自己开发Bug跟踪器并不是一个好的时间利用方式。
其他链接:
我只能说这是一个金钱问题——购买一个你知道对你有益的成品(有时甚至免费也不会尝试自己去开发)要比自己去开发一个更好。这是一个简单的先付款和后付款的游戏。
首先,反对自建的观点是:
想要在某个内部构建的 Web 框架方面“吃自己的狗粮”
当然,这引发了一个问题:为什么要自己构建 Web 框架呢?就像有很多值得信赖的免费 bug 跟踪器一样,也有许多值得信赖的框架。我想知道你们的开发人员是否有正确的优先级?谁在做能让公司真正赚钱的工作呢?
好吧,如果他们非要构建一个框架,让它从构建实际用于赚钱的业务软件的过程中自然演变出来。
需要一些高度专业化的报告或以某种据称独特的方式调整某些功能
就像其他人所说的那样,选择其中一个优秀的开源跟踪器并进行调整。
认为构建一个 bug 跟踪系统并不困难
嗯,我在几周内写了第一个版本的BugTracker.NET,起初完全没有C#知识。但是现在,6年后并花费了数千小时,仍有一大堆未完成的功能请求,所以这取决于你想让缺陷跟踪系统做什么。需要多少电子邮件集成、源代码控制集成、权限、工作流、时间跟踪、进度估算等等。缺陷跟踪器可以是一个非常重要的应用程序。
你会使用哪些论据来支持购买现有的缺陷跟踪系统?
不需要购买。有太多好的开源软件:Trac, Mantis_Bug_Tracker,还有我自己的 BugTracker.NET,只是列举了其中几个。
如果你只是为自己创建,那么你可以采取很多捷径,因为你可以硬编码。如果你为许多不同的用户在许多不同的情况下构建它,那么支持可配置性就很难了。可配置的工作流、自定义字段和权限。特别是哪些功能听起来很容易实现,但实际上很难,或者很困难但又很重要但经常被忽视?
我认为最基本的理由是时间浪费。我怀疑它能否在一个月或两个月内完成。既然有这么多好的缺陷跟踪系统可用,为什么要花时间去开发呢?请给我举一个需要调整但不容易得到的功能的例子。
我认为一个好的缺陷跟踪系统必须反映你的开发流程。一个非常定制化的开发流程对公司/团队来说本质上是不好的。大多数敏捷实践都支持Scrum或这类方法,并且大多数缺陷跟踪系统也遵循这些建议和方法。不要过于官僚主义。
最重要的是,在你的缺陷跟踪器完成之前,你将在哪里提交错误?
但说真的。 工具已经存在,没有必要重新发明轮子。 修改跟踪工具以添加某些特定功能是一回事(我以前修改过Trac)... 重新编写一个就是愚蠢。
你可以指出的最重要的事情是,如果他们想要做的只是添加几个专业报告,那么不需要从头开始解决问题。此外,“自制解决方案”最后一点关心的是内部工具。如果它按照你的需求完成了工作,那么谁会在意你在内部使用什么?