“Engineering for squishy bags of meat”

0

Questa riflessione è stata pubblicata originariamente sul suo blog personale da Angelo Pesce, attualmente Rendering Technical Director presso Activision.

Angelo l’ha girata sul nostro gruppo Facebook, l’ho letta e gli ho chiesto se non potessi tradurla per il blog, e lui me ne ha dato il permesso.

(Ne approfitto per ricordare a tutti che potete contribuire a GameLoop postando news, segnalazioni, riflessioni e quant’altro sul gruppo Facebook e/o qui sul forum)

Per quanto si tratti di una riflessione generale che tocca anche aspetti di design e business, ho deciso di proporla qui nella sezione dedicata al codice, dato che il punto di vista che propone e il target a cui è rivolta ricade decisamente nell’ambito del coding.

L’illustrazione è chiaramente una filter bubble.

Buona lettura!

Essere ingegneri in un mondo di inconsistenti sacchi di carne

L’introduzione che potete saltare

Io sono italiano, e sono cresciuto in una famiglia che si potrebbe definire di intellettuali di classe media. I miei genitori venivano da famiglie proletarie, nelle quali rappresentavano la prima generazione ad aver avuto un’educazione universitaria e a non avere un lavoro nei campi.

Un’insegnante e un dottore, inseriti nella vita cittadina e coinvolti nella politica locale: non era raro che avessimo ospiti a cena. E mi ricordo come, al tempo, mi infastidisse parecchio il fatto che qualcuno potesse essere tenuto in grande considerazione per il suo intelletto e la sua cultura nonostante i suoi studi si limitassero all’ambito umanistico, senza neanche la minima conoscenza della matematica o del pensiero scientifico.

Avanti veloce fino a oggi e, come professionista in ambito informatico, la società che popola la mia piccola bolla sembra essere aver subito una rivoluzione (non violenta) a livello culturale. Oggi i “nerd” sono considerati “intelligenti”, la mancanza di capacità sociali è quasi una medaglia al valore, e sembra che le uniche cose importanti siano quelle a cui si può assegnare una quantità numerica.

Non è sempre così, e devo ammettere che il mondo professionale degli informatici non è quello così stereotipato delle produzioni medie hollywoodiane, eppure viviamo comunque fin troppo spesso in un mondo che è, come quello passato, troppo verticale: programmatori, artisti, manager, che spesso commentano sarcasticamente quanto le altre categorie manchino di “skill”.

“Volevamo realizzare un prodotto che fosse elegante, robusto, e bello”

È da un po’ che volevo scrivere questo post: avevo già buttato giù diverse bozze nel mio notebook, ma il là me l’ha dato quest’ottimo post-mortem del fallimento di RethinkDB come startup. Non sono un esperto di database, ma ho comunque trovato molto interessante la sezione che parla dei principi di design che sottendevano il prodotto.

Mettiamo che si voglia creare un nuovo tipo di database: su cosa ci si concentra? Nel caso di RethinkDB, ci si è concentrati su tre fattori chiave: correttezza, semplicità dell’interfaccia, e consistenza.

Sembra abbastanza ragionevole: oggigiorno i database sono l’infrastruttura chiave della maggior parte delle applicazioni, e chi mai vorrebbe costruire un prodotto da milioni di dollari basato su qualcosa che non garantisca la correttezza delle sue operazioni? E per di più le startup oggigiorno hanno bisogno di muoversi veloci, e sono disposte ad adottare qualsiasi nuova tecnologia le aiuti a raggiungere rapidamente dei risultati, perciò semplicità e consistenza avrebbero dovuto dare a RethinkDB un forte vantaggio competitivo.

Ovviamente, non sorprende che la ragione individuata per il fallimento di RethinkDB sia che quelle appena citate fossero “le metriche sbagliate”. Cos’è che voleva davvero la gente? Secondo l’articolo, le metriche giuste sarebbero state un arrivo tempestivo sul mercato, velocità “palpabile” (benchmark, marketing) ed un buon use case. In altre parole, un prodotto che:

  1. Risolvesse un problema (use case)
  2. Adesso (arrivo tempestivo sul mercato)
  3. Rendendo soddisfatto chi lo usa (l’importanza della performance percepita)

Questo giudizio errato ha portato non solo alla fine della startup, ma anche a un sacco di frustrazione, depressione, e rabbia, dato che quelli che potevano essere visti come prodotti inferiori nel frattempo stavano avendo un grosso impatto sul mercato.

Uno scontro tra mondi diversi

Il problema è, ovviamente, l’idea che una nozione astratta di bellezza possa davvero essere rilevante. Se scriviamo del software è per ottenere dei dati risultati, e questi risultati consistono, eccetto che nel caso dei lavori più teoretici, in qualcosa che in qualche modo renda qualcuno soddisfatto.

Tutto il resto è semplicemente un mezzo per il raggiungimento di quel fine, uno strumento che può essere usato bene oppure no nell’ottica di un dato obiettivo. E l’obiettivo è sempre di vendere al proprio mercato, di creare qualcosa che semplicemente… piaccia alla gente.

Bisogna capire i propri clienti, e capire che siamo tutti esseri umani. È uno scontro tra il concetto di “feature” e quello di “esperienza”.

Quando pensiamo alle feature che vogliamo, è facile finire vittime della fallacia della misurazione. Facciamo X, e lo stiamo facendo in maniera nettamente migliore, secondo certi parametri misurabili, di un altro prodotto, e per questo siamo migliori. Non ci resta che aspettare che il mercato adotti il nostro prodotto e lo renda un successo.

È questo il rischio connesso al vivere in una bolla di conoscenze verticali. La gente nel settore tecnologico pensa alla tecnologia, ci lavora, la crea, e per questo è facile e per certi versi inevitabile cominciare a creare tecnologia solo per il gusto di farlo.

Ma la verità è che la user experience, i workflow, e le esperienze soggettive hanno comunque a che fare con la tecnologia, e anche con la ricerca e la computer science.

È solo che si tratta di problemi più difficili da risolvere, problemi che spesso non hanno nessuna metrica secondo cui essere ottimizzati – a volte, sì, perché non sappiamo come misurare questi aspetti “soft”, ma spesso anche perché questi aspetti sono estremamente difficili da isolare. Date un’occhiata a tutti gli artefatti che avete attorno a voi. Perché uno strumento musicale è migliore di un altro? O un film, un gioco, un’auto, una penna, un tavolo, un telefono…?

Realizzare un buon design è un processo intrinsecamente umanistico: bisogna capire la gente, cosa le piace, di cosa ha paura, come usa la tecnologia, quanto può adattarsi al cambiamento, che rischi prende in considerazione. Il buono “oggettivo” non è abbastanza buono. Un buon design riesce sia ad avere senso da un punto di vista oggettivo, sia a superare ostacoli emotivi, sociali, e ambientali. La computer science dovrebbe essere insegnata assieme alla sociologia, alla psicologia, al design, e alle arti interattive.

Specializzazione

A onor del vero non è sorprendente che chi sia coinvolto in maniera profonda in un determinato ambito non se la cavi altrettanto bene negli altri. La tensione tra conoscenze verticali e specializzazione, e conoscenze orizzontali che ci permettano di essere ben bilanciati, è ineluttabile.

Siamo sempre più spinti verso la specializzazione, perché i nostri ambiti sono profondi e complessi, e anche le menti più brillanti non hanno risorse mentali infinite, perciò bisognerà sempre fare dei compromessi.

Che siate andati all’università o meno, è probabile che per diventare degli specialisti in un dato ambito abbiate avuto bisogno di immergervici in maniera estremamente tecnica e approfondita. Finiamo per isolarci in una bolla e, sotto certi aspetti, è anche necessario che lo facciamo.

Il problema vero comincia quando cominciamo a credere che una data bolla sia rappresentativa di tutto il mondo, e che, dato che certe qualità hanno importanza al suo interno, la loro importanza sia universale. Quando cominciamo a farlo, cominciamo anche a giudicare il mondo secondo i parametri sbagliati, e finiamo frustrati quando vediamo che il mondo non risponde a questi parametri.

Certo, quello delle bolle in cui ci isoliamo è un problema molto più generale, ed è anche un problema che fa paura, se pensiamo che il nostro mondo sta diventando sempre più complesso, al punto che non è facilmente interpretabile nemmeno dagli esperti, dato che non è facile incapsularlo in un dato set di regole. La complessità può spingerci a ritirarci in noi stessi, ad adottare spiegazioni e misure di qualità semplicistiche e a cui possiamo affezionarci un po’ troppo, nonostante la loro limitatezza.

E non aiuta neanche il fatto che, in quanto esseri umani, cerchiamo conferme, più che verità.

Ricerca accademica

Consideriamo il mondo dell’accademia e della ricerca scientifica. Se da un lato i ricercatori sono giudicati in base alla loro capacità di arrivare a conclusioni nuove e originali nei loro studi, dall’altro tali studi hanno bisogno di metodi di misura che li qualifichino, in modo che, una volta trovati tali metodi, si possa giudicare se una data tecnica sia obiettivamente migliore in un dato contesto.

Se qualcosa è migliore, ma non in un modo che sia facilmente misurabile, sarà difficile pubblicare un paper a riguardo. Di per sé non è un problema così terribile, ma diventa un problema reale quando cominciamo a pensare che queste misure siano l’unica cosa che conta.

Io lavoro nell’ambito della computer grafica: se realizzassi un nuovo sistema che generasse modelli 3D semplificati, e tutti gli artisti che lo usano pensassero che è rivoluzionario, che produce output migliori, e che è più facile da usare di tutto il resto, avrei fatto qualcosa di nuovo e rilevante? Di sicuro sì, e questa sarebbe, a conti fatti, l’unica cosa importante.

Ma se questa nozione di quanto migliore sia il mio sistema non trovasse una qualche metrica di misurazione, giocoforza non sarebbe più qualcosa che il mondo accademico potrebbe prendere in considerazione. È un qualcosa di intrinseco nella natura della ricerca applicata, ma è anche un qualcosa che crea una disconnessione tra l’accademia e il resto del mondo: una bolla, di cui dobbiamo essere consapevoli.

Quando ignoriamo l’esistenza della bolla, subentra la frustrazione. I professionisti dell’industria sono frustrati quando la ricerca accademica non “lavora” per i loro bisogni. E i ricercatori sono frustrati quando vedono che l’industria “rimane indietro” rispetto a quello che in teoria è lo stato dell’arte.

Conclusioni

Quindi la situazione è inevitabilmente grigia? Entro certi limiti sì, specialmente quando ci si rende conto che il mondo non è facilmente riducibile a quelle confortevoli misure che tanto ci piacciono. Quando ci si rende conto che i bias sono inevitabili, che la specializzazione è inevitabile, e che le bolle sono inevitabili.

Io dico che l’esperienza è una “tecnica di riduzione della varianza”: più diventiamo migliori in qualcosa, più ne paghiamo il prezzo diventando prevedibili e trincerati in noi stessi.

Ciò che certamente possiamo fare è diventare per lo meno consapevoli di questi meccanismi. Dubitare di noi stessi. Sapere che ciò che pensiamo sia rilevante potrebbe non esserlo affatto, e cercare punti di vista alternativi. Sapere che ciò che consideriamo razionale il più delle volte è solo una razionalizzazione. Renderci conto dei fattori emotivi implicati nelle nostre scelte.

Ciò che certamente possiamo fare è uscire un po’ dai nostri pozzi di conoscenze verticali, ed essere giusto un po’ curiosi, apprendere giusto quanto sufficiente a interfacciarci con gente diversa. Potrebbe essere questa la soluzione di cui abbiamo bisogno: non possiamo conoscere tutto, né possiamo capire il mondo senza applicargli alcun filtro. Però possiamo assicurarci di essere in grado di parlare e relazionarci con gente diversa, che ha investito la propria verticalità in altri ambiti.

Alla fine, personalmente, non credo che il mio viaggio verso il diventare “smart” sia finito, o che sia neanche iniziato. Ma quanto meno ne sono un minimo cosciente… e ho anche il dono di avere una compagna che non esita a mostrarmi quanto ancora mi manchi per essere davvero “smart” in tanti aspetti, e di avere un ego abbastanza forte da sapersi prendere questi appunti.

Piccoli passi.

Un articolo molto interessante di @kenpex ed un grande lavoro di traduzione di @BrunoB. :muscle:

Ancora devo leggerlo.
In attesa che @kenpex si iscriva qua.

già che c’ero ho tradotto il post in italiano sul forum http://forum.gameloop.it/d/161-engineering-for-squishy-bags-of-meat #contenutiesclusivi #fategirare

personalmente mi sento di dire che sono d’accordo al 100% ma che aggiungerei che

1) anche gli ambienti “soft” devono rendersi conto dei loro bias e delle loro bolle e che

2) riflessioni come queste vanno fatte al momento giusto, ovvero quando si è a un certo livello di competenza, perché c’è sempre il rischio che vengano prese a manifesto dai pizzarroni che “ueeehhh a me la matematica fa schifffooo ma voglio fare l’ingegniereee” (o, peggio, “voglio spiegargliele io le cose agli ingegnieriii”)

wittgenstein diceva (se non ricordo male) che la conoscenza è come una scala da cui bisogna essere pronti a buttarsi una volta raggiunta la cima, ma c’è sempre il rischio che uno voglia buttarsi di sotto al primo gradino

Comments are closed.