Spero che non sia una domanda troppo generica; Potrei davvero usare qualche consiglio esperto.
Sono appena assunto come unico "Ingegnere SW" in un piccolo gruppo di scienziati che hanno trascorso gli ultimi 10-20 anni a mettere insieme una vasta base di codici. (È stato scritto in un linguaggio praticamente obsoleto: G2 - pensa a Pascal con la grafica). Il programma stesso è un modello fisico di un complesso impianto di trasformazione chimica; il team che lo ha scritto ha una conoscenza di dominio incredibilmente profonda, ma poca o nessuna formazione formale nei fondamenti della programmazione. Di recente hanno imparato alcune dure lezioni sulle conseguenze della gestione della configurazione inesistente. I loro sforzi di manutenzione sono inoltre notevolmente ostacolati dal vasto accumulo di "fango" non documentato nel codice stesso. Vi risparmierò la "politica" della situazione (c'è sempre politica!), Ma basti dire che non c'è un consenso di opinioni su ciò che è necessario per il percorso da percorrere.
Mi hanno chiesto di iniziare a presentare al team alcuni dei principi del moderno sviluppo del software. Vogliono che io introduca alcune delle pratiche e delle strategie standard del settore relative alle convenzioni di codifica, alla gestione del ciclo di vita, ai modelli di progettazione di alto livello e al controllo del codice sorgente. Francamente, è un compito abbastanza scoraggiante e non sono sicuro da dove cominciare.
Inizialmente, sono propenso a insegnarli in alcuni dei concetti centrali di The Pragmatic Programmer o Refactoring ("Odori di codice", ecc.) di Fowler. . Spero anche di introdurre una serie di metodologie Agile. Ma alla fine, per essere efficace, penso che avrò bisogno di perfezionare i fondamentali fondamentali 5-7; in altre parole, quali sono i principi o le pratiche più importanti che possono realisticamente iniziare a implementare e che daranno loro il massimo "bang for the buck".
Quindi questa è la mia domanda: cosa includerebbe tu nella tua lista delle strategie più efficaci per aiutare a raddrizzare gli spaghetti (e prevenirli in futuro)?