Le applicazioni sono oggi il fulcro del business aziendale e il vero elemento abilitante della trasformazione digitale. Molto si discute dei modelli di sviluppo pensati per accelerare i rilasci o per garantire maggiore sicurezza (Agile, DevSecOps), per adattarsi in modo nativo al cloud (cloud native), per sfruttare la flessibilità del riutilizzo del codice (microservizi) e per sfruttare la flessibilità della virtualizzazione (container).
Tutto ciò attiene alle “practice” tecnologiche dello sviluppo, ma esiste un tema prioritario e fondamentale che riguarda l’approccio alla progettazione dell’applicazione che, se non correttamente affrontato, rischia di vanificare ogni sforzo.
Progettare un’applicazione con il Design Thinking
Creare o riprogettare un’applicazione rappresenta un atto creativo, che deve rispondere a precise esigenze di utilizzo, organizzazione ed efficienza. Uno dei modi più innovativi ed efficaci per progettare applicazioni è il Design Thinking, che si caratterizza per il fatto di mettere al centro del processo di creazione dell’applicazione l’esperienza dell’utente e l’efficacia dei processi.
Nell’approccio tradizionale alla progettazione di un’applicazione, le problematiche da risolvere e le funzionalità da implementare vengono ricavate sulla base di una serie di interviste fatte ai futuri utilizzatori. Da queste interviste lo sviluppatore ricava tutte e sole le indicazioni necessarie per guidare lo sviluppo e per consentirgli di tornare dal cliente a presentare i risultati del proprio lavoro. A questo punto, tuttavia, il committente avrà poche alternative rispetto ad approvare l’applicazione se questa fornirà le funzionalità richieste.
Diversa è la strada scelta da Axiante, azienda con sede ad Agrate Brianza (MB) che aiuta le organizzazioni medio-grandi (fatturato da 100 milioni a diversi miliardi di Euro) a migliorare le performance e i processi, trovando la migliore soluzione che crei sinergia tra business, tecnologia e persone.
“Un’applicazione va pensata come qualcosa di più articolato rispetto a un mero insieme di funzionalità – spiega Mirko Gubian, Global Demand Senior Manager di Axiante -. Se l’azienda di sviluppo si presenta con un’applicazione che funziona, il cliente ha poche possibilità di richiedere modifiche significative anche nel caso in cui l’applicazione si dovesse integrare male nel processo di lavoro o non dovesse rispondere in pieno alle aspettative degli utenti.
Axiante, da tempo, ha sposato l’approccio del Design Thinking che presuppone di acquisire una visione olistica del processo. Si tratta di un approccio più laborioso, che prevede un’interattività maggiore tra azienda di sviluppo e personale aziendale e che procede attraverso la definizione di una serie di fasi successive. Il risultato finale rende gli utenti più contenti perché la soluzione viene sviluppata sulla base delle esigenze reali e non raccontate e soddisfa maggiormente i requisiti di business perché si integra ottimamente con i processi aziendali”.
Le fasi del Design Thinking
Anche il Design Thinking parte da una tradizionale raccolta di requisiti e da interviste, ma poi prevede di introdurre un concetto di empatia indirizzato ad acquisire una comprensione approfondita del contesto in cui l’applicazione sarà utilizzata.
In base a questo presupposto, si procede a selezionare un gruppo di utenti che racconta quali sono le sue esigenze e come sta operando, evidenziando le problematiche legate a ciò che non riesce a fare oppure a cui l’applicazione che sta utilizzando (qualora ve ne sia una) non fornisce una risposta ottimale.
L’utente non rivolge il suo racconto necessariamente a chi sarà deputato a sviluppare l’applicazione ma, piuttosto, a qualcuno che conosce molto bene l’organizzazione e il suo business.
Questa fase di comprensione prevede anche l’osservazione diretta, in cui l’utente viene affiancato da un professionista che si siede accanto a lui per osservarlo nel corso di una giornata lavorativa: l’obiettivo è di immedesimarsi meglio con ciò che fa l’utente, osservando come interagisce con l’applicazione esistente oppure i compiti che esegue manualmente in caso un’applicazione non esista.
Una volta completata questa fase d’interazione con l’utente e chiarito il contesto di utilizzo diventa, quindi, possibile definire in modo ottimale i contorni dei problemi da risolvere per predisporre un primo documento di analisi.
A questo punto interviene la fase di ideazione che rappresenta una sorta di processo divergente in cui più persone interagiscono in modo creativo proponendo più soluzioni alternative per risolvere il medesimo problema. Dalla fase divergente si arriva a quella convergente, in cui le idee migliori sottoposte vengono selezionate per dare il via alla prototipazione a cui farà seguito la fase finale di test.
L’obiettivo del Design Thinking è di fare una mappatura della user experience e dell’interazione dell’utente rispetto al processo e non all’applicazione, che costituisce solo uno dei punti di contatto di quel processo.
“Quando andiamo da un cliente non ci limitiamo ai racconti degli utenti – precisa Gubian – perché potremmo ottenere una visibilità solo parziale del processo. Molto spesso gli utenti dell’applicazione non hanno piena consapevolezza dell’intero processo, ma solo quella parziale legata al loro ruolo oppure si dimenticano di evidenziare alcune fasi che vengono date per scontate. Per questo motivo è importante comprendere tutti i ruoli e le persone coinvolti nel processo in cui si inserisce l’applicazione, inclusi anche gli aspetti che non sono toccati direttamente dall’applicazione”.
Comprendere il processo permette anche, per esempio, di valutare la possibilità di integrazione dell’applicazione con pacchetti esterni che potrebbero risolvere alcune tematiche evitando di dover ricorrere a processi di sviluppo ad hoc.
Nel suo approccio allo sviluppo Axiante segue i criteri cloud first, pur restando sempre prioritariamente aderente alle specifiche richieste e strategie del cliente. Altri punti centrali dell’azione di Axiante sono la sicurezza by design e l’adozione delle più recenti practice di sviluppo, da DevSecOps ai container e alla loro orchestrazione.