Eu trabalho com uma base de código com mais de 500 mil linhas de código. É uma necessidade séria de refatoração. Foram identificados esforços de refatoração que levarão mais tempo do que o sprint normal de duas semanas. Eles não podem ser divididos em tarefas menores, como já vi sugerido em outras respostas neste site. O produto precisa funcionar no final da iteração, e a refatoração parcial deixará o sistema em um estado inutilizável, pois a dependência entre os itens é horrível. Então, qual seria a melhor maneira de abordar esse obstáculo? Mais uma vez menciono, dividi-lo em pedaços menores não é uma opção, isso já foi feito.
Atualização: as pessoas parecem precisar de uma explicação de por que isso não pode se encaixar em um sprint de duas semanas. Há mais envolvimento em um sprint do que apenas escrever código. Temos uma política de nenhum código sem testes. Essa política nem sempre existia e uma grande parte da base de código não a possui. Além disso, alguns de nossos testes de integração ainda são manuais. A questão não é que a refatoração em si seja tão grande. É com o fato de que pequenas mudanças afetam muitas partes do sistema e precisamos garantir que essas partes ainda funcionem corretamente.
Não podemos adiar ou estender um sprint porque temos hotfixes mensais. Portanto, essa alteração que se estende além de um sprint não pode impedir que o outro trabalho seja adicionado ao hotfix.
Refatoração versus reprojeto: Só porque nosso processo de desenvolvimento não é eficaz o suficiente para lidar com essa refatoração em um ciclo de duas semanas não garante a renomeação para um reprojeto. Gostaria de acreditar que, no futuro, poderemos realizar exatamente a mesma tarefa dentro de um ciclo de duas semanas, à medida que nosso processo melhorar. O código em questão aqui não teve que mudar há muito tempo e é bastante estável. Agora, conforme a direção da empresa está se tornando mais adaptável à mudança, queremos que essa parte da base de código seja tão adaptável quanto o resto. O que requer refatoração. Com base nas respostas aqui, está se tornando aparente a falta de andaimes necessários para fazer essa refatoração funcionar no período de sprints normais.
Responda:
Vou fazer a abordagem de ramificação e mesclagem sugerida pela Corbin March pela primeira vez, para que possamos aprender mais sobre essas áreas problemáticas e como identificar os testes ausentes. Penso que, seguindo em frente, devemos adotar a abordagem sugerida por Buhb para identificar as áreas que estão faltando nos testes e implementá-las primeiro, depois refatorar. Isso nos permitirá manter nosso ciclo de sprint normal de duas semanas, assim como muitos aqui dizem que sempre deve ser o caso da refatoração.