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 software e il team assegnano il tempo del team
Dalla mia esperienza, penso che potresti incontrare un problema che chiamo, "tutti sono gestori di software". I product manager, i project manager e talvolta gli ingegneri di sistema e i tester possono essere noti per aver tentato di gestire micro-sviluppatori che probabilmente hanno già un software manager esperto. Potresti anche avere alcuni membri della tua squadra che credono che il loro ruolo sia da gestire.
Se sei il gestore software, effettua incarichi per il refactoring che desideri, o, meglio ancora, chiedi al tuo team di presentarti il refactoring per la tua approvazione. Per non eseguire il microgestione, potresti avere delle linee guida sull'età / autore / dimensione / contesto del codice da sottoporre a refactoring che possono essere liberamente rifatte- rite o richiedere l'approvazione. Se un membro della tua squadra vuole refactoring massiccia di quattro grandi classi di vecchio codice complesso che non ha scritto che non fanno parte del suo film, la sua deviazione di due settimane è il tuo problema, quindi hai bisogno di una possibilità per dire no.
Puoi aggirarti furtivamente, ma penso che sia meglio semplicemente costruire le tue stime attentamente con il tempo per analisi, progettazione, codifica, più forme di test (almeno unità e integrazione), refactoring e rischio come giudicato storicamente e la mancanza di esperienza o chiarezza associata al compito. Se sei stato troppo aperto sul funzionamento della tua squadra (o se hai membri della tua squadra che lo sono), potrebbe essere saggio limitare i canali di comunicazione in modo che vi passino attraverso e discutano di risorse e risultati, non di metodi.
Le prime scelte di progetto creano un circolo vizioso per il refactoring
La manutenzione del software è difficile. È doppiamente difficile se gli altri membri dell'organizzazione fanno delle scelte a proprie spese. Questo è sbagliato, ma non è nuovo. È stato indirizzato da Barry Boehm, uno dei nostri grandi scrittori di software che propone un modello di gestione che descrive come Theory W.
link
Spesso gli sviluppatori di software sono martellati per produrre secondo l'approccio di gestione Theory-X che dice che i lavoratori sono fondamentalmente pigri e non si esibiranno se non saranno sottoposti alla sottomissione. 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), Theory W caratterizza il ruolo primario di un manager come negoziatore tra i suoi vari collegi elettorali, e un packager di soluzioni di progetto con condizioni di vittoria per tutte le parti. Oltre a questo, il manager è anche un obiettivo, un monitor dei progressi verso gli obiettivi, e un attivista nella ricerca di conflitti di vittoria giorno-per-perdere o perdere-perdere, confrontandoli e trasformandoli in situazioni vantaggiose per tutti. "
Veloce e sporco è spesso solo sporca
Boehm continua a sottolineare la ragione per cui le cose sono così misere per gli sviluppatori del team di manutenzione.
"Costruire un prodotto veloce e sciatto può essere una" vittoria "a basso costo, a breve termine, per lo sviluppatore e il cliente del software, ma sarà una" perdita "per l'utente e il manutentore." Si noti che nel modello di Boehm, il cliente è più un amministratore di contratto che un utente finale. Nella maggior parte delle aziende, pensa al product manager come a un surrogato del cliente o 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) finché il codice non verrà refactato per soddisfare almeno gli standard di codifica.
Per i clienti, penso che sia ragionevole considerare il product manager come un surrogato del cliente, e il gruppo di persone premiato per offrire qualcosa di veloce e sporco può certamente essere espanso, quindi c'è una grande comunità di persone che fa le cose nel modo sbagliato .
Il refactoring non è negoziabile
Per favore non tornare indietro dal tuo ruolo di gestore di software. Dovresti avere autorità e discrezione per utilizzare il tempo del tuo team nei processi e nei 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. Negozia con la gestione ingegneristica. Mostra che hai una visione. Costruire un team di software professionale è un'estensione del loro ruolo, ed è molto più probabile che venga visto come una soluzione vincente.