Perché occorre diventare Agile

Scritto da: Davide Ighina


None

Nei tradizionali approcci di project management si presuppone che i requisiti siano chiari al cliente già all’avvio del progetto e che egli possa attenderne la fine per effettuare l’acceptance test . Ma è veramente sempre così? Esploriamo insieme le ragioni per cui diventa sempre più necessario abbracciare una metodologia alternativa.

Ogni progetto è caratterizzato in maniera univoca dai suoi vincoli. Secondo il concetto di triple constraint la natura sistemica dei progetti può essere rappresentata da un triangolo ai cui vertici vi sono:

  • tempo = deadline entro cui il progetto deve essere realizzato;
  • budget = costo che non deve essere superato;
  • ambito = lavoro richiesto per il completamento del progetto.

Obiettivo del business è di ottenere il miglior risultato, nel minor tempo e con il minor costo possibile.

Il legame esistente tra questi vincoli non consente però l’applicazione di un approccio lineare, poiché i cambiamenti riguardanti uno si ripercuotono inevitabilmente sugli altri. Aggiungere nuove features al prodotto costringe a riconsiderare la schedulazione e il carico del risorse, così come la decisione di anticipare i tempi di rilascio comporta un aumento del budget o un ridimensionamento dell’ambito di progetto.

triple_constrint.jpg

Le metodologie Waterfall

Per gestire tale complessità le imprese si affidano a un sistema di pratiche, tecniche e procedure che prende il nome di Project Management. Secondo l’approccio tradizionale, il project team è chiamato a una pianificazione dettagliata dell’ambito che, una volta concordato con gli stakeholders, costituisce la base da cui derivare a cascata [waterfall] gli altri documenti della baseline, nonché le successive fasi: esecuzione, monitoraggio e chiusura.

Risalire il corso del progetto è possibile, ma non senza un notevole dispendio di costi e tempo. La definizione iniziale dei requisiti riveste infatti un ruolo fondamentale.

Nella misura in cui vengono individuati come rischi tutti quegli eventi che possono portare al mancato rispetto della baseline, lo scope rappresenta un elemento fisso, da preservare da eventuali change requests o fintanto che queste non saranno state accolte in una nuova baseline; il che avviene soltanto a fronte di formali e severi processi di approvazione.

Le Metodologie Agile


“Il cliente“ recita le legge Humphrey, “non sa mai cosa vuole finché non vede il prodotto funzionante”; ciò è tanto più vero negli ambienti di R&D e sviluppo software, la cui incertezza non consentire una pianificazione dettagliata. Quando il progetto inizia non se ne possono prevedere gli esiti, né l’utente riesce a razionalizzare i requisiti poiché ancora non immagina come sarà la propria interazione con il prodotto. Se si seguisse un approccio tradizionale si correrebbe il rischio di dover rifare gran parte del lavoro quando ormai è troppo tardi.

In risposta a tale criticità, l’agile predilige rapidi e frequenti cicli di esecuzione-monitoraggio-adattamento (sprints) attraverso cui garantire al cliente porzioni di lavoro funzionanti (quelli che in gergo vengono chiamati chunks). Soltanto così egli potrà comprendere se quanto desiderato corrisponde alla realtà. Sulla base delle informazioni acquisite, il team di sviluppo sviluppo pianifica la nuova iterazione, ridefinendo gli assunti sottostanti alle alle previsioni iniziali.

Per chi lavora in agile i cambiamenti dell’ambito costituiscono la norma. Lungi dall’essere percepiti come un rischio da evitare, vengono accolti e incentivati come opportunità per generare valore. Al contrario, i vincoli considerati fissi sono costi e tempi. Dal “quanto tempo costa e quanto tempo serve per realizzare questo prodotto?” si passa al “con questo tempo e questo budget quanto possiamo realizzare?”.

shutterstock_4.jpg

Plans are nothing, planning is everything

L’agile è una metodologia empirica ed estremamente concreta. Basando ogni processo di pianificazione sull’esperienza, gestisce l’ambito di progetto come una variabile sempre negoziabile per far fronte alle turbolenze interne ed esterne, quali per esempio:

  • esigenze del cliente
  • mutamenti del mercato di riferimento
  • tecnologie utilizzate
  • team di progetto
  • strategie aziendali

Ne consegue una demistificazione della baseline. Affinché ricalchino la dinamicità del contesto in cui si trovano, piani e procedure devono essere sufficientemente snelli da poter recepire il cambiamento dei requisiti, anche quello tardivo. Lo stesso discorso vale per la documentazione: consapevoli del suo carattere mediato, gli agilisti ne promuovono un uso limitato, senza confondere lo strumento di osservazione con la realtà osservata e dimenticarne la convenzionalità originaria. A loro giudizio bisogna privilegiare il working software; unica metrica realmente oggettiva dell’avanzamento di un progetto, nonché artefatto indispensabile per comprendere le reali esigenze del business.

Conclusioni

Difficilmente si lavora puramente in agile, senza l’ausilio dei tradizionali strumenti di project management (Gantt, WBS, Critical Path Method, etc.). Spesso la strategia vincente consiste proprio nel saper attivare metodologie diverse a seconda delle fasi o del contesto applicativo, consci del fatto che ciò che si perde in struttura e stabilità lo si guadagna in prontezza e flessibilità.

Articoli correlati

sviluppo-single-page-application-milano.jpg
Le SPA o Single Page Application sono applicazioni web fruibili come singola pagina senza necessità di caricamento per pagine: scopriamone …
Progressive Web App cosa sono SAEP ICT
Le PWA sono un’ottima alternativa alle app e ai siti tradizionali, con diversi vantaggi anche per gli sviluppatori. Scopriamo in …
consulenza-informatica-milano.jpg
Cosa si intende per consulenza informatica?La consulenza informatica consiste nell'offerta di servizi professionali da parte di esperti IT per aiutare …
Che Cos'è l'ICT: Definizione, Applicazioni e Sviluppo
Ti sarà capitato di chiederti cosa significhi ICT - Information and Communication Technologies - acronimo oggi molto diffuso, talvolta abusato, …
sviluppo-software-personalizzato.jpg
Lo sviluppo di software personalizzato é un approccio molto utilizzato tra le aziende che vogliono ottimizzare i propri processi. A …
continuous-delivery-sviluppo-software.jpg
Continuous integration e continuous delivery: cosa sonoInnanzitutto definiamo il concetto di continuous integration o integrazione continua.Un esempio pratico?Quando sviluppiamo un …
Sviluppo in Python - intervista
Ciao Matteo, innanzitutto raccontaci almeno un po’ di te: come sei arrivato in SAEP ICT e che tipo di percorso …
app-per-offerte-commerciali.jpg
Offerte e preventivi: i parametri utili per snellire i processiCome ogni commerciale o agente di commercio sa, la creazione dell’offerta …
sviluppo-applicazioni-angular-milano.jpg
Caratteristiche principali di AngularAngular è un framework opensource dedicato allo sviluppo di applicazioni WEB e sviluppato principalmente da Google. Dire …
catalogo digitale.jpeg
Scegliere di sviluppare un catalogo digitale significa in prima battuta rinunciare.A cosa?Ai costi del cartaceo, innanzitutto: costi di stampa, costi …
sviluppo-software-linguaggio-python.jpg
Il linguaggio di programmazione Python è confermato da O'Reilly come uno degli argomenti più cercati ed utilizzati sulla propria piattaforma.Ricordiamo …
ecommerce con tecnologia headless
Nell’ultimo biennio ed in particolare nell’ultima importante fase di emergenza sanitaria, le esigenze dei clienti B2B hanno virato verso una …
GDPR
Il Regolamento Europeo 2016/679, meglio conosciuto come GDPR è un insieme di norme in materia di trattamento dei dati personali …
Portal
Con l’avvento dei nuovi canali di comunicazione nati grazie al Web, le imprese moderne dispongono di diversi strumenti per instaurare …
software-house
Nel corso degli anni, le Software House hanno giocato un ruolo cruciale nell'evoluzione del settore IT. La loro storia si …
Interfaccia Utente
Cos'è l'interfaccia utente nel mondo digitale?L'interfaccia utente (o UI - User interface) nel mondo digitale rappresenta il punto di contatto …
web app
Cosa si intende per web app?Una web app è un software applicativo che utilizza tecnologie web e a cui è …
User Experience cos'è e perché è importante
Cos'è la User Experience (UX) e perché è così importante?La User Experience, spesso abbreviata in UX (esperienza Utente), si riferisce …
Software gestionale
Quali caratteristiche deve avere un gestionale per adattarsi perfettamente alle esigenze specifiche di un eCommerce? E soprattutto, quali sono i …
API-gateway-cos-e-saep-ict
Cos'è un API Gateway?Il termine API, acronimo di Application Programming Interface, si riferisce a un insieme di definizioni, protocolli e …
Progettazione software
Cosa si intende per progettazione di un software?La progettazione software è il processo di definizione dell'architettura, dei componenti, delle interfacce …
cosa si intende per cybersecurity
Ma cosa si intende esattamente per cybersecurity, e perché è così cruciale proteggersi dalle minacce online? In questo articolo approfondiremo …
Linguaggi di programmazione
Nel mondo della tecnologia e dello sviluppo software, i linguaggi di programmazione giocano un ruolo fondamentale. Sono gli strumenti con …
Che cos'è il software applicativo e come funziona
Che cos’è un software applicativo?Un software applicativo è un tipo di software progettato per consentire agli utenti di svolgere compiti …
Come automatizzare gli ordini nel tuo eCommerce
La gestione tradizionale degli ordini, che richiede tempo e risorse umane per garantire che ogni passaggio sia corretto, diventa sempre …