Sfondo
Sono un capo tecnico di un piccolo gruppo di tre sviluppatori che lavorano in un college comunitario. A causa della natura del nostro ambiente, i nostri progetti sono in genere correlati (dal momento che l'insieme principale di dati che usiamo è relativamente piccolo), ma tutto il nostro lavoro viene svolto in soluzioni C # separate e indipendenti con front-end ASP.NET.
Sono responsabile del mantenimento del set principale di codice condiviso, la struttura del nostro college, ma ho anche una serie completa di progetti. Poiché ho scritto la maggior parte del codice framework, nessuno degli altri membri del mio team vuole modificarlo o espanderlo (per ragioni che posso spiegare in maggior dettaglio).
Problemi
Il nostro intero team (noi tre e il nostro manager) abbiamo frequentato lo Scrum training lo scorso anno e stiamo tutti cercando attivamente di coinvolgere i nostri stakeholder interni nel processo Scrum. Tuttavia, quando dobbiamo passare da un progetto a un altro (e abbiamo circa 25 progetti separati), incorriamo in una penalità di transizione piuttosto elevata.
Il codice meno recente non viene mantenuto o aggiornato con nuovi standard come facilmente perché aggiungiamo semplicemente un riferimento a una versione specifica del framework, che è poi scomparsa dal momento in cui riapriamo i progetti più vecchi. Non prendiamo realmente un nuovo codice che possiamo riutilizzare e integrare nel framework.
Sebbene il nostro manager ci aiuti a rivedere il codice più vecchio, i nostri progetti sono sempre programmati in back-back - anche ora che stiamo usando Scrum, abbiamo una pressione interna che spinge nuovi elementi al team invece di avere spazio per tirare nuovi lavora quando siamo pronti.
Solutions (?)
Io e il mio team abbiniamo il programma, il programma di squadra o eseguiamo revisioni di codice (se non possiamo accoppiare) regolarmente. Ho sottolineato che non possiedo il nostro framework condiviso e sollecito regolarmente feedback dal mio team per nuove funzionalità o bug.
Ho proposto al team di provare a trovare un nuovo modo di integrare il nostro codice insieme, che è attraverso un grande progetto basato sul web (posso sentire tutti voi ad inalare bruscamente mentre scrivo questo). Sono alla fine del mio ingegno a cercare di sviluppare lo skillset e la fiducia della mia squadra al punto che possiamo condividere il codice e ci sentiamo a nostro agio nell'aggiornare il codice degli altri; tuttavia, i progressi sono estremamente lenti, mentre la quantità di codice che stiamo mantenendo aumenta molto più rapidamente.
Quando ho suggerito questa opzione alla mia squadra, tutti erano davvero entusiasti all'idea di poter lavorare insieme e migliorare il riutilizzo del codice. Ci sentiamo tutti come se potessimo sostenerci meglio l'un l'altro in questo scenario. Tuttavia, siamo anche preoccupati di approcciare un progetto di queste dimensioni, e inoltre non sappiamo di problemi logistici come il tempo necessario per eseguire i test unitari o anche semplici build di progetto. Riconosco il mio stesso livello di ignoranza qui, ma allo stesso tempo sono davvero limitato da risorse e personale, quindi nonostante l'idea di stare per diverse settimane, non ho opzioni migliori.