A dívida técnica deve ser agendada como um recurso ou uma tarefa (ou um bug)?

19

Adicionei algumas histórias de usuários que endereçam alguma dívida técnica ao meu quadro do Pivotal Tracker. Devo considerá-los como características (mantendo meu nível de velocidade) ou como tarefas / bugs (diminuindo minha velocidade)? Entendo que, a longo prazo, não fará nenhuma diferença se eu fizer uma ou outra consistentemente, mas toda vez que adicionar uma história de dívida técnica, tenho que tomar a decisão.

Alguns pensamentos:

  • Na verdade, eles não são insetos, eles não quebram nada
  • Os usuários não solicitaram nada, pois a implementação de baixo nível não os afeta, mas facilitará o desenvolvimento a longo prazo
  • Se você definir características como histórias que agregam valor para os usuários, bem a) eles não como os usuários não verá qualquer benefício direto, mas, em seguida, b) que eles fazem, porque eles fazem o futuro desenvolvimento / manutenção possível que não agregam valor, apenas não agora

Não estou decidindo se realmente devo fazer o trabalho, ou quando agendá-lo, apenas o que saber o que devo chamar de dívida técnica em minha ferramenta de gerenciamento de projetos e por quê.

Rebecca Scott
fonte

Respostas:

17

É uma característica.

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

É definido, agendado e rastreado como qualquer outro recurso.

Se a implementação desse recurso não for suficientemente valiosa (para o cliente ou para você) para que ele possa ser agendado, isso é um problema diferente.

Steven A. Lowe
fonte
1
Aha. Resposta fantástica. Eu não tinha pensado em histórias escritas da minha perspectiva, mas faz sentido para mim, especialmente sendo um desenvolvedor interno, já que tenho que atuar como cliente também. Obrigado!
Rebecca Scott
5
Eu tenho que discordar. A partir desta perspectiva, praticamente tudo - até mesmo a criação de meu IDE ou obter uma conta SCM - seria parecido com um "recurso" ...
Péter Török
2
@ Peter - Não necessariamente. A configuração do seu IDE é um esforço inevitável; outras coisas se enquadram na categoria "coisas que são feitas". Mas substituir uma estrutura ou algo assim é muito diferente. A empresa deve estar ciente do que você fará, o benefício para eles e deve poder priorizá-la em relação a outros trabalhos. Assim, é uma característica em todos os sentidos.
pdr 25/05
4
Certamente um recurso deve agregar valor ao produto? A refatoração não agrega esse valor, simplesmente permite que os desenvolvedores trabalhem com mais eficiência e reduzam as chances de erros. O valor agregado desse tipo de coisa seria um efeito secundário. Chamar isso de recurso seria simplesmente uma maneira de apresentá-lo, para que o proprietário do produto tenha maior probabilidade de priorizá-lo.
David Neale
3
-1 O não cumprimento do seu trabalho nunca deve ser tratado como um recurso.
Martin Wickman
18

(Reembolsar) a dívida técnica não é um recurso , porque o cliente não está qualificado para tomar decisões sobre ela . Mais importante ainda, o cliente não pode decidir quando terminar e, além disso, depende totalmente de você para explicar os benefícios. É seu julgamento que existe uma dívida técnica, e cabe a você decidir como consertá-la e quando terminar. A dívida técnica está afetando sua velocidade (futura), não a percepção do cliente sobre o software. Se não houvesse dívida, você seria mais produtivo. E a velocidade que você está medindo até agora está errada, pois você deveria ter levado mais tempo para manter o código em forma.

Eu acho que você deve comunicar isso com seu cliente, mas não é algo que está sob seu controle. Você pode dizer algo como isto: 'Estamos pegando alguns atalhos até agora, que precisaremos corrigir. Isso significa que nossa velocidade diminuirá um pouco nas próximas iterações, mas isso é para garantir que tenhamos software sustentável a longo prazo. '

O trabalho contínuo no recurso do cliente também ajudará a manter seu foco na melhoria do software para o cliente, em vez de se tornar algum tipo de exercício acadêmico para encontrar o design perfeito (isso é algo com o qual pessoalmente luto algumas vezes).

Jaap
fonte
Concordou com isso. Não é um recurso, porque não é uma preocupação do cliente e não é algo que ele deva estar ciente (na minha experiência, quando o cliente está ciente de que você está refatorando / corrigindo um código para quitar dívidas técnicas, ele o vê perdendo tempo). e dinheiro , então é melhor que eles não saibam que você faz isso).
Wayne Molina
+1 Este também é um ponto de vista válido sobre o problema. Gosto de tratá-lo como um recurso, porque ele se encaixa perfeitamente nos mecanismos normais de planejamento e rastreamento. É difícil explicar para o cliente.
Steven A. Lowe
+1, esta é a única resposta que esclarece como o cálculo da velocidade ficará errado quando você contar as "tarefas do departamento técnico" como recursos.
Doc Brown
15

IMHO uma tarefa para eliminar a dívida técnica definitivamente não é um recurso. Ele poderia ser inserido no departamento "bug", mas estenderia a definição de termos, pois novamente não resulta em mudanças de comportamento observáveis ​​pelos usuários.

Eu chamaria isso de tarefa de manutenção. Em qualquer projeto de desenvolvimento, existem muitas tarefas, como configurar o ambiente de desenvolvimento / teste, montar dados de teste, mesclar ramificações no SCM etc. Nenhuma delas é observável diretamente pelos usuários, mas a falha em realizá-las regularmente resulta em maior desenvolvimento custos e taxa de erros a longo prazo.

Talvez não seja necessário manipulá-los como tarefas separadas (a menos que sejam enormes e / ou você não esteja sob pressão para implementar novos recursos no momento). Geralmente, pode ser melhor apenas identificar quando um novo recurso requer refatoração / gravação de testes de unidade etc. e manipulá-los como parte do desenvolvimento do novo recurso. Pode ser mais fácil explicar aos usuários finais e de gerenciamento (se eles querem saber em que você gasta seu tempo). Atualização: Além disso, ajuda os desenvolvedores a se concentrarem no valor da refatoração também. É fácil se deixar levar pela refatoração por causa da refatoração, portanto, focar no valor agregado que uma refatoração específica traz da perspectiva do cliente é IMHO útil.

Péter Török
fonte
1
Concordo que a refatoração da dívida técnica deve ser incluída quando exigida por um novo recurso, mas li essa pergunta como pagando uma dívida técnica independente ou prévia à exigência de um novo recurso.
Steven A. Lowe
@ Steven, essa foi a minha interpretação também. Vincular o retorno da dívida técnica a um recurso relacionado é apenas uma sugestão.
Péter Török
3

Eu chamaria isso de improvement.

Não é um bug, porque nada está quebrado.

Nem um recurso, pois a refatoração não será uma solicitação do seu cliente. (porque funciona!).

A maioria dos sistemas de rastreamento suporta um tipo de problema improvementpor padrão; caso contrário, você provavelmente pode alterar os tipos de qualquer maneira.

Wesley van Opdorp
fonte