L’Agile Manifesto è stato redatto nel 2001 da alcune tra le più grandi personalità dello sviluppo software. Da allora, la community Agile cerca di diffondere e sostenere le migliori pratiche conosciute, vecchie ed emergenti, sotto il cappello di pratiche e metodologie Agili.
Ad una manciata di anni dal quarto di secolo, una domanda legittima, forse, ha fatto capolino di recente online: ma oggi, dopo tutti questi anni, l’Agile è ancora così rilevante?
Con l’evoluzione delle tecnologie e delle pratiche e metodologie a nostra disposizione, i nuovi linguaggi, il cloud, e tutto quello che di nuovo è arrivato negli ultimi 20 anni, è davvero ancora così importante parlare di Agile?
Ma cos’è questo Agile
Per poter riflettere su quanto sia ancora rilevante parlare di Agile nel 2024, è doveroso ricapitolarne velocemente i valori e principi, rendendo anche evidente la correlazione con altre metodologie – questo perchè sono sicuro che tutti avrete sentito parlare di Agile in qualche forma, ma purtroppo molti fraintendimenti si sono diffusi nelle implementazioni più comuni.
Il nome “Agile” nasce nel 2001 con la redazione e firma del Manifesto, nel quale troviamo una dichiarazione di intenti e i 12 principi Agili. Tra le metodologie Agili più conosciute ci sono sicuramente Scrum e Kanban, con il primo che negli ultimi anni è diventato enorme fonte di discussione a causa proprio di tante interpretazioni non proprio coerenti, volte sopratutto a rendere il tutto più digeribile ai contesti corporate.
Chiunque abbia avuto la fortuna, o la perseveranza, di incontrare davvero l’Agile in qualunque forma, riconoscerà subito che tante delle singole best practice che negli ultimi anni si sono diffuse e hanno guadagnato una buona nomea nel nostro settore non posso che derivare da quella radice – e viceversa, in alcuni casi.
Alcuni esempi? Eccoli!
I punti in comune tra eXtreme Programming ed Agile sono evidenti e quasi banali, probabilmente: per esempio, l’autore di XP è fra i firmatari del Manifesto, non a caso – ed includere XP significa anche includere altre pratiche facilmente riconducibili ad XP stesso, come il TDD, gli OKR (quarter cycle) o il planning (weekly cycle), evidentemente molto simile agli Sprint di Scrum. Allo stesso modo, anche il Lean è sicuramente riconducibile a moltissimi principi in comune, e di conseguenza l’approccio DevOps che ad esso si ispira, come la collaborazione stretta figure che spesso si considerano parti successive di un processo (Development e Ops, ma anche Testers, Product Management, etc) che è un ottima espressione di individuals and interactions over processes and tools.
Se pensiamo alle pratiche, la Continuous Delivery è espressamente citata dal Manifesto, e di conseguenza possiamo contare anche Continuous Integration e Trunk-Based Development; appare piuttosto evidente, infine, come i team cross-funzionali siano l’implementazione principale che rende i team “self-organized”.
E la lista potrebbe proseguire ancora per molto! Ritengo che le pratiche che rientrano in questo gruppo siano sostanzialmente tutte parte di un circolo vizioso positivo, alimentandosi ed abilitandosi l’una con l’altra.
Ma quindi vale ancora la pena parlare di Agile nel 2024?
Risposta breve? Si. Certo che si! Anzi, il tempo ha sicuramente aiutato a diffondere certi concetti, e le nuove tecnologie piuttosto che rendere inutile la filosofia Agile la potenziano.
Pensateci, oggi i computer sono velocissimi, i linguaggi di programmazione sono tutti molto più “dev friendly”, e poi tutti hanno a disposizione almeno uno smartphone in mano, la tecnologia è diventata davvero popolare nel senso più stretto del termine: considerando questo, possiamo riflettere sul fatto che qualche anno avere processi di sviluppo molto lunghi era considerato ragionevole perchè le tempistiche lunghe dovute a cattive pratiche nello sviluppo software erano accompagnate, ed in parte mascherate, da tempi altrettanto lunghi per poter anche solo compilare e testare il nostro codice.
Oggi, quando parliamo di Continuous Delivery, possiamo mirare ad avere realmente almeno una release al giorno senza patemi: la tecnologia per farlo è alla portata di qualunque team di sviluppo, sul cloud, senza necessità di configurare tutto in-house se non per una scelta specifica.
Un esempio lampante di quanto sia attuale parlare di Agile, Lean, ed XP ce lo da il libro Accelerate nel 2018: un libro basato su una ricerca che va a dimostrare, anno dopo anno, come le pratiche e le metodologie Agili abbiano un impatto enormemente positivo non solo sul team di sviluppo, ma anche e sopratutto sul successo aziendale – ed ogni anno la ricerca viene portata avanti ed aggiornata con l’annuale State Of DevOps Report, andando sempre più in profondità sull’argomento.
Fondamentale rimane anche continuare a parlarne e a diffonderne i valori, i principi e le pratiche tecniche che permettono ai team di diventare performanti: ci ritorneremo nei prossimi articoli di questa serie, ma è fondamentale capire che un organizzazione non può essere Agile se il team di sviluppo non mette in pratica le pratiche e metodologie Agile – in questo senso, grazie ad esse la tecnologia può abilitare l’azienda ad avere un maggiore successo e rispondere in modo più efficace alle esigenze del mercato e dei clienti.
Ma tanto ora arriva l’AI
Un altro elemento importante da mettere sul tavolo, che potrebbe generare qualche malinteso, è l’avvento dell’Intelligenza Artificiale, ma anche dei tool di Low/No-Code.
Nessuno di noi può sapere con certezza dove ci porteranno, anche se ovviamente io stesso ho una mia idea; la potenzialità piu grossa che vedo a livello di sviluppo software è quella di una IA che sia in grado di scrivere, mantenere e rifattorizzare a comando una codebase intera di un progetto. Qualcuno potrebbe pensare che questo tolga la necessità dei test automatici, in fondo li scriviamo sopratutto per assicurarci di non rompere il codice esistente con le future modifiche, e dato che si occupa di tutto l’IA… ma io non concordo.
Mi immagino, invece, di fare “TDD con l’IA” – ovvero scrivere codice in TDD, io scrivo i test e l’IA aggiorna la codebase per soddisfare il nuovo test e tutti quelli pre-esistenti – qualcosa di simile si può già fare su una singola classe, e sono sicuro sarà possibile farlo su un intera codebase in futuro.
Quest’esempio serve a spiegare il mio punto: ci sono aspetti della programmazione, anche piuttosto complicati, che sono dovuti al fatto che è molto difficile non tanto scrivere la prima versione di un software, ma mantenerlo nel tempo tenendo i costi del cambiamento sotto controllo. Se l’IA diventasse in grado di gestire lei la codebase, potremmo per esempio dimenticarci dei principi di Clean Code e Design Patterns – l’unica cosa che conta è che quel codice faccia quel che serve al business, il design non dovrà più essere ottimizzato per la leggibilità e la manutenibilità, ma solo, quando richiesto, per eventuali performance migliori. Per questo vorrei continuare a scrivere io i test automatici, per garantirmi quel livello di controllo che mi faccia dire “il codice fa quel che serve”.
È un piccolo esempio per dimostrare come secondo me le pratiche Agili rimarranno fondamentali: se fare TDD può darci controllo sul comportamento del codice, se faremo manutenzione solo dei test sarà quello il nostro focus lavorando in pair/mob, con gli stessi benefici attuali di condivisione conoscenze e review in tempo reale; essere in grado di fare CI rimarrà fondamentale per poter rilasciare in meno tempo possibile un MVP della nostra feature e capire se funziona, semplicemente il tempo richiesto sarà sempre meno perchè molti più elementi saranno automatizzati.
Per concludere, insomma, la risposta mi sembra evidente: si, l’Agile, il Manifesto, Lean, XP – tutte queste metodologie intrecciate tra loro continueranno ad essere di valore, ed anzi paradossalmente potranno aumentare il loro valore perchè impattanti su tutta quella parte di lavoro dove l’IA avrà impatto minore perchè il contesto, gli obiettivi aziendali, la conoscenza del dominio e delle specificità del caso sono importantissimi – e in un mondo in cui gli aspetti puramente tecnici si appiattiranno un pò grazie a queste automazioni, saranno pratiche e metodologie di lavoro gli elementi su cui potremo avere maggiore impatto e fare davvero la differenza.
Ciao, sono Dan the Dev!
Se questo articolo ti è piaciuto, sappi che è solo il primo di una serie di articoli mensili a tema Agile che cominciano proprio da questo, quindi preparati perchè nel 2024, ogni mese, porterò i temi dell'agilità! Dai anche un occhiata a Learn Agile Practices, il mio ecosistema di contenuti online nei quali parlo di pratiche e metodologie Agile come TDD, CI, CD e molto altro a tema programmazione:
- Learn Agile Practices – una newsletter settimanale (in inglese) – iscriviti qui ➡️ https://learnagilepractices.substack.com/about
- Podcast, in italiano – scopri tutti i link per le varie piattaforme di podcast ➡️ qui
- Canale Youtube, versione video del podcast italiano – iscriviti ➡️ qui