Essere parte di un processo di cambiamento culturale di lunga durata in un'azienda ha i suoi vantaggi e svantaggi. Come azienda e come gruppo abbiamo iniziato a introdurre Agile nella nostra cultura circa cinque anni fa. Gli effetti di un cambiamento così grande sono diversi, ma ecco due dei più importanti:
Da un lato, ci sono stati dei cambiamenti nel modo in cui organizziamo il nostro lavoro e collaboriamo tra di noi, come descritto nel nostro Rapporto sull'esperienza Agile pubblicato presso il Sito web dell'Alleanza Agile.
D'altra parte, gli effetti possono essere osservati direttamente nel codice sorgente e nell'architettura della nostra applicazione. Abbiamo costruito il nostro software sulla base dei concetti di Architettura Pulita definiti da Robert C. Martin. L'architettura pulita è una variante della vecchia e consolidata architettura esagonale. Si concentra principalmente sulla separazione delle preoccupazioni, dei livelli e delle responsabilità. La progettazione di un'architettura di questo tipo richiede una conoscenza approfondita dei modelli di progettazione del software, delle pratiche agili, dei principi SOLID e di alcuni trucchi di progettazione orientati al dominio.
I vantaggi immediati di una simile base di codice sono evidenti. I moduli disaccoppiati consentono di apportare modifiche in modo isolato e con un basso rischio di influenzare altri moduli. Questo, a sua volta, si traduce in un minor numero di bug e regressioni. I comportamenti imprevisti sono limitati quando si devono apportare modifiche al software esistente. Quando è necessario implementare nuove funzionalità, i moduli sono quasi autonomi e le modifiche al codice esistente sono molto poche. Pertanto, l'architettura stessa può facilmente accogliere nuovo codice.
"In un sistema ideale, le nuove funzionalità vengono incorporate estendendo il sistema, non apportando modifiche al codice esistente".
- Robert C. Martin, Codice pulito: Un manuale di artigianato del software agile
Parliamo ora degli svantaggi. Dopo aver lavorato a un sistema così bello in un'azienda che incoraggia tutto ciò che è Agile, si tende a dimenticare come appare il mondo esterno. Si inizia a credere che l'intero universo del software sia come il proprio, o se non lo è, è in procinto di diventarlo. Agile significa così tanto e ha così tanti vantaggi che non si riesce a immaginare alcun software che non sia strettamente conforme ad esso. Si inizia a vivere nel proprio universo di bolle.
Poi devi collaborare ad altri progetti e la realtà ti colpisce duramente. Agile è ancora un metodo di sviluppo software relativamente nuovo. Ha circa 14 anni; è stato definito a malapena nel 2001. La maggior parte del settore utilizza ancora tecniche di gestione dei progetti e di sviluppo del software definite negli anni Settanta o Ottanta. Queste sono le tecnologie consolidate. Sono quelle incise nella nostra cultura. Sono metodi provati, applicati e dimostrati. Sono quelli che la stragrande maggioranza del settore utilizza.
E mi riempie di una strana sensazione ogni volta che mi rendo conto della triste verità che mi circonda.