2010-05-19 5 views
7

Lavoro in un'azienda con centinaia di persone che scrivono software essenzialmente per lo stesso prodotto. La qualità del software deve essere elevata perché così tante persone dipendono da esso (non da ultimo gli sviluppatori stessi). Per questo motivo, ogni problema principale ha portato a un nuovo controllo, automatizzato o manuale.In che modo un grande numero di sviluppatori può scrivere software insieme senza un processo ingombrante o software di scarsa qualità?

Di conseguenza il processo di consegna del software sta diventando sempre più gravoso. Ciò richiede più sviluppatori che ... beh, puoi vedere che è un circolo vizioso.

Ora abbiamo un problema con il rilascio del software rapidamente - il tempo di consegna anche per cambiare una riga di codice per un problema molto serio è almeno un giorno.

Quali tecniche utilizzate per accelerare la consegna del software in una grande organizzazione, pur mantenendo la qualità del software?

+2

Storicamente, non lo fanno, in realtà. –

risposta

6

Io lavoro anche in un'organizzazione grande e ingombrante. Ho avuto successo nell'implementare diverse metodologie agile software development, ma in particolare ne ho trovate due particolarmente preziose.

Sviluppo iterativo e incrementale - Mantenere il ciclo di rilascio breve e serrato. In una squadra numerosa, se vengono apportate numerose modifiche tra una pubblicazione e l'altra, puoi trovarti in un incubo di integrazione.

Le grandi organizzazioni si appoggiano a piani di progetto di grandi dimensioni con tempi di sviluppo lunghi. Combatti questo Pianificare un progetto per un intero anno non ha senso quando l'intera percezione potrebbe cambiare dopo le prime due settimane di sviluppo. Condizionate le vostre parti interessate ad abituarsi all'idea di realizzare piccole versioni incrementali e adattarle a requisiti in continua evoluzione.

Test unità automatizzate - Questo è un ottimo modo per assicurare che si sta rilasciando software di qualità. I peggiori bug sono causati da modifiche apparentemente innocenti del codice che hanno conseguenze non intenzionali altrove. Test unitari completi sono forse il modo migliore per catturare questo tipo di errore. Se puoi passare a test driven development o behavior driven development, ancora meglio.

Qualsiasi organizzazione di grandi dimensioni avrà alcuni sviluppatori mediocri. È un dato di fatto. I test automatizzati delle unità sono un ottimo modo per tenerli d'occhio. Chiedi a uno dei tuoi migliori sviluppatori di scrivere i loro test unitari per loro. Avrai la certezza che almeno il loro codice funziona (anche se è brutto).

+1

+1: d'accordo su entrambi. L'aggiustamento è difficile, ma ho visto cicli di rilascio più rapidi (anche per piccoli miglioramenti) aumentare la qualità e il morale, e queste sono due grandi sfide in una grande organizzazione. – wlangstroth

+0

Concordato su entrambi i commenti, grazie dbyrne e Will. Stiamo implementando Agile, che è anche un ottimo modo per individuare gli sviluppatori poveri. E abbiamo test unitari (ma non vero sviluppo guidato da test, tranne che in alcuni casi isolati). Immagino che ci siano due sfide qui in realtà - 1 (come menzionato sopra) - identificando COSA che dobbiamo cambiare e poi 2 ottenendo tale cambiamento implementato in una grande organizzazione in cui molte persone devono essere persuase a provare qualcosa di nuovo. – Wikis

4
+0

Grazie a StudiousJoseph per i collegamenti, in particolare il test di Joel. Penso che abbiamo ottenuto 5. Ma la domanda è più di far lavorare una GRANDE organizzazione - c'è qualcosa di particolare in quell'ambiente? (Questi sono ancora collegamenti utili, ovviamente!) – Wikis

2

Esistono molti modi per migliorare il processo, ma il componente chiave è modularity. Separando chiaramente le responsabilità (sia nel codice che nell'organizzazione) e definendo interfacce chiare e coerenti, una grande squadra può lavorare con tutti i piccoli team legati tra loro.

+0

Sì, Matt S, hai perfettamente ragione sulla modularità - grazie. Tuttavia, spesso le grandi aziende hanno a che fare con un sacco di codice legacy da quando erano piccole ... quindi la modularità deve essere fatta retrospettivamente, e non c'è mai abbastanza tempo per quello ... = :-) Anche questo fa parte di il problema - pensare a breve termine invece di considerare la progettazione a lungo termine. – Wikis

1

Wise ma lugubri parole:

Qualcosa che potrebbe funzionare:

organizzare il progetto in modo che ci sia un'applicazione di base costruito da una o due persone, preferibilmente gestite tramite un linguaggio. Quindi lascia che tutti i programmatori siano effettivamente utenti del codice , codificando in quella lingua.

sto pensando di prodotti basate sul linguaggio: SAS, S/R, MATLAB, ecc

+0

Grazie Mike Dunlavey per il complimento. Le tue citazioni mi ricordano il mese di Mythical Man. Mentre usiamo Matlab, siamo ben oltre il fatto che una o due persone riavviano il progetto. Questo software ha investito migliaia di anni-uomo (vedi il mio commento precedente sul codice legacy). – Wikis

+1

@ Marco: Citando Bill Clinton, sento il tuo dolore. –

+0

Grazie Mike Dunlavey! Lo sento anche io ... = :-( – Wikis

Problemi correlati