Come posso spiegare il valore del refactoring agli stakeholder? [duplicare]

0

Come posso convincere i project manager, i proprietari di prodotti, gli analisti di business, i clienti e vari altri stakeholder che il refactoring è una parte utile e produttiva del processo di sviluppo?

Come sviluppatori sappiamo tutti che i requisiti cambiano o non vengono mai spiegati completamente dall'inizio, e quindi il modo in cui abbiamo scritto un pezzo di codice in passato non ha senso ora e deve cambiare. Sappiamo che se ridisegniamo un codice ora ci salverà nel lungo periodo. Sappiamo che se manterremo pulito e ordinato il nostro codebase, miglioreremo la manutenibilità e alla fine porteremo a un codice migliore.

Ma comunque lo metto agli stakeholder, non riesco proprio a ottenere il valore. Per loro, il refactoring è una perdita di tempo non costruttiva (per sua stessa definizione - l'utente non dovrebbe vedere cambiamenti nell'applicazione). Per loro non fornisce alcun valore commerciale (o almeno non ha un valore aziendale immediato) perché non offre nuove funzionalità e resisterà strongmente a qualsiasi refactoring.

Non posso essere coinvolto in una base di codice in cui il refactoring non avviene perché sono già stato lì e ho visto come va a finire. Quindi invece lo introduco di nascosto quando lavoro su una funzione. Preferisco di gran lunga farlo apertamente in modo che le parti interessate possano avere un'idea più chiara del processo di sviluppo.

Qualche idea su come ottenerlo?

    
posta Paul T Davies 13.06.2013 - 10:25
fonte

2 risposte

5

Preferisco di gran lunga non disturbare le persone non tecniche con tali dettagli tecnici. Per me, il refactoring è solo una parte del processo di consegna di una funzionalità (e quindi fa parte della stima per le funzionalità).

Se davvero devi vendere il refactoring a persone non tecniche, lo venderei come misura di prevenzione dei bug (riducendo la complessità e la duplicazione, riduci il rischio di introdurre bug) e un risparmio di tempo per X volte la prossima funzione (è molto più facile aggiungere nuove funzionalità a un codice gestibile ben strutturato). In questo modo, il valore non è tanto il valore aziendale che aggiunge ora, ma l'aumento della produttività la prossima settimana / mese / anno.

    
risposta data 13.06.2013 - 10:52
fonte
5

Penso che dobbiamo distinguere tra refactoring e riprogettazione qui.

  • Il refactoring è incorporato in profondità in piccoli cicli di sviluppo, non dovrebbe occupare più di un ciclo TDD o un'attività e non dovrebbe certamente essere una storia separata. È una di quelle micro pratiche che rendono il codice di qualità del codice. Dato che in Agile la qualità non è negoziabile, e dal momento che il refactoring è fondamentalmente invisibile a livello di stakeholder, non dovresti nemmeno dire ai tuoi stakeholder che lo stai facendo, proprio come non diresti loro che stai usando questo modello di design o quello stile di programmazione.

  • La riprogettazione, d'altra parte, può durare molto più a lungo. Sta cambiando intere parti della tua base di codice per ridurre il debito tecnico. Potrebbe sostituire l'accoppiamento stretto con l'iniezione di dipendenza su un intero modulo, potrebbe essere l'introduzione di AOP per eliminare il codice di registrazione duplicato, potrebbe rivedere il modo in cui gli oggetti di accesso ai dati funzionano per consentire query di database più efficienti. Certo, non stai cambiando alcuna funzionalità, ma l'impatto che simili rilavorazioni possono avere sul progetto è degno di nota ai responsabili delle decisioni. Questo è dove solitamente crei una storia tecnica o un picco nel tuo backlog dopo che lo stakeholder ha approvato l'idea. Anche se non sono così facili da trovare, ci sono generalmente più argomenti che puoi usare rispetto a semplici refactoring: prestazioni, bug fixing, costi di manutenzione, costi di implementazione, costo della curva di apprendimento di base di codice, ecc. E se non ritengono che sforzo degno - beh, è il loro prodotto e tu hai fatto in modo di avvertirli su cosa potrebbe accadere.

Quindi il mio consiglio sarebbe: non cercare di convincere le parti interessate su come stai lavorando ogni minuto come professionista - questo non è negoziabile. Prova a fare più refactoring in modo da ridurre al minimo la quantità di riprogettazione che dovrai giustificare in seguito.

    
risposta data 13.06.2013 - 12:57
fonte

Leggi altre domande sui tag