Sto aiutando a gestire un team esterno che sta iniziando a sviluppare nuove versioni di alcuni prodotti esistenti. Storicamente, questo team ha sempre usato 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.
Ciò sta avendo un impatto negativo sull'affidabilità e sulla qualità della costruzione, perché non sempre ci inviano il codice sorgente più aggiornato. Stiamo provando a spingerli per unificare tutto il codice di riferimento in un'unica soluzione, ma stiamo ottenendo una certa resistenza - in particolare continuano a parlare dell'interdipendenza tra i moduli (leggi i "progetti" in Visual Studio) che aumenta se tutto viene inserito in un singolo file di soluzione. Nessun codice nelle soluzioni separate viene utilizzato altrove.
Insisto che questa è una sciocchezza e che buoni schemi di sviluppo eviteranno questo problema.
Il team in questione esegue anche correzioni di bug e sviluppo di nuove funzionalità su un prodotto esistente, la cui esperienza è stata a dir poco esagerata e soffre esattamente dello stesso problema di suddivisione su più soluzioni. Ci è stato rifiutato l'accesso al loro controllo del codice sorgente ( TFS ) e l'approccio che stiamo adottando per unificare la base di codice è provare e almeno ridurre il numero di aggiornamenti mancanti e più che regressioni occasionali (sì, i bug corretti vengono ri -introdotto nel prodotto) dicendo "inviaci un ZIP dell'intera cartella della soluzione in modo che possiamo decomprimerlo, aprirlo in Visual Studio e premereF5 per i test ". In termini di struttura e qualità generali, il codice è piuttosto scarso e difficile da supportare. Questa esperienza è il motivo per cui sono intenzionato a ottenere i processi di lavoro il più presto possibile nel ciclo di sviluppo.
C'è qualcosa che mi manca? C'è mai una buona ragione per tenere tutto quel codice separato? Per i miei soldi dovrebbe essere una ragione così convincente da essere conoscenza comune, ma sono più che disposto a ammettere di non sapere tutto.