Cosa serve per creare applicazioni aziendali di successo?
Per Mirko Gubian, Global Demand Senior Manager di Axiante, questa è la domanda che si pone oggi la gran parte delle organizzazioni, chiamata a ripensare e modernizzare il proprio approccio ai processi e agli strumenti per realizzarli. Cosa serve, quindi, per stare sul mercato con applicazioni veloci, facili da utilizzare e capaci di dialogare con i partner esterni?
La tecnologia non è l’unico driver per garantire il successo di un’applicazione. Si tratta piuttosto di un prerequisito, ma non è questa a guidarne la realizzazione. Il vero punto di partenza è rappresentato dai processi e l’elemento chiave è costituito dalle persone che li realizzano.
A tutti sarà capitato di iniziare le prime fasi di analisi di un processo partendo dal cosiddetto as is, ovvero dalla situazione attuale. A livello teorico, è un percorso semplice: si mappano i processi in atto, fotografando l’oggi, e se ne disegnano di nuovi sulla base delle esigenze avvertite dell’azienda per costruire l’applicazione che li supporterà. Questa prima mappatura generalmente evidenzia subito delle distorsioni: i diversi attori del processo hanno spesso una visione differente di ciò che avviene e delle persone che sono coinvolte nelle varie fasi.
Questi problemi non nascono dall’utilizzo di una determinata tecnologia o da particolari competenze tecniche. Spesso sono il frutto di una impostazione sbagliata: ci si concentra solo sugli aspetti tecnologici, senza coinvolgere le persone che dovranno usare quelle tecnologie. Ma come possiamo, allora, essere certi che le soluzioni disegnate soddisfano i bisogni del processo e delle persone che vi prendono parte?
Mettere le persone al centro: il design thinking
La qualità di una soluzione digitale non dipende unicamente dalla tecnologia su cui è basata, ma soprattutto da quanto sia utile per gli utenti. È il motivo che ha reso il design thinking essenziale nello sviluppo delle applicazioni: si tratta di un processo capace di ampliare le prospettive e aiutare a ideare soluzioni più efficienti, sulla base delle necessità specifiche delle persone coinvolte.
Grazie a questa metodologia, le persone sono incoraggiate a esplorare alternative e opzioni nuove, analizzando il contesto e allargando la visione a tutti gli attori coinvolti nel processo. Adottare le tecniche del design thinking senza la supervisione di un consulente esperto della metodologia può comportare, però, anche dei rischi. Il pericolo è quello di rimanere bloccati all’interno della cosiddetta ‘fase divergente’, quella cioè in cui si esplorano soluzioni nuove e alternative, senza mai venire a capo di una decisione.
Convergere verso la soluzione ottimale: l’agile management
Le tecniche di design thinking possono essere adattate alla realizzazione di qualsiasi processo, ma il loro impiego nel mondo delle applicazioni va invece affiancato a una corretta metodologia di gestione dei progetti e della pipeline di sviluppo dell’applicazione stessa.
Negli ultimi anni l’agile management si è ampiamente diffuso nell’ambito dello sviluppo software, grazie agli indubbi vantaggi che porta alla realizzazione di una soluzione in linea con le aspettative e le esigenze dell’organizzazione. I team lavorano in modo più performante, potenziando la collaborazione e aumentando la qualità. Inoltre, i principi agile incrementano la flessibilità e la suddivisione del lavoro in più fasi: ciò si traduce in una maggiore pianificazione, una migliore esecuzione e una crescente visibilità sull’intero processo, riducendo i tempi di sviluppo.
Per chi conosce sia le tecniche di design thinking sia le metodologie agile, appare quindi naturale integrarle con l’obiettivo di creare soluzioni migliori. Resta però una variabile: come arrivare velocemente al prototipo della soluzione per rendere tangibili i processi?
I fattori tecnologici abilitanti: DevOps & Cloud Native
DevOps, microservizi, container sono termini ormai abusati. Spesso sembrano avere un significato solo per architetti software e sviluppatori. In realtà, si tratta di strumenti abilitanti: in fase di design e di sviluppo consentono di creare intere infrastrutture, anche solo temporanee, a partire dal codice, permettendo la prototipazione di soluzioni complesse, abbattendo le barriere economiche e garantendo un livello di flessibilità elevatissimo. Inoltre, la corretta gestione della pipe di rilascio consente di avere on line sempre l’ultima versione testata e funzionante.
Ora che abbiamo stabilito quali sono i tre ingredienti – funzionale, gestionale e tecnologico – necessari alla creazione di un’applicazione di successo, resta da chiedersi quale sia la migliore ricetta per metterli insieme.
Applicazioni aziendali: serve governare l’intero ciclo
Lavorando da anni al fianco di colleghi e clienti in team multidisciplinari, in Axiante abbiamo perfezionato un approccio che definiamo a tre livelli. Immaginiamo di avere tre stream di progetto – stream e non team perché è possibile, anzi auspicabile, che le stesse persone appartengano a stream differenti. Di questi tre, uno sarà dedicato all’analisi, un altro alla prototipazione e il terzo alla realizzazione della soluzione.
Il compito di ogni stream è alimentare il successivo, non in una logica waterfall, ma in un’ottica di sprint. Uno sprint di analisi ne alimenta uno di prototipazione che, a sua volta, alimenta quello di solution delivery. Al termine di ogni sprint si alimenta quello del team successivo. Adottando questo approccio il secondo e il terzo stream saranno “in ritardo” rispetto al primo ma, in caso di progetti a media o alta complessità la scelta di approcciare l’integrazione in parallelo produce una pipeline che può accorciare il time to delivery fino al 50%.
Forewords: e la tecnologia?
Lo abbiamo detto all’inizio: la tecnologia è un prerequisito. Ciò non la rende meno importante e neppure ne facilita l’implementazione dal punto di vista tecnico. È un prerequisito nel senso che, per far sì che un team tecnologico resti aggiornato, è sempre necessario mantenere elevato il livello di formazione e di confronto tra il team tecnico e il team funzionale. Tra i due ruoli non dev’esserci una scollatura, ma entrambi devono percepirsi come complementari senza che l’uno sia considerato preminente sull’altro.
L’obiettivo finale, d’altronde, è comune: l’ottenimento del miglior risultato possibile.