Software per umani

11 Ottobre 2014
stefano dal secco
software per umani

Tanto tempo fa, in una galassia lontana lontana

Every communication between a human and a computer is in reality a communication between humans:

  • The computer system is constructed by humans.
  • The computer programs were written by humans. They laid down the rules for how the computer should answer questions from a human user.
  • When a human stores information in a computer, which is later transmitted to other humans using the system, this is also a delayed human-to-human communication process.

Jacob Palme – che sarà poi docente di Computer Science alla Stockholm University – scriveva queste righe nel 1975 (giusto per contestualizzare, vi ricordo che nel 75 Bill Gates fondava la Microsft, mentre la Apple sarà fondata invece l'anno successivo, finiva la guerra in Vietnam, veniva ucciso Pasolini e vedevamo Goldrake alla televisione). Era quasi 40 anni fa e ovviamente si viveva in un'altra galassia.

Uomini contro macchine

Torniamo in questa galassia. In una delle molte riunioni durante le quali abbiamo lavorato per chiarire chi è Cogito in modo da ridefinirne il progetto comunicativo, si è parlato di SEO. Molti che si occupano di SEO continuano a chiedere: perché Google non rende pubblici gli algoritmi secondo cui vengono posizionati i risultati delle ricerche? La risposta è abbastanza semplice: perché non li conosce. Da tempo, sono le macchine che si auto-istruiscono e si occupano di ottimizzare, aggiornare, riscrivere gli algoritmi di Google; gli umani fanno tutt'al più un po' di bug fixing, una "passata di vernice".

È solo l'esempio più eclatante di un dato di fatto che contraddice la definizione che Palme ci invia dal profondo degli anni '70. Oggi tutto quello che passa per un computer non è più solo un momento di passaggio in una comunicazione tra un umano e un altro umano. Spesso, all'inizio o alla fine del processo, ci sta un altro server, che a sua volta parlerà con un altro server.

Abbiamo spesso usato l'esempio di Skynet (da Terminator) nelle nostre presentazioni, cioè l'esempio di un mondo in cui le macchine si auto-regolamentano e hanno preso il controllo del pianeta Terra sostituendosi completamente agli umani, i quali sono diventati loro schiavi o semplicemente un fastidio.

È ovvio che, per quanto riteniamo che sia quella la direzione di marcia, sia molto probabile che prima di raggiungere Skynet avremo già fatto esplodere il pianeta o reso impossibile la vita sula Terra tagliando l'ultimo albero o in un'altra delle fantasiose maniere che sappiamo inventarci per suicidarci lentamente.

Tuttavia è importante capire che anche senza arrivare a Skynet, in ogni compagnia che oggi abbia a che fare con la tecnologia – dalle grandi corporation alle piccole software house di provincia – stiamo davvero combattendo piccole battaglie di retroguardia nel conflitto globale "uomini contro macchine".

Sviluppando software, abbiamo infatti un prerequisito di base, rispetto a quello che facciamo: "funziona/non funziona". Partendo da questa evidente dicotomia è ovvio che il prodotto che rilasciamo deve "funzionare", laddove per funzionare intendiamo che il server non mi proponga sul browser una pagina di errore e che se clicchi un bottone che dice "inserisci" i dati  verranno scritti da qualche parte. Ecco, questo noi lo abbiamo chiamato "lavorare per le macchine".

Software per umani

Uno dei punti a cui siamo giunti, alla fine di questo periodo di ripensamento sull'identità di Cogito, è stato che: noi realizziamo software per esseri umani, pensati per gli umani e realizzati tenendo a mente le necessità degli umani.

Fermo restando il fatto che – come detto sopra – non tutti i software oggi sono fatti per avere un essere umano dietro la tastiera, pensiamo che il concetto di "funziona/non funziona", con il quale misuriamo un programma, debba comprendere sempre e prima di ogni altra cosa l'umano dietro la tastiera (qualora non si tratti di un software machine-to-machine).

Dunque: un software funziona se funziona l'umano che lo usa: se l'umano dietro la tastiera capisce subito e chiaramente cosa deve fare arrivando su quella schermata, se capisce cosa succede quando schiaccerà un determinato tasto. In questo caso un software funziona. In caso contrario: non funziona.

Abbiamo tutti visto software blasonati con un'usabilità che rasenta quella della "caffettiera del masochista". Abbiamo visto programmatori, e capo programmatori, e capi dipartimento, e general manager di aziende informatiche, che non hanno la minima idea di chi sederà dietro la tastiera e userà i software che la loro azienda sviluppa.

L'utente ha sempre ragione

Crediamo che il vecchio mantra secondo cui "il cliente ha sempre ragione" sia un tabu che vada abbattuto.

Moltissime volte il cliente ha un'idea piuttosto vaga e  confusa di quelle che sono o saranno le sue necessità informatiche e dei motivi per cui ci ha commissionato quel software, delle implicazioni che esso avrà sulla sua azienda, sui suoi clienti, su tutti gli utenti che lo useranno e così via. Può anche capitare che il nostro cliente ci chieda di realizzare dei software che sono coscientemente progettati per "creare problemi" all'utilizzatore (per i motivi più disparati, talvolta fraudolenti talaltra per semplice politica aziendale). Il cliente quindi ci chiede spesso di scrivere "cose sbagliate" oppure di farlo "nel modo sbagliato". Noi crediamo fermamente che sia nostro specifico compito quello di cercare di non assecondarlo in questa direzione. Fermi restando alcuni vincoli contrattuali ed etici del rapporto cliente-fornitore, dobbiamo fare il possibile per non scrivere software che stia dalla parte delle macchine invece che da quella degli umani, o che genericamente non sia attento alle necessità degli utenti.

Se può succedere quindi che le richieste del cliente siano "sbagliate", che vadano contro il suo stesso interesse aziendale o contro quello degli utilizzatori del suo software, non si dà mai il caso in cui le necessità dell'utente siano "sbagliate".

Pensare che le necessità dell'utente siano "sbagliate" è sbagliato. È quasi come ritenere che la rotazione terrestre o la forza di gravità siano sbagliate. La gravità non è né giusta né sbagliata. "Esiste" punto e basta. L'utente può avere pigrizie ed inerzie, e può essere guidato in una certa direzione perché le cose cambiano, con l'andar del tempo. Ma nulla di più.