Sembra che i tuoi problemi siano più generali.
Il problema del refactoring è sia un sintomo che un potenziale sollievo da parte del problema.
Il responsabile del software e il team dedicano il tempo del team
Dalla mia esperienza, penso che potresti riscontrare un problema che io chiamo "tutti sono un software manager". I responsabili di prodotto, i project manager e talvolta gli ingegneri di sistema e i tester possono essere famosi per aver cercato di gestire micro sviluppatori che probabilmente hanno già un software manager esperto. Potresti anche avere alcuni membri nella tua squadra che credono che il loro ruolo sia quello di gestirli.
Se sei il gestore del software, prendi incarichi per il refactoring che desideri o, meglio ancora, chiedi al tuo team di proporre il refactoring per la tua approvazione. Per non micromanage, potresti avere delle linee guida su età / autore / dimensione / contesto del codice da refactoring che possono essere liberamente refactored rispetto alla necessità di approvazione. Se un membro del tuo team desidera riformattare in modo massiccio quattro grandi classi di codice vecchio complesso che non ha scritto che non fanno parte della sua caratteristica, la sua diversione di due settimane è il tuo problema, quindi devi avere la possibilità di dire di no.
Puoi sgattaiolare in giro, ma penso che sia meglio costruire attentamente le tue stime con il tempo per analisi, progettazione, codifica, più forme di test (almeno unità e integrazione), refactoring e rischio come giudicato storicamente e dalla mancanza di esperienza o chiarezza associate all'attività. Se sei stato troppo aperto sul funzionamento del tuo team (o hai membri del tuo team che lo sono), potrebbe essere saggio restringere i canali di comunicazione in modo che passino attraverso di te e discutano risorse e risultati, non metodi.
Le prime scelte di progetto creano un circolo vizioso per il refactoring
La manutenzione del software è difficile. È doppiamente difficile se altri nell'organizzazione stanno facendo delle scelte a tue spese. Questo è sbagliato, ma non è nuovo. È stato affrontato da Barry Boehm, uno dei nostri grandi scrittori di software che propone un modello di gestione che descrive come Teoria W.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Spesso gli sviluppatori di software sono costretti a produrre secondo l'approccio di gestione di Theory-X che afferma che i lavoratori sono fondamentalmente pigri e non si esibiranno a meno che non vengano messi alla prova. Boehm riassume e contrappone il suo modello proposto come segue:
"Piuttosto che caratterizzare un manager come un autocrate (Teoria X), un allenatore (Teoria Y) o un facilitatore (Teoria Z), la Teoria W caratterizza il ruolo principale di un manager come negoziatore tra i suoi vari collegi elettorali e un pacchetto di soluzioni di progetto con condizioni di vittoria per tutte le parti. Oltre a ciò, il manager è anche un goal-setter, un monitor dei progressi verso gli obiettivi e un attivista nel cercare quotidianamente i conflitti di progetto di vittoria o sconfitta, affrontandoli, e trasformandoli in situazioni vantaggiose per tutti ".
Rapido e sporco è spesso solo sporco
Boehm continua sottolineando il motivo per cui le cose sono così infelici per gli sviluppatori del team di manutenzione.
"La creazione di un prodotto rapido e sciatto può essere una" vittoria "a basso costo e di breve durata per lo sviluppatore e il cliente del software, ma sarà una" perdita "per l'utente e il manutentore." Nel modello di Boehm, il cliente è più un amministratore del contratto che un utente finale. Nella maggior parte delle aziende, pensa al product manager come a un surrogato del cliente, o forse alla persona che acquista il prodotto per il suo elenco di funzionalità.
La mia soluzione sarebbe quella di non rilasciare il team di sviluppo originale (o almeno il lead originale) fino a quando il codice non verrà modificato per soddisfare almeno gli standard di codifica.
Per il cliente, penso che sia ragionevole contare il product manager come surrogato del cliente, e il gruppo di persone premiate per la consegna di qualcosa di veloce e sporco può certamente essere ampliato, quindi c'è un grande collegio elettorale per fare le cose nel modo sbagliato.
Il refactoring non è negoziabile
Per favore, non tirarti indietro dal tuo ruolo di software manager. Dovresti avere l'autorità e la discrezione per utilizzare il tempo del tuo team nel processo e miglioramenti del prodotto. In quel ruolo, potresti dover negoziare le tue scelte per rendere la tua squadra più professionale. Tuttavia, per quanto riguarda il processo, non negoziare con il marketing, perché nella mia esperienza, questo è un gioco perdente. Negoziare con la direzione tecnica. Ti mostra che hai visione. La creazione di un team di software professionale è un'estensione del loro ruolo ed è molto più probabile che venga vista come una vittoria.