Cio Experience – Programming… Agile per software robusti

cio_evolution
Chi naviga attraverso i portali TrovaPrezzi.it e ShoppyDoo.it, ne sfrutta le funzionalità di comparazione dei prezzi, riuscendo a effettuare i propri acquisti in modo molto più oculato. L’utente di un simile servizio naviga attraverso un’interfaccia estremamente intuitiva e, per tale ragione, non percepisce la complessità del sistema di elaborazione dei dati.

In realtà, a questi servizi lavorano oggi 20 sviluppatori che, nel tempo, hanno scritto oltre 2,5 milioni di righe di codice. Una complessità crescente, che ha indotto l’esigenza di coordinare il lavoro dei tecnici coinvolti. Questo perché, operando con metodologie classiche, si creano reciproche interferenze e la modifica di una parte del codice può avere un impatto negativo sul lavoro dell’intero team. La crescente complessità, inoltre, porta alcuni sviluppatori a occuparsi solo di aspetti molto specifici, limitando lo scambio di informazioni. Il tutto aggravato dal fatto che i migliori si dedicano alle problematiche più complesse, impedendo così un’adeguata crescita del gruppo di lavoro e con il rischio che solo una persona possa intervenire su alcuni particolari.

TI PIACE QUESTO ARTICOLO?

Iscriviti alla nostra newsletter per essere sempre aggiornato.

A fronte di simili rischi, due anni fa abbiamo scelto una metodologia di programmazione completamente nuova e innovativa, adottando il cosiddetto “Agile programming”. L’aspetto più eclatante di questa modalità di lavoro prevede che due persone lavorino contemporaneamente, con un solo computer e una sola tastiera, a una specifica parte di programma. Lo sviluppo in coppia obbliga i programmatori a confrontarsi costantemente sul lavoro che stanno svolgendo, limitando il rischio di incorrere in errori che, tipicamente, una persona non riesce a cogliere quando opera da sola. Entrambi, inoltre, sono costantemente aggiornati sullo stato del lavoro e, per tale ragione, la momentanea assenza di un soggetto non interrompe il flusso della progettazione.

Leggi anche:  Mike Jamieson entra a far parte dell'Advisory Board di Autoware

Proprio la continuità del flusso rappresenta un ulteriore vantaggio del “Agile programming”. Quando si affronta un progetto particolarmente articolato, è impossibile definire tutti i dettagli nelle fasi iniziali. Perciò, dopo aver tracciato le linee generali del progetto, stabiliamo degli obiettivi da raggiungere entro due settimane. Al termine di questo lasso di tempo viene convocata una nuova riunione, in cui verifichiamo il raggiungimento dei target o le problematiche ancora aperte. Al termine di questa analisi, vengono stabiliti gli obiettivi dei successivi 15 giorni. L’intero team è così aggiornato sullo stato di avanzamento del progetto ed è possibile correggere tempestivamente qualunque problema, evitando che esploda in una fase avanzata, quando i costi di intervento sarebbero particolarmente elevati.

La prevenzione dei problemi costituisce un ulteriore fattore di differenziazione di questa metodologia. Abbiamo infatti creato una serie di test che ogni programmatore deve effettuare prima di inserire il proprio lavoro all’interno della piattaforma software. Solo dopo aver superato un simile test, infatti, è possibile collegare la porzione di codice a quanto è già operativo.

Questa modalità, apparentemente, potrebbe dilatare i tempi di sviluppo. Ci ha però consentito di realizzare soluzioni particolarmente robuste, intervenendo su qualunque problema prima della messa in funzione. Non dobbiamo infatti dimenticare che un eventuale bug, verificatosi in una fase avanzata o, ancor peggio, in produzione, comporta interventi particolarmente onerosi. Sfruttando l’”Agile programming”, invece, abbiamo la certezza di aver risolto a monte qualunque problema.

Nicola Lamberti