L’ottimo articolo del 24 settembre sulla storia di “Clippy the Paperclip” di Felice Pescatore ha ispirato in qualche modo quello che andrete a leggere di seguito. In questo articolo cercherò di esprimere la mia visione circa i problemi di interazione uomo computer. Tengo a specificare che non sono un esperto di HCI (anche se ho studiato qualcosa a riguardo durante la mia carriera universitaria) quindi quanto leggerete è principalmente frutto di una analisi empirica di ciò mi capita di osservare.
Come scritto da Felice nel suo articolo l’utilizzo di agenti è basato sulla teoria che i computer siano in qualche modo “attori sociali”. Per quanto si possa condividere questa visione è sotto agli occhi di tutti il fatto che non abbia portato i vantaggi immaginati.
Nella realtà delle cose chiunque abbia avuto a che fare con agenti software sofisticati ha in qualche modo finito per odiarli profondamente, confermando le basi della teoria (odiare un componente software è pur sempre un interazione sociale) e evidenziandone allo stesso tempo i limiti implementativi.
Il problema fondamentale però secondo me non risiede nell’implementazione degli agenti ma nelle applicazioni che ne fanno uso. Per far capire meglio il mio punto di vista provate a immaginare questa situazione:
Un preparatissimo istruttore di volo che spiega la funzione dei dispositivi di pilotaggio di un Airbus ad un passeggero preso a caso.
Per quanto l’istruttore possa essere preparato il passeggero difficilmente riuscirà a capire qualcosa vista l’enorme complessità del sistema. Prendete questa realtà e riversatela nel mondo dei computer, e vedrete che potete far combaciare l’istruttore di volo con un assistente virtuale, la plancia dell’aereo con l’editor di una suite d’ufficio, e il passeggero preso a caso con una persona non avvezza all’utilizzo di strumenti informatici.
La differenza sostanziale è che tutti gli strumenti sulla plancia dell’airbus sono fondamentali per farlo volare in sicurezza mentre le funzioni esposte di una generica suite di ufficio sono per il 90% inutili all’utente medio. Inoltre la complessità del programma si riverserà con tutta la sua forza sull’assistente che in qualche modo dovrebbe avere una base di conoscenza praticamente infinita per rispondere in maniera opportuna a tutte le possibili combinazioni di eventi.
Ed a questo punto arrivo a esprimere la mia idea. In linea con uno dei pilastri della filosofia Unix credo che gli sviluppatori debbano entrare nella mentalità di sviluppare singoli programmi che facciano un solo compito e lo facciano bene. Se ci pensate bene gli strumenti di maggior successo nel mondo reale sono quelli estremamente semplici e mono-funzione.
Quale strumento utilizzereste per tagliare il pane?
Seguendo questo paradigma non solo si semplifica l’interazione con l’utente ma si riduce anche il campo di azione di un eventuale agente di supporto. Pensate per esempio a twitter. Se misurassimo le potenzialità di twitter con una analisi delle feature ne uscirebbe con le ossa rotte. La realtà è che la sua stessa natura l’ha reso appetibile ad una fascia amplissima di pubblico decretandone il successo. Il campo ristretto in cui opera ha permesso anche l’inserimento ben riuscito di “piccoli agenti software” dalle funzionalità limitate ( il servizio consiglia chi seguire in base alle mie informazione e ai miei conoscenti).
Un altro esempio che mi piace riportare è quello delle piccole o piccolissime applicazioni per smatphone. Per esperienza diretta so che vengono utilizzate con profitto anche da persone solitamente impacciate con l’uso del PC. Questa tendenza nel mondo mobile è stata dettata probabilmente dall’iniziale scarsezza di risorse dei dispositivi (schermo e capacità elaborative), ristrettezza che invece di affossare tali soluzioni ne ha decretato il successo su scala mondiale.
Concludendo, mi sento di poter affermare che prima di pensare alla lista delle feature bisogna decidere bene quale deve essere lo scopo fondamentale di una applicazione. In ottica di usabilità bisogna avere il buon senso di capire che non sempre togliere significa sminuire il valore di un progetto.
Se non vengono fatte scelte in questo senso nemmeno il migliore degli assistenti potrà mai rendere piacevole l’utilizzo di software.