Parece que seus problemas são mais gerais.
A questão da refatoração é um sintoma e um alívio potencial de parte do problema.
O líder de software e a equipe alocam o tempo da equipe
Pela minha experiência, acho que você pode estar enfrentando um problema que chamo de "todo mundo é gerente de software". Gerentes de produto, gerentes de projeto e, às vezes, engenheiros e testadores de sistemas podem ser notórios por tentarem gerenciar microdesenvolvedores que provavelmente já possuem um gerente de software experiente. Você pode até ter alguns membros de sua equipe que acreditam que o papel deles é gerenciar.
Se você é o gerente de software, faça atribuições para a refatoração que você deseja, ou melhor ainda, peça à sua equipe que proponha a refatoração para sua aprovação. Para não microgerenciar, você pode ter diretrizes sobre idade / autor / tamanho / contexto do código a ser refatorado que pode ser refatorado livremente versus necessitar de aprovação. Se um membro de sua equipe deseja refatorar massivamente quatro grandes classes de códigos antigos complexos que ele não escreveu e que não fazem parte do recurso, o desvio de duas semanas é o seu problema, então você precisa ter a chance de dizer não.
Você pode se esgueirar, mas acho que é melhor criar suas estimativas cuidadosamente com tempo para análise, design, codificação, várias formas de teste (pelo menos unidade e integração), refatoração e risco, como julgado historicamente e pela falta de experiência ou clareza associadas à tarefa. Se você foi muito aberto sobre o funcionamento de sua equipe (ou possui membros de sua equipe), pode ser aconselhável restringir os canais de comunicação para que eles passem por você e discutam recursos e resultados, não métodos.
Escolhas iniciais do projeto criam um ciclo vicioso para refatoração
A manutenção do software é difícil. É duplamente difícil se outras pessoas na organização estão fazendo escolhas às suas custas. Isso está errado, mas não é novo. Foi abordado por Barry Boehm, um dos nossos grandes escritores de software que apresenta um modelo de gerenciamento que ele descreve como Teoria W.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Muitas vezes, os desenvolvedores de software são martelados na produção sob a abordagem de gerenciamento Theory-X, que diz que os trabalhadores são basicamente preguiçosos e não terão desempenho a menos que sejam submetidos à submissão. Boehm resume e contrasta seu modelo proposto da seguinte maneira:
"Em vez de caracterizar um gerente como um autocrata (Teoria X), um treinador (Teoria Y) ou um facilitador (Teoria Z), a Teoria W caracteriza o papel principal de um gerente como um negociador entre seus vários eleitores e um empacotador de soluções de projetos Além disso, o gerente também é um determinador de objetivos, um monitor do progresso em direção a objetivos e um ativista na busca de conflitos diários de projeto com perda ou perda, enfrentando-os, e transformá-los em situações em que todos ganham. "
Rápido e sujo é frequentemente apenas sujo
Boehm continua apontando a razão pela qual as coisas são tão infelizes para os desenvolvedores da equipe de manutenção.
"Criar um produto rápido e desleixado pode ser uma" vitória "de baixo custo e de curto prazo para o desenvolvedor e o cliente do software, mas será uma 'perda' para o usuário e o mantenedor." Observe que, no modelo da Boehm, o cliente é mais um administrador de contratos, em vez de um usuário final. Na maioria das empresas, pense no gerente de produto como um substituto do cliente, ou talvez a pessoa que compra o produto para sua lista de recursos.
Minha solução seria não liberar a equipe de desenvolvimento original (ou pelo menos o lead original) até que o código seja refatorado para, pelo menos, atender aos padrões de codificação.
Para o cliente, acho razoável considerar o gerente de produto como um substituto do cliente, e o grupo de pessoas recompensadas por fornecer algo rápido e sujo pode certamente ser expandido, de modo que há um grande número de membros para fazer as coisas da maneira errada.
A refatoração não é negociável
Por favor, não desista de sua função como gerente de software. Você deve ter autoridade e discrição para usar o tempo de sua equipe nas melhorias de processos e produtos. Nessa função, pode ser necessário negociar suas escolhas para tornar sua equipe mais profissional. No entanto, no que diz respeito ao processo, não negocie com marketing, porque, na minha experiência, esse é um jogo perdedor. Negocie com o gerenciamento de engenharia. Isso mostra que você tem visão. A formação de uma equipe profissional de software é uma extensão de seu papel e é muito mais provável que seja vista como ganha-ganha.