XP: Silver Bullet?
Arcifamoso è l'eccellente articolo di F. Brooks: No silver bullet: Essence and accidents of software engineering, IEEE Computer, Vol. 20, n. 4, Apr. 1987
Ho provato a ripensare ai processi agili e in particolare all'Extreme Programming (XP) che io considero una "pallottola d'argento" spuntata (so bene di dire qualcosa di politicamente scorretto e non mi fa piacere. Perfino un guru come Fowler non considera XP un "silver bullet", e questo rende il presente post davvero minimale e personalissimo), per dare ragione ad alcune perplessità.
Innanzitutto si tratta di una rivoluzione terminologica e non concettuale. Affonda le sue radici in un solco già ben definito dell'ingegneria del software in particolare in tutta quel filone che ha praticamente rimosso il modello a cascata. Alcune sue pratiche come il pair programming, refactoring, collective ownership, coding standards non sono delle novità, e possono essere first-citizen in molti ambiti. E qui veniamo al secondo punto: estremo mi pare che significhi (sotto la scorza della propaganda) esattamente il mettere tutte le pratiche proposte in un processo universale che eliminerebbe alla radice problemi quali gestione dei requisiti, controllabilità e stabilità del processo, qualità del prodotto,... Una visione ideologicamente distorta perché appunto non esistono pallottole d'argento per far fuori i licantropi e ogni pretesa universalistica non tiene conto della complessità intrinsica del software (essential difficulties) ben argomentata da Brooks.
Altra perplessità è il soggiacente oscuramento del design for change che a mio avviso porta ad architetture sotto-ingegnerizzate e alla fine - a causa di tutti gli adattamenti - fragili e poco flessibili (mentre un'architettura è l'intelaiatura portante di un sistema entro cui far crescere i requisiti).
Anziché elencare altre perplessità termino evidenziando alcuni punti di forza della metodologia del signor Beck: un merito è quello di aver portato in superficie il fatto che il codice di un sistema è il fine ultimo di ogni processo e dunque a questo bisogna dedicare molta attenzione (e aggiungo una buona attività up-front di analisi/design è ancora più determinante); molte volte i programmatori sono avviliti a causa dell'ingente burocrazia che generalmente circonda l'attività di sviluppo e in questo XP offre buoni spunti risolutivi.
La mia idea è che un buon professionista non dovrebbe sposare questa o quella metodologia ma essere capace di fondere il meglio delle proprie conoscenze (e tra queste senz'altro le metodologie agili) nei contesti in cui si trova ad operare.
Labels: IT
