Ho lavorato su un progetto software per lo più da solo per oltre 5 anni. All'inizio era un disastro (sono il terzo o il quarto sviluppatore a lavorarci su), e sebbene sia meno un disastro ora è ancora incredibilmente disorganizzato. Il tasso di progresso nel metterlo sotto controllo è glaciale e sto iniziando a sentirmi scoraggiato dallo stato in cui si trova. Come posso davvero iniziare a risolverlo?
Specifiche del progetto: è un programma di vendita scritto quasi interamente in Visual Basic Classic (VB6) con un back-end MySQL e un motore di reporting scritto in C #. Il modulo di reporting C # è una gioia su cui lavorare, è stato scritto solo negli ultimi due anni e prima che tutti i report fossero stati eseguiti in Crystal Reports 9 (sì, abbiamo ancora alcuni report che si basano su di esso).
Il programma vero e proprio, tuttavia, è un disastro completo. Non ci sono 90k LOC totali e circa 10k righe di commenti (per lo più non documentazione, ma vecchio codice che è stato commentato). 158 file di moduli e 80 file di moduli. Non ho idea di quanti di questi siano effettivamente utilizzati, perché alcune funzionalità del programma sono semplicemente deprecate e (a volte) annotate come tali senza che il codice associato sia stato rimosso dal programma. Immagino che solo il 50% del codice sia in uso produttivo effettivo.
Ho paura di toccare molto del codice solo perché non sono sicuro che stia rompendo qualcosa su cui fa affidamento un oscuro cliente, è accaduto in più occasioni di quante io possa contare. È come se ci fossero mine antiuomo sparse in tutto il codice.
Non esiste davvero alcuna struttura per il progetto. Non è orientato agli oggetti, tranne nei pochi posti in cui ho avuto la pazienza di riformarmi finora. Se è necessario ottenere dati su un modulo, si crea un'istanza di un oggetto di database, si dichiara la query proprio lì nella funzione, si esegue e si fa ciò che si desidera con il set di dati.
Quando ho iniziato a lavorare al progetto non c'era alcun controllo del codice sorgente in uso. Ho cercato di incoraggiare le altre persone a cui stavo lavorando per usarlo, ma ero il nuovo ragazzo e i miei tentativi di convincere le persone a usare la sovversione sono falliti. Lo sviluppatore principale dell'azienda ha finalmente rilevato un bug mercuriale negli ultimi due anni e si è assicurato che tutti gli sviluppatori utilizzino il controllo del codice sorgente su tutti i progetti ora, quindi almeno questo è un progresso.
Penso che se fossi in grado di lavorare sulla riforma del progetto a tempo pieno, sarei in grado di fare progressi decenti e forse anche di avere una stima di quanto tempo ci vorrebbe per rifare completamente il progetto, ma è in uso attivo e lo sono viene costantemente chiesto di spegnere gli incendi, correggere bug, aggiungere funzionalità, ecc. ecc.
Quindi, come posso iniziare a risolvere davvero questo progetto? Prova a utilizzare lo strumento VB6 con un'altra lingua? Prova a riscrivere il programma nel mio tempo libero? O è completamente senza speranza?
Aggiornare
Dopo questo post sono tornato al progetto con rinnovato zelo, ma sono tornato alla disperazione entro pochi mesi dopo aver visto un ritmo così lento di progressi. Ho quindi ripetuto questo ciclo altre 2 o 3 volte nel corso del prossimo anno.
Da allora sono passato a un lavoro diverso. Anche se dopo tanti anni di vb6, e solo l'esperienza periferica con altre tecnologie, la ricerca è stata difficile e ho affrontato molti rifiuti lungo il percorso (circa una dozzina di interviste nel corso di un anno). Il mio consiglio agli altri in questa situazione è di considerare di partire per questo fattore da solo. Considera il danno che puoi arrecare alla tua carriera rimanendo in una posizione senza uscita come questa.