Analizziamo valori e priorità la cui consapevolezza è utile nel pianificare un software: Porsi le domande giuste e darsi le risposte corrette è critico durante la progettazione di una soluzione.
Lo psicologo Abraham Maslow ha concepito il concetto di gerarchia dei bisogni divulgandone il succo attraverso la “Scala di Maslow”.
La scala di Maslow rappresenta i bisogni primari delle persone raggruppandoli in 5 categorie ordinate per importanza:
Secondo Maslow l’individuo medio nella realizzazione di diverse esigenze dà la priorità a quelle che rispondono a bisogni più in basso e non ancora realizzati.
Che cosa c’entra la scala di Maslow con il software?
La risposta è che creando software le persone e le logiche business stabiliscono dei bisogni con priorità differenti, che mediamente riscontriamo nello stesso ordine e che in qualche modo fanno riferimento a valori paralleli nella scala di Maslow:
Vediamoli in ordine di importanza:
Useresti un software che vi fa rischiare la vita?
Affideresti un paziente ospedaliero a una macchina con dentro un programma mal funzionante? Faresti controllare lo stato dei freni da una centralina difettosa?
Ovviamente no.
Questo valore è talmente fondamentale e importante da risultare scontato, tanto che paradossalmente è il meno menzionato perché sottinteso.
In campo informatico esistono diversi modi in cui un software può causare danni, per suo malfunzionamento o per mancata gestione di imprevisti nell'ambiente con cui interagisce:
Tutti questi problemi possono causare perdite di tempo come minimo (in ambito business il tempo è denaro!) e talvolta ingenti danni economici e implicazioni legali (si pensi ad una azienda che sbaglia gli importi di contabilità nel momento in cui deve trasmetterle all’agenzia delle entrate...).
Anche se non sono in gioco vite umane, questa tipologia di problemi può dunque portare a conseguenze molto gravi e assume l’importanza più grande, dopo la salvaguardia della salute umana.
Salvaguardate le persone e le loro tasche, il software deve svolgere correttamente il suo compito.
Immaginiamo di avere una calcolatrice in cui non funzionasse il tasto “+”: Non può comprometterci più di tanto ne tanto meno mettere a rischio la nostra salute (eccetto che in un esame!), possiamo comunque dire che è molto poco utile.
La corretta realizzazione di tutte le funzioni offerte è il prossimo valore da realizzare una volta che sia garantita la sicurezza di persone e cose.
L'user experience consiste nella cxoniugazione di usabilità e grafica.
Posto che l'applicazione non danneggi nessuno e faccia quello che deve fare, tra due alternative probabilmente sceglieremo (tutti tranne i masochisti) di usare quella che ci riesce meglio di usare.
Un software arrivato a questo punto di soddisfacimento dei bisogni cerca di offrire le proprie funzionalità all’utente nel modo più agevole e appetibile possibile.
Nella user experience sono incluse tutte le interazioni con tutti gli stakeholders: Per questo motivo la SEO, ovvero l'ottimizzazione per la "user experience dell'utente google" che visita un sito, è inclusa in questo livello di priorità
Anche se l’utente finale non si accorgerà mai della differenza, gli sviluppatori che dovranno aggiornare o modificare il software saranno ben consapevoli di quanto risparmio di tempo (e imprecazioni) comporti avere un software scritto in modo leggibile e ben organizzato.
Il software leggibile è automaticamente mantenibile a metà o meno del costo del software non leggibile, tanto che spesso si fa prima a rifare un codice illeggibile piuttosto che intervenire per modificarlo. Il fatto poi che sia ben organizzato riduce a meno della metà i costi di manutenzione evolutiva, ovvero estensione o modifica delle funzionalità.
Tutti i prodotti del mondo sono perfettibili.
Se fate bene il vostro lavoro sicuramente vi verranno in mente altre cose da modificare o migliorare, e quelle vanno messe a questo livello di priorità, ovvero quanto tutto il resto è a posto.
Ricordiamoci sempre che la soluzione ad un problema non può lasciarne uno più grave, altrimenti meglio lasciar perdere, quindi lavorando su un livello delle priorità evitiamo di intaccarne uno più alto.
Da queste considerazioni possiamo anche ricavare un utile insieme classificazione delle criticità dei problemi del software, con cui classificare le segnalazioni e i requisiti.