La rivoluzione tecnologica degli ultimi anni ha ribaltato le dinamiche dei processi di innovazione andando a mettere in discussione addirittura l’organigramma aziendale. Fino a qualche anno fa, l’innovazione arrivava dall’alto; manager decidevano di dare vita a una nuova linea di prodotto e i tecnici cercavano le soluzioni per far sì che questo potesse accadere. Le nuove tecnologie sono però così complesse e dirompenti da risultare difficilmente comprensibili ai non addetti ai lavori e quindi non fungono più da seme del classico processo di innovazione top-down. Ci troviamo quindi in un’epoca in cui l’innovazione tende sempre più a nascere dal basso. Sono i tecnici, gli informatici, i giovani startupper che trovano il modo di risolvere un problema vecchio di decenni in una maniera innovativa che fino a poche settimane prima era semplicemente inimmaginabile. Questa innovazione guidata dalla disponibilità tecnologica è decisamente dirompente e ha la potenzialità di viaggiare a velocità impressionanti ma ha un grosso difetto: è puramente tecnocentrica. È necessario invece orientare lo sviluppo di nuovi prodotti verso il design antropocentrico.
Indice degli argomenti
L’interazione uomo-macchina e il design antropocentrico
Tecnici e informatici, in particolare, tendono a sviluppare soluzioni e prodotti per loro stessi e per i loro simili. Questa innovazione dal basso è infatti alimentata dal desiderio dei tecnici di cambiare il mondo rendendolo un posto più efficiente e comodo. Il problema è che questi aggettivi sono tutti soggettivi, ciò che è più comodo per un informatico può essere un incubo per tanti altri ominidi.
David Hanson, padre del robot FACE dell’Università di Pisa e di Sophia, il robot umanoide da molti ritenuto il più espressivo umanoide mai costruito, ha detto: “dobbiamo lavorare per umanizzare la tecnologia ed evitare che la tecnologia ci disumanizzi” (“We have to humanize the technology instead of de-humanizing humans”).
È chiaro che le competenze tecniche siano il bagaglio fondamentale di informatici e ingegneri, ma in un’epoca in cui le scelte dei tecnici cambiano la vita delle persone è necessario mettere in discussione profondamente i processi di progettazione e sviluppo dei prodotti.
Per questo motivo, negli ultimi anni si è iniziato molto a parlare di design dell’interazione uomo-macchina (Human-Machine-Interaction HMI) e dell’interazione uomo-computer (Human-Computer Interaction HCI) e più in generale di design antropocentrico (Human Centered Design).
Portare il termine design nel mondo della tecnologia apre però a qualche problema di forma mentis. È importante notare infatti, che nel mondo del design, e in particolare nel design di prodotto, si approccia alla risoluzione dei problemi e alla progettazione con una forma mentis di tipo creativo e orientata alla risoluzione dei problemi delle persone.
Nel mondo della tecnologia, e in particolare in informatica, si tende invece ad aggredire i problemi con un approccio di tipo “computazionale”.
Il robot Sophia
Il pensiero computazionale
Nel 2006 Jeannette Wing, direttrice del Dipartimento di informatica della Carnegie Mellon University, formulò la seguente definizione di pensiero computazionale (computational thinking): “il pensiero computazionale è un processo di formulazione di problemi e di soluzioni in una forma che sia eseguibile da un agente che processi informazioni.”
Il pensiero computazionale è quindi un processo mentale che consente di risolvere problemi di varia natura grazie alla pianificazione di una strategia, di una logica di esecuzione. Il pensiero computazionale consente di fruire delle potenzialità delle macchine quali oggetti capaci di compensare le lentezze o l’imprecisione dell’uomo, se ben programmati.
Il pensiero computazionale è infatti basato sulla suddivisione di un problema in sotto-problemi così da poter giungere ad una formalizzazione del problema sotto forma di algoritmo (serie di passi finiti). Questi passi se eseguiti da una macchina portano alla risoluzione del problema. In un algoritmo non c’è spazio per il libero arbitrio, per l’indecisione, per il bello e il brutto, per le opinioni; c’è solo il risultato: OK o KO!
Nel modo del design invece, la progettazione è tipicamente affrontata in maniera globale. L’obiettivo principale del design di prodotto non è necessariamente quello di trovare una soluzione al problema specifico ma è piuttosto quella di comprendere il problema stesso nel suo insieme. Nel mondo del design il primo passo è sempre quello di capire perché il problema esiste e solo dopo aver appurato che l’origine di un problema non può essere eliminata o mitigata ci si adopera per cercare di risolverlo nello specifico.
Viceversa, per estremizzare, l’informatico o il tecnico in generale, non appena si trova davanti a un problema, apre il proprio editor di testo e inizia a scrivere un algoritmo per cercare di risolverlo senza neanche chiedersi se il problema che si sta affrontando esiste veramente.
Il design antropocentrico
George Berkeley, filosofo irlandese del ‘700, sosteneva che gli oggetti esistono solo in quanto percepiti. Dunque, se un albero cade in una foresta e nessuno lo sente, non fa rumore. Estesa al mondo dell’interazione uomo-macchina e dello sviluppo prodotto in generale, l’affermazione di Berkeley potrebbe essere riscritta in: se un problema non è percepito da un utente allora non esiste.
Nel design antropocentrico e quindi nello studio dell’interazione uomo-macchina, l’obiettivo primario è quindi quello di avere un utente soddisfatto e non un software perfetto e ricco di funzionalità.
Questa diversità di pensiero fra designer dell’interazione e algoritmisti porta con sé delle conseguenze importanti. Nel design di prodotto ci si trova spesso a modificare i requisiti e le specifiche di prodotto in corso d’opera per andare in contro alle esigenze degli utenti, sacrificando funzionalità e opzioni. Nel mondo dello sviluppo software, fino a qualche anno fa, i requisiti e le specifiche dovevano essere scritti su pietra all’inizio del progetto diventando le fondamenta dell’intero processo di sviluppo.
Questa apparente incompatibilità fra sviluppo software e sviluppo prodotto ha portato molti informatici a interrogarsi sulla necessita di far evolvere i fondamenti dell’ingegneria del software.
L’ingegneria del software è una disciplina dell’informatica che studia i processi produttivi e le metodologie di sviluppo finalizzate alla realizzazione di sistemi software. Il modello storico su cui l’ingegneria del software ha costruito i propri fondamenti è noto come sviluppo a cascata (waterfall model) ed è strutturato in una sequenza lineare di passi: 1) analisi dei requisiti, 2) progettazione, 3) sviluppo, 4) collaudo, 5) manutenzione.
In parole povere, estremizzando, l’informatico classico pretende dal cliente dei requisiti chiari e immutabili, sviluppa in autonomia il software che assolve ai requisiti, verifica con il cliente che tutto funzioni come concordato e poi resta a disposizione per fare assistenza nel caso qualcosa vada storto… Nello sviluppo waterfall non c’è spazio per l’esperienza utente! Se il software funziona ma l’utente lo trova difficile da utilizzare questo non si riesce neanche a formalizzarlo nei requirement, non c’è spazio per queste cose… “a me funziona” direbbe un informatico lanciando il software appena sviluppato da una riga di comando Linux.
Video: Cos’è lo Human Centered Design (in inglese)
Lo sviluppo Agile fautore del design antropocentrico
Fortunatamente, gli informatici si sono resi conto che questo processo non era più adatto ai tempi moderni e hanno dato vita a una serie di nuovi metodi di sviluppo “snelli” che rientrano sotto il cappello di quello che è noto come “sviluppo Agile”. Lo sviluppo Agile cerca di avvicinare il mondo del design e quello dello sviluppo software includendo l’interazione con l’utente come pilastro del processo di sviluppo software e allentando quindi i vincoli imposti dal modello waterfall e soprattutto dalla formalizzazione di requirement immutabili.
Lo sviluppo Agile si ispira al mondo del design e nasce quindi con un impianto fortemente antropocentrico. Tuttavia, questo processo antropocentrico di adattamento del software alle esigenze dell’utente piuttosto che al virtuosismo tecnico è spesso vissuto dalla maggior parte degli informatici come una violenza. Il metodo Agile, perciò, è frequentemente adottato dagli informatici in maniera parziale e opportunistica. Si tende infatti ad abbracciare lo sviluppo Agile come mero modello organizzativo dello sviluppo software finalizzato alla distribuzione dei task di sviluppo fra i membri del team piuttosto che come modo di pensare orientato all’utente.
L’Agile è quindi spesso utilizzato come metodo di sviluppo software e non come filosofia di sviluppo prodotto.
Design antropocentrico e pensiero computazionale non sono però mutuamente esclusivi, anzi. È dall’unione dei due e nell’integrazione dei due processi di studio e progettazione che nascono prodotti di successo e software di qualità.
L’insegnamento di Donald Norman
Donald Norman, già direttore del Design Lab della University of California, autore di “Il computer invisibile” e “La caffettiera del masochista”, ci ricorda infatti che: “Ogni cosa con cui abbiamo quotidianamente a che fare è il risultato di un processo di design; una lampada, una strada, una casa. Nella progettazione di oggetti interattivi e interfacce utente però non possiamo limitarci alla progettazione puramente estetica. È necessario, infatti, andare oltre l’aspetto fisico e la piacevolezza alla vista o al tatto di un oggetto e curarci dell’esperienza e quindi della sensazione che l’utente proverà nell’interagire con l’oggetto (frutto) del nostro design. Un’interfaccia molto bella e graficamente accattivante ma impossibile da utilizzare è sicuramente un pessimo risultato per un processo di design.”
È necessario quindi estendere il mondo dello sviluppo software a una visione più ampia. L’informatico moderno deve rendersi conto che non è più possibile occuparsi solo del software perché oggi il software costituisce il 90% dei prodotti che utilizziamo e quindi quello che ieri era una parte dello sviluppo prodotto oggi ne rappresenta la quasi totalità. In altre parole, è necessario iniziare a fare sviluppo software con tecniche e modalità tipiche dello sviluppo prodotto!
L’obiettivo deve essere quindi quello di realizzare prodotti piacevoli da usare e non solo tecnologicamente avanzati. Gli sviluppatori moderni devono quindi mettere al centro del processo di sviluppo i bisogni degli utenti. La tecnologia deve diventare uno strumento non un fine.