是否应该将技术债务安排为功能或杂项(或错误)?


19

我在Pivotal Tracker板上添加了一些解决一些技术问题的用户案例。我应该将它们视为特征(保持速度水平)还是杂务/虫子(降低速度)?我知道,如果我坚持一贯做下去,从长远来看不会有任何区别,但是每次我添加技术债务的故事时,我都必须做出决定。

一些想法:

  • 它们实际上不是错误,它们不会破坏任何东西
  • 用户没有要求任何东西,因为它是不影响他们的低级实施,但是它将使长期开发变得更容易
  • 如果您将功能定义为能够为用户增加价值的故事,那么a)他们不会,因为用户不会看到任何直接的利益,但是b)它们会这样做,因为它们使将来的开发/维护成为可能,从而确实可以增加价值,只是现在不行

我不决定是否真正进行这项工作,或何时安排它,我只是想知道我应该在项目管理工具中称其为技术债务的原因,以及原因。


Answers:


17

这是一个功能。

As a [Developer], 
I want to [refactor the whizbang library] 
in order to [simplify maintenance and speed execution]

像任何其他功能一样定义,计划和跟踪它。

如果实现此功能(对于客户或您而言)对于计划的时间而言还不够有价值,那就是另一个问题。


1
啊哈 很棒的答案。我没有想到从我的角度来撰写故事,但是这对我来说尤其有意义,特别是作为内部开发人员,因为我也必须担任客户。谢谢!
丽贝卡·斯科特

5
我不同意。从这个角度来看,几乎一切-甚至设置我的IDE或得到一个SCM帐户-看起来像一个“功能” ...
彼得Török

2
@Peter-不一定。设置您的IDE是不可避免的。其他事情则属于“完成的工作”类别。但是替换框架或其他东西是非常不同的。企业应该知道您将要做的事情,对他们的好处,并应允许他们将其优先于其他工作。因此,它在任何意义上都是一个功能。
pdr

4
当然,功能应该为产品增值吗?重构没有任何价值,只是使开发人员可以更有效地进行处理,并减少了出现错误的机会。这种事情的增值将是次要的作用。将该功能称为功能只是表示它的一种方式,以便产品所有者更有可能确定其优先级。
David Neale

3
-1不能将无法完成工作视为一项功能。
马丁·威克曼

18

(偿还)技术债务不是一项功能,因为客户没有资格对此做出决定。最重要的是,客户无法决定何时完成,此外,客户完全依赖您来解释收益。您的判断是存在技术债务,并且应由您决定如何解决问题以及何时完成。技术债务会影响您(未来)的速度,而不是客户对软件的看法。如果没有债务,您将提高生产力。到目前为止,您一直在测量的速度是错误的,因为您应该花更多的时间来保持代码的形状。

我确实认为您应该与您的客户进行沟通,但这并不是他们的控制范围。您可以这样说:“到目前为止,我们已经采取了一些捷径,我们必须解决这些捷径。这意味着在接下来的几次迭代中,我们的速度将有所下降,但这是为了确保长期以来我们拥有可维护的软件。

继续进行客户功能的开发也将有助于您始终专注于为客户改进软件,而不是成为寻找完美设计的某种学术练习(这是我个人有时会遇到的问题)。


同意这一点。这不是一个功能,因为它不是客户关心的问题,也不是他们应该注意的事情(根据我的经验,当客户知道您正在重构/修复代码以偿还技术债务时,他们认为这浪费了他们的时间和金钱,所以最好是他们根本不知道您会这么做。
韦恩·莫利纳

+1这也是关于此问题的有效观点。我喜欢将其视为功能,因为它随后可以很好地与常规计划和跟踪机制配合使用。但是,这很难向客户解释。
史蒂文·劳

+1,这是唯一的答案,它阐明了当您将“技术部门任务”算作特征时,速度计算将如何出错。
布朗

15

恕我直言,消除技术债务的任务绝对不是一项功能。可以将其铲入“ bug”部门,但是它将扩展术语的定义,因为它不会导致用户可以观察到的行为更改。

我将其称为维护任务。在任何开发项目中,都有许多这样的任务,例如,设置开发/测试环境,组装测试数据,在SCM中合并分支等。这些都不是用户直接观察到的,但是如果不能定期执行,则会导致开发工作量增加从长远来看,成本和错误率。

也许没有必要将它们作为单独的任务来处理(除非它们很大,和/或您现在没有实施新功能的压力)。通常,最好只确定何时需要重构/编写单元测试等新功能,并在开发新功能时进行处理。向管理人员和最终用户(如果他们想知道您花费的时间)可能更容易解释。更新:此外,它还帮助开发人员专注于重构的价值。出于重构的考虑,很容易陷入重构,因此,恕我直言,着眼于从客户的角度来看特定重构带来的附加值。


1
我同意,在新功能需要时,应包括重构技术债务,但是我读到这个问题是,无论新功能是否需要或在新功能之前,还清技术债务。
史蒂文·劳

@Steven,那也是我的解释。将技术债务偿还与相关功能相关联只是一个建议。
彼得Török

3

我称之为improvement

不是错误,因为没有任何问题。

也没有功能,因为重构将不是客户的请求。(因为它有效!)。

improvement默认情况下,大多数跟踪系统都支持问题类型,否则,您可能仍可以更改类型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.