Background: lavoro per una piccola azienda che non ha una serie di best practice consolidate per la progettazione di software. Sono stato assunto per lavorare su un progetto che raccoglie dati da un flusso, esegue un processo di elaborazione e aggregazione e li scrive nel database. Dovrebbe alla fine aiutare a sostituire un vecchio sistema che è fondamentalmente molte migliaia di righe di codice spaghetti. Insieme a un collega, abbiamo progettato e realizzato qualcosa che considero una buona base per un sistema che sia estensibile, verificabile e stabile.
Il problema: lo sviluppo dell'ultima funzione ha richiesto circa 15 giorni di lavoro e la situazione era piuttosto alquanto rigida per quanto riguarda il rispetto della scadenza quando la funzionalità sarebbe stata dimostrata al cliente. Un tizio più anziano "viene in soccorso" e costruisce la stessa funzione in tre giorni, usando lo stesso stile di codifica e l'approccio generale usato nel vecchio sistema. Il risultato è altrettanto mostruoso dell'originale, ma questo non è visibile al management, chi certamente chiederà perché non siamo così produttivi come questo ragazzo. La nostra soluzione ha comunque rispettato la scadenza, ma nel frattempo l'interfaccia utente è stata cablata per mostrare i dati di questa nuova soluzione.
È molto facile essere un codificatore di cowboy e scrivere codice senza test, nessuna protezione contro situazioni impreviste e non reali struttura. Il nuovo codice sfugge allo scenario felice e fa il minimo necessario per ottenere il database corretto (ma come sappiamo?)
Come posso convincere il management che questa pratica è estremamente dannosa e che una buona ingegnerizzazione del software inizierà molto presto a pagare dividendi? Ci sono dei buoni esempi che potrei menzionare per supportare il mio caso?