技術的な負債は、機能または雑用(またはバグ)としてスケジュールする必要がありますか?


19

私のPivotal Trackerボードにいくつかの技術的負債に対処するユーザーストーリーをいくつか追加しました。それらを機能(速度レベルを維持)または雑用/バグ(速度を低下)として考慮する必要がありますか?どちらか一方を一貫してやったとしても、長期的には何の違いも生じないことは理解していますが、技術的な負債のストーリーを追加するたびに判断しなければなりません。

いくつかの考え:

  • それらは実際にはバグではなく、何も壊しません
  • ユーザーに影響を与えないのは低レベルの実装であるため、ユーザーは何も要求していませんが、長期的な開発を容易にします
  • あなたもユーザに付加価値を話、などの機能を定義した場合)彼らは、ユーザーが行うすべての直接的な利益が、その後B)は表示されませんしない限り、彼らはその可能な将来の開発/メンテナンスを行うために行い、追加値を、ちょうど今ではない

私は実際に作業を行うかどうか、またはいつスケジュールするかを決定していません。プロジェクト管理ツールで技術的負債と呼ぶべきものとその理由を知るだけです。


回答:


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
確かに機能は製品に価値を追加する必要がありますか?リファクタリングはそのような価値を追加するものではなく、開発者がより効率的に作業できるようにし、バグの可能性を減らすだけです。この種のものからの付加価値は、二次的な効果です。これを機能と呼ぶことは、単にそれを提示する方法であり、製品所有者が優先する可能性が高くなります。
デヴィッドニール

3
-1仕事に失敗したことを機能として扱わないでください。
マーティンウィックマン

18

(返済)技術的負債は特徴はありません。クライアントはそれについて決定する資格がないためです。最も重要なことは、クライアントがいつ終了するかを決定できないことです。さらに、クライアントは利点を説明するために完全にあなたに依存しています。技術的な負債があるというのはあなたの判断であり、それをどのように修正し、いつ完了するかはあなた次第です。技術的負債は、ソフトウェアのクライアントの認識ではなく、(将来の)速度に影響します。借金がなければ、生産性が向上します。そして、これまで測定してきた速度は間違っています。コードを形に保つためにより多くの時間をかけるべきだったからです。

これをクライアントに伝えるべきだと思いますが、それは彼らの管理下にあるものではありません。次のように言うことができます。「これまでにいくつかのショートカットを取っていますが、修正する必要があります。これは、次の数回の反復で速度が少し低下することを意味しますが、これは長期的に保守可能なソフトウェアを確保するためです。

クライアントの機能の継続的な作業は、完璧なデザインを見つけるための何らかのアカデミックなエクササイズになるのではなく、クライアントのソフトウェアの改善に集中するのに役立ちます(これは私が個人的に苦労していることです)。


これに同意しました。クライアントの懸念ではないため、機能ではありませんし、彼らが知っておくべきことでもありません(私の経験では、クライアントが技術的な負債を返済するためにコードをリファクタリング/修正していることを知っているとき、彼らはそれを時間の浪費と見なしますそしてお金、それは彼らがあなたがそれをすることを全く知らないことを最もよいです)。
ウェインモリナ

+1これは、問題に関する有効な視点でもあります。私はそれを機能として扱うのが好きです。なぜなら、それは通常の計画と追跡のメカニズムとうまく調和するからです。ただし、クライアントに説明することは困難です。
スティーブンA.ロウ

+1。これは、「技術的なタスク」を機能としてカウントするときに速度計算がどのように間違っているかを明確にする唯一の答えです。
Doc Brown

15

私見技術的な負債を排除するタスクは間違いなく機能ではありません。「バグ」部門にシャベルで入れることができますが、用語の定義を広げることになります。これは、ユーザーが観察できる動作の変更をもたらさないためです。

単にメンテナンスタスクと呼びます。開発プロジェクトには、開発/テスト環境の設定、テストデータのアセンブル、SCMでのブランチのマージなど、多くのタスクがあります。これらはユーザーが直接確認することはできませんが、定期的に実行しないと開発が増加します長期的にはコストとバグ率。

ただし、それらを個別のタスクとして処理する必要はないかもしれません(それらが巨大である場合、および/またはあなたが現在新しい機能を実装する圧力を受けていない場合を除きます)。通常、新機能がリファクタリング/単体テストなどを必要とするときを特定し、新機能の開発の一環としてこれらを処理する方が良い場合があります。これは、管理者とエンドユーザーの両方に説明する方が簡単な場合があります(時間を費やしているものを知りたい場合)。更新:さらに、開発者がリファクタリングの価値にも集中できるようにします。リファクタリングのためにリファクタリングに夢中になるのは簡単なので、特定のリファクタリングがクライアントの観点からもたらす付加価値に焦点を当てることは私見に役立ちます。


1
技術的負債をリファクタリングすることは、新機能で必要な場合に含める必要があることに同意しますが、この質問は、新機能で必要となる前または独立して技術的負債を返済するものとして読みました。
スティーブンA.ロウ

@Steven、それも私の解釈でした。技術的な負債の返済を関連機能にリンクすることは単なる提案です。
ペテルトレック

3

私はそれをと呼びますimprovement

何も壊れていないため、バグではありません。

リファクタリングはクライアントの要求ではないため、機能もありません。(動作するからです!)。

ほとんどの追跡システムはimprovementデフォルトで問題タイプをサポートしますが、そうでない場合はおそらくとにかくタイプを変更できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.