Sarò davvero schietto ...
- Sei responsabile degli sviluppatori in questo lavoro?
- Sei il capo progetto?
- Quanta "partecipazione" detengono gli sviluppatori nel progetto?
- Qual è la tua giustificazione commerciale per una riscrittura?
- Cosa c'è nella base di codice che la rende del tutto inutile e irrecuperabile?
Hai dichiarato di aver appena iniziato un lavoro, eppure sembra che tu sia già un maestro della situazione lì. Forse ho frainteso l'intento della tua domanda, ma ho l'impressione che tu abbia inserito un lavoro in cui riscontri una serie di problemi e sei passato alla conclusione più semplice in cui il codice è rotto e l'unica via da percorrere è una riscrittura, ma hai davvero considerato il costo per il tuo datore di lavoro per farlo?
Con qualsiasi base di codice esistente, indipendentemente dallo stato in cui si trova, il proprietario avrà di solito un investimento considerevole nei prodotti rappresentati dal codice. Ci sono costi sia diretti che indiretti associati alla base di codice e una riscrittura è spesso l'ultima cosa che vuoi fare come sviluppatore di software, poiché rischi di svalutare le tue risorse di codice e ottenere così un rendimento inferiore su tutti i tuoi precedenti sforzi.
Prendi il sistema operativo di Windows come esempio. Con ogni nuova versione creata, c'è stato un grosso pezzo di codice portato avanti dalla versione precedente. A volte, intere librerie e API vengono trascinate in avanti attraverso diverse generazioni di SO. Perché? Perché gli sviluppatori sanno che questi elementi funzionano, sono stati testati, sono stati riparati e riparati per prevenire problemi di sicurezza e memoria e perché sono costati un sacco di soldi per entrare in quello stato. Nessuno vuole buttare via il codice di lavoro quando li guadagna, anche se i costi di manutenzione sono relativamente alti, i costi per iniziare da zero saranno sempre più alti e, in un'azienda come il caso di Microsoft, hanno miliardi in banca che consentire loro di iniziare dall'inizio se lo desiderano, ma non t perché vogliono massimizzare il loro ritorno dal loro investimento. Il tuo datore di lavoro non è diverso da Microsoft, tranne per il fatto di avere miliardi in contanti da lanciare a un progetto.
Quindi il codice è un disastro e sembra che ci siano problemi di comunicazione e di confine tra le varie aree dell'azienda. Cosa puoi fare tu o i tuoi colleghi al riguardo?
Un'opzione è semplicemente continuare come è stata la squadra e sperare in un miracolo in futuro. Probabilmente non è una buona idea e probabilmente aumenterà solo la tua frustrazione e stress.
Un'opzione migliore è semplicemente fare una pausa e svolgere il proprio lavoro, ma come parte di questa ricerca di opportunità per aggiungere test per supportare quelle aree di codice che sembrano essere le più fragili, quindi rifattorizzarle fino a renderle più stabili. Avrai un momento più facile nel formulare un argomento convincente per migliorare gli investimenti dell'azienda invece di discutere semplicemente per buttare via tutto.
Un'opzione ancora migliore è quella di essere organizzati come una squadra, e per assicurarsi che qualcuno si schieri dalla parte dell'anzianità sufficiente da poter fare un buon caso per consentire alla squadra una maggiore flessibilità per pianificare il tempo per migliorare la base di codice. Non mi interessa quanto sia impegnata un'azienda o quanto rigido sia il programma, ci sono sempre occasionali "pause" nell'attività che possono essere utilizzate per spremere in un miglioramento o due. È ancora meglio, tuttavia, se è possibile apportare miglioramenti durante il completamento di altre attività. Se fossi in me, mi sarei avvicinato a un manager e li avrei introdotti ai concetti in alcuni dei libri canonici che gli sviluppatori di software leggono. Codice pulitoè probabilmente quello di cui la tua squadra ha più bisogno. Pianta alcuni semi su come migliorare il codice e fornisci alcuni esempi di cosa intendi. Un buon manager vedrà il valore di aggiungere miglioramenti incrementali al codice, specialmente se sei in grado di descrivere il concetto di debito tecnico . Aiuta il tuo team leader o manager a creare un buon business case per migliorare il codice e avranno una motivazione migliore per agire su di esso.
Inoltre, non è sufficiente dire "il codice è disordinato". Devi incoraggiare i tuoi colleghi a esercitarsi sempre nella pulizia del codice e a utilizzare una tecnica di codifica pulita per incoraggiare un po 'di riordino mentre procedi. Ho un piccolo poster che stampo e appendo al muro del mio ufficio ogni volta che intraprendo un nuovo lavoro. Dice "Cerca sempre di lasciare il codice un po 'più bello di quello che hai trovato". Accanto ad esso ne aggiungo un altro che dice "I gigli non hanno bisogno di essere dorati". Entrambi servono a ricordarmi che dovrei sempre cercare di migliorare ciò che trovo, ma evitare semplicemente di placcare in oro un problema con un altro. Le riscritture di massa sono spesso il peggior tipo di "doratura", perché spesso vengono eseguite per ragioni sbagliate. Sicuramente una versione del prodotto completamente nuova potrebbe essere giustificabile ad un certo punto,