Sto aiutando a gestire un team esterno che sta iniziando a sviluppare nuove versioni di alcuni prodotti esistenti. Storicamente, questo team ha sempre utilizzato un modello di un singolo progetto in un'unica soluzione per circa 30 moduli in Visual Studio che si uniscono per produrre una build distribuibile.
Questo ha un impatto negativo sull'affidabilità e sulla qualità degli edifici, perché non sempre ci inviano il codice sorgente più aggiornato. Stiamo cercando di comprimerli per unificare tutti i codici di riferimento in un'unica soluzione, ma stiamo ottenendo una certa resistenza - in particolare continuano a parlare dell'interdipendenza tra i moduli (leggi "progetti" in Visual Studio) aumentati se tutto viene inserito in un singolo file di soluzione. Nessuno del codice nelle soluzioni separate viene utilizzato altrove.
Insisto che questo non ha senso e che i buoni schemi di sviluppo eviteranno qualsiasi problema di questo tipo.
Il team in questione esegue anche bugfix e lo sviluppo di nuove funzionalità su un prodotto esistente, la cui esperienza è stata a dir poco irta e soffre esattamente dello stesso problema di suddivisione su più soluzioni. Ci è stato negato l'accesso al loro controllo del codice sorgente ( TFS ), e l'approccio che stiamo adottando per unificare il codice è per provare e almeno ridurre il numero di aggiornamenti mancanti e più di regressioni occasionali (sì, i bug corretti vengono reintrodotti nel prodotto) dicendo "inviaci un ZIP dell'intera cartella della soluzione in modo che possiamo decomprimerlo, aprirlo in Visual Studio e premi F5 per il test ". In termini di struttura generale e qualità, il codice è piuttosto scarso e difficile da supportare. Questa esperienza è il motivo per cui sono intento a ottenere i processi di lavoro il prima possibile nel ciclo di sviluppo possibile.
C'è qualcosa che mi manca? C'è mai una buona ragione per separare tutto quel codice? Per i miei soldi dovrebbe essere una ragione così convincente che sarebbe di dominio pubblico, ma sono più che disposto a concedere che non so tutto.