A atualização técnica da dívida / tecnologia deve ser agendada como um recurso (determinados pontos) ou uma tarefa (sem nenhum ponto)?

8

O que devemos fazer pelas histórias de usuários sobre dívidas técnicas no Pivotal Tracker? Devemos considerá-los como características (dando pontos) ou como tarefas (não dando pontos, diminuindo assim a velocidade)?

Estou confuso sobre o que deve ser considerado uma tarefa:

  1. Duplicação de código - É claro que, se colocarmos o mesmo código em vários locais, isso é realmente uma prática ruim de código e indica que os desenvolvedores da equipe devem pensar mais para tornar o software sustentável, refatorar e a equipe deve dedicar tempo às análises de código. Como tudo isso requer experiência em maturidade, tempo e nível de código, é melhor fornecer menos número de pontos para que a qualidade do código não seja comprometida. Portanto, esses erros devem ser penalizados e a velocidade reduzida, não dando pontos à tarefa.

  2. Atualização de tecnologia - como mudar para modularizar JS, HTTP2, React, MVC ou qualquer outra nova / melhor tecnologia. Essas etapas melhorarão o desempenho e a manutenção do código. Mas isso deveria ser tarefa ou recurso? Eu acredito que é assim que o mundo da tecnologia é, as novas tecnologias vêm de vez em quando e você precisa migrar para ele. Portanto, não vejo sentido em penalizar a velocidade da equipe por esse trabalho. Sugestões?

  3. Código de duplicação / sub-padrão no código legado - Poucos são os códigos que são intocados desde muito tempo OU quando uma nova equipe é formada, mas a base de código é um pouco antiga, enfrentamos esse desafio. A equipe diz que não codificou esta seção, por que sua velocidade deve ser penalizada escolhendo dívidas técnicas que nunca as criaram.

  4. Código abaixo do padrão devido à urgência dos negócios - Às vezes, os desenvolvedores são forçados a enviar recursos o mais rápido possível, ao vivo, devido à pressão dos concorrentes / alvos / negócios / usuário. A limpeza desse código incorreto também deve ser considerada uma tarefa (sem dar pontos)? Desta vez, a equipe de desenvolvimento não tem culpa; então, por que a velocidade deve ser reduzida, quando na verdade eles costumam colocar horas extras nesses casos.

Acredito que todos os tipos de tarefas mencionados acima, se realizados com sabedoria, devem melhorar a velocidade da equipe no futuro. Mas como devemos manter o equilíbrio, mantendo a velocidade da equipe e penalizando os erros técnicos que a equipe está cometendo ao tomar más decisões?

A pergunta é semelhante a: Dívida técnica deve ser agendada como um recurso ou uma tarefa (ou um bug)? , mas não encontrei respostas convincentes que abranjam todos os quatro pontos, por isso estou publicando de uma maneira diferente.

independente
fonte
2
Se você não está realmente entregando novas funcionalidades para os usuários finais, não é um recurso. Uma queda na velocidade devido à escolha da equipe de pagar dívidas técnicas não é uma penalidade, é uma informação útil. (Divulgação: Eu sou um Pivot.)
jonrsharpe
2
Seus usuários provavelmente não se importam com o seu SEO. Desempenho, talvez, se você validou um requisito do usuário para melhorar o tempo de carregamento, isso seria um recurso. Mas refatorar ou alternar plataformas, presumivelmente na esperança de que você possa oferecer melhores recursos mais rapidamente no futuro não é um recurso; você "recuperará esses pontos" quando fornecer esses recursos.
Jonrsharpe 12/05
2
@jonrsharpe: Não obstante o cuidado e a alimentação de seus usuários, por que você agendaria algo sem também atribuir um custo a ele? Eu não sou vendido com a idéia de perder velocidade misteriosamente devido a dívidas técnicas que estão sendo pagas sem contar a história apenas por uma questão de "correção".
Robert Harvey
2
Votação para fechar como principalmente baseada em opiniões. De qualquer maneira, tudo bem e, no final, tudo isso é papelada para ajudá-lo a fazer as coisas.
Telastyn
1
@sahil: Ai. Incorrer em dívidas técnicas é algo que geralmente pode estar fora de controle do desenvolvedor de software. As pressões de gerenciamento para liberar software em uma determinada data podem ser um motivo. Por que eles deveriam ser penalizados por isso? Se vale a pena fazer, vale a pena atribuir um custo.
Robert Harvey

Respostas:

8

Resposta curta: pagar dívidas técnicas é uma tarefa árdua. Você não está fornecendo novas funcionalidades para os usuários finais, para que não sejam pontuais.


Resposta oficial:

Erros e tarefas não são calculáveis ​​por padrão

As histórias de destaque são estimadas porque contribuem para o valor comercial. Erros e tarefas são considerados parte da sobrecarga normal dos produtos de software - surgem com o tempo e são contínuos, um custo contínuo dos negócios. O cálculo automático de velocidade do rastreador considera isso como um custo interno e estima quanto trabalho com valor comercial pode ser concluído a cada iteração. Isso permite que você concentre seu planejamento no valor, risco e prioridades dos negócios. Portanto, erros e tarefas no Tracker normalmente não são estimados. Você pode ativar a estimativa de erros e tarefas nas Configurações do projeto; no entanto, desencorajamos fortemente a ativação da estimativa de erros e tarefas. Você não pode desligá-lo mais tarde se mudar de idéia.

https://www.pivotaltracker.com/help/articles/planning_with_velocity/#bugs_and_chores

É por isso que as histórias classificadas como bugs e tarefas não podem ter estimativas atribuídas a elas com as configurações padrão do PT, mas acho que também explica por que você não deve contar essas tarefas como recursos apenas para obter pontos por elas.


Em primeiro lugar, não acho que você deva considerar uma queda na velocidade como uma penalidade: são apenas informações. Talvez fosse algo natural, como uma nova pessoa entrando, que você teve que passar um tempo extra treinando. Talvez tenha sido algo inesperado que reduziu sua capacidade (por exemplo, doença) ou consumiu extra (por exemplo, bug "pare o mundo"). Talvez você não tenha estimado bem os recursos, por qualquer motivo; isso é algo que você pode aprender. Ou talvez tenha sido porque você decidiu, como equipe, priorizar o pagamento de alguma dívida técnica em vez de fornecer novos recursos (e talvez incorrer em mais dívidas).

Em segundo lugar, não é necessariamente um erro incorrer em dívida técnica. Não é ideal incorrer acidentalmente , mas se você decidir, por exemplo, criar a coisa "rápida e suja" agora, sabendo que precisará arrumar mais tarde, por exemplo, para que você possa obter mais comentários do usuário ou conhecer um prazo, essa é uma escolha deliberada que você fez como equipe e está bem.

Sobre se algo deve ser um recurso, uma regra simples é: os usuários finais se importam? Você mencionou a melhoria do SEO: é algo em que eles estão interessados? Desempenho com o qual eles podem se preocupar, mas, por outro lado, talvez prefiram ter algum novo recurso do que o mesmo material com algumas centenas de milissegundos fora do tempo de carregamento. Faça alguma pesquisa: vá e pergunte o que eles querem. Deixe-os ajudá-lo a priorizar o que é melhor gastar o tempo da equipe.

Você pode decidir que suas opções atuais de tecnologia o impedem de fornecer determinados recursos da maneira mais eficiente possível, caso em que é perfeitamente razoável (novamente, deliberadamente) gastar tempo migrando todo ou parte do aplicativo para algo novo.

Acredito que todos os tipos de tarefas mencionados acima, se realizados com sabedoria, devem melhorar a velocidade da equipe no futuro.

Aqui eu concordo absolutamente com você, mas então não está ganhando pontos por essas tarefas contando duas vezes? Se você estiver fazendo o trabalho para poder fornecer mais recursos posteriormente, deverá ver a velocidade mais alta depois de fazer isso, não enquanto estiver fazendo.

Além disso, coisas como revisões de código e refatoração básica no processo de entrega (por exemplo, a parte "refatorar" do ciclo TDD) já devem fazer parte do seu trabalho em andamento e, portanto, já incluídas como parte da velocidade geral da equipe.


Divulgação : sou um Pivot, trabalhando no Pivotal Labs em Londres, mas não na equipe Tracker.

jonrsharpe
fonte
As histórias também não são estimadas. Essa é a razão pela qual existem pontos e velocidades da história.
Robert Harvey
@RobertHarvey desculpe, para ficar claro que a citação não está dizendo que é impossível estimar bugs e tarefas (ou possível estimar recursos, por sinal!), Mas que por padrão no PT você não pode atribuir uma estimativa a uma história que não é classificado como um recurso.
Jonrsharpe 12/05
7
"Você não está fornecendo novas funcionalidades para os usuários finais, para que não sejam pontuais". A adesão a esse dogma é o principal mecanismo por trás do acúmulo de dívidas técnicas. O trabalho é estimado e realizado para as partes interessadas que não são necessariamente usuários finais. Você pode ter uma história como "Refatorar esse código (o que), para mantê-lo em manutenção (por que) para a equipe de desenvolvimento (para quem)".
Martin Maat
1
@MartinMaat Não concordo; dizer que a velocidade nunca deve cair faria isso. Você é livre para escrever suas tarefas da mesma maneira que seus recursos, mas isso não lhes dá valor para o usuário.
Jsonrsharpe #
@MartinMaat Concordo 100%. Isso me lembra EXATAMENTE as conversas sobre "Responsabilidade" de Eric Evans da InfoQ há alguns anos. infoq.com/presentations/design-strategic-eric-evans
RibaldEddie
4

Para sermos contrários, lidamos com bugs e dívidas técnicas como qualquer outro PBI. De fato, nem sequer temos um tipo de "bug". Tudo é um PBI. Nosso backlog é ordenado pelo valor comercial atribuído ao PBI. Como resultado, um bug proeminente voltado ao usuário que está causando problemas terá um alto valor comercial atribuído a ele, pois você corre o risco de perder dinheiro com algo assim e provavelmente será uma das primeiras coisas a serem feitas. Por outro lado, um bug que realmente não tem muito impacto e não está afetando a linha de fundo terá um valor comercial relativamente baixo e pode não ser corrigido por um tempo. Essa é uma parede mental importante que deve ser derrubada: nem todo bug deve ser corrigido. Parece sacrilégio, eu sei, mas se o esforço envolvido na correção do bug for maior do que o valor comercial que ele trará, então o ROI é negativo. Tratar tudo como um PBI dá a você a liberdade de tomar esse tipo de decisão empírica sem se distrair só porque é um "bug".

Da mesma forma, com dívidas técnicas, ainda há muito em jogo um valor comercial. Algumas dívidas técnicas podem ser incorridas com muito pouco custo e podem permanecer a longo prazo, mas algumas dívidas técnicas matarão seus negócios ao longo do tempo e, portanto, terão um valor comercial muito alto. A chave novamente é perceber que tudo é apenas um PBI. Tudo entra no backlog e você trabalha nos itens desse backlog com base no valor que eles agregam aos negócios. Se é um recurso, um bug ou uma dívida técnica, está realmente fora de questão.

Isso também tem o benefício de evitar completamente sua pergunta. Como tudo é um PBI, tudo contribui para a velocidade. A ideia de fazer um trabalho que não é realmente dimensionado e contado na sua velocidade é meio que insana para mim. Você está basicamente criando um enorme buraco negro em seus dados empíricos. A velocidade já é uma métrica bastante aproximada, é uma estimativa baseada em uma estimativa baseada em ainda mais estimativas. Adicione um monte de trabalho variável que não está sendo rastreado e agora o número é praticamente sem sentido. Tudo o que sua equipe faz em um sprint faz parte da sua velocidade.

Chris Pratt
fonte