Charles Darwin soleva fare un percorso particolare nel suo grande giardino di Down House, nel Kent, che attraversava metodicamente camminando attorno la casa. Camminare lo aiutava a pensare e stava pensando una cosa davvero grande e complessa. Stava riflettendo sulla diversità della vita, cercando di comprenderla. Perché c’erano così tante varianti di animali? Come avrebbe potuto spiegare le strane creature fossilizzate e le altre ancora in vita? Da perdere il sonno.
Quello che lui (e alcuni dei suoi colleghi) ha sviluppato è stata l’allora rivoluzionaria teoria dell’evoluzione per selezione naturale. Darwin si rese conto che sarebbero nate molte più specie di quanto l’ambiente avrebbe potuto sostenere, quindi alcune avrebbero potuto vivere e altre morire. Quello che avrebbe separato i due destini erano piccole differenze (come la forma di un becco) e che di generazione in generazione questi piccoli cambiamenti erano significativi per i sopravvissuti, che si sarebbero adattati meglio all’ambiente. Quello che Darwin aveva fatto è stato di decodificare il meccanismo dell’evoluzione dai risultati che vedeva intorno a lui. E’ stato probabilmente il primo a fare reverse engineering. Geniale, davvero.
E i videogiochi? Le idee di Darwin saranno sempre più fondamentali in futuro. Molte persone nel corso degli anni hanno cercato di applicare le lezioni di Darwin dal mondo naturale al regno umano. E’ così che sono nate idee stupide come il Darwinismo Sociale.
La teoria di Darwin è anche applicata alla tecnologia e l’economia, per citare alcuni campi. Ma per capire come questo potrebbe funzionare anche per i software abbiamo prima bisogno di fare un passo indietro e dare un paio di istruzioni fondamentali: l’evoluzione lavora sulla scala del genotipo dell’individuo (il DNA) e come questo si esprime attraverso le loro caratteristiche fisiche (fenotipo) all’interno dell’ambiente in cui vivono (idoneità).
Nello sviluppo dei software, l’individuo è ogni iterazione o versione del programma in questione (genotipo). Sono quindi i tratti desiderabili che mostra la versione (i fenotipi), come alcune funzionalità o un gameplay che ne determinano la sua forma fisica. L’ambiente non sono campi, foreste e oceani, ma la massa di potenziali utenti con le loro richieste -funzionali, economiche, politiche – a determinarne l’idoneità. Sono i desideri o i capricci che creano l’ambiente in cui nasce ogni iterazione del software e in modo da prosperare o morire. Due terzi di tutte le applicazioni rilasciate sul mercato non vengono scaricate più di una manciata di volte, come diceva Darwin: nasceranno molti più individui di quanto l’ambiente possa sostenere e così le differenze tra loro determineranno il loro destino.
Questi cicli di feedback ambientale e nuove versioni sono sempre esistiti nel software, ma prima erano lenti, inaccurati e pesanti. Con discriminanti come le classifiche di AppStore, i tweet, le valutazioni degli utenti e i voti sui siti, la precisione e la velocità delle interazioni tra ambiente e la capacità di produrre nuove iterazioni è diventata sempre più potente. Gli sviluppatori possono vedere momento per momento come il loro ultimo individuo digitale sta andando e iniziare l’allevamento della progenie sulla base di questo feedback. Tuttavia, questa è ancora solo la manifestazione più veloce di ciò che già esiste, la prossima frontiera è ancora ancora più eccitante quanto pericolosa.
C’è un metodo chiamato “Split Test A/B“, dove dei campioni di popolazione influiranno sulle scelte della popolazione totale, e generalmente i soggetti scelti non sanno neppure di partecipare al test. Funziona in questo modo: ho un milione di giocatori online del mio gioco. Creo due piccoli sottogruppi da 50.000 giocatori ognuno. Per un gruppo cambieremo la versione attuale per un’iterazione leggermente modificata e lo chiamano “A”. Per il secondo gruppo creeremo una variante leggermente diversa e la chiameremo “B”. Si possono monitorare i risultati delle modifiche in tempo reale, ad esempio cambiare la posizione di un pulsante per vedere quale gruppo, tra A e B, fa più clic su di esso. Questo dà il risultato (tratto) più desiderato, il cui cambiamento verrà esteso a tutta la popolazione da un milione di giocatori. E così via, con un test successivo. Questo metodo permette di dare agli utenti quello che vogliono, senza dover chiedere loro direttamente. Si tratta di un mezzo incredibilmente potente di sviluppo; La release di un gioco diventa l’inizio e non la fine di un progetto.
Ma questa è solo metà della storia e le lezioni di biologia ce lo insegnano. In primo luogo bisogna notare che l’evoluzione è cieca. Le specie non si evolvono per uno scopo, il cambiamento è sempre e solo reazionario, quindi non ha direzione o desiderio e i tentativi di plasmare il cambiamento sono sempre stati maldestri e di breve durata. Così le creazioni, nel nostro caso applicazioni e giochi, verranno vincolate al comportamento degli utenti-ambiente, che può risultare in un vicolo cieco “genetico” imprevedibile, che può decretarne la fine. Come per il Dodo che viveva su un’isola dove era in cima alla catena alimentare, crescendo sempre di più e perdendo l’uso delle, oramai inutili, ali. Poi è arrivato l’uomo sull’isola e il Dodo è volato direttamente in padella. Come Zynga.
Il cambiamento incrementale ottiene, per sua natura, il massimo risultato con il minimo sforzo, ma questa strada può portare a strani risultati, visto che quando ci si accorge dell’errore servono troppe energie per correggerlo ed oramai è troppo tardi. Nell’ambiente dei giochi esistono titoli che sembrano avere successo, ma hanno grandi problemi strutturali non evidenti all’inizio ma, con le iterazioni, vengono alla luce portando uno sconvolgimento sproporzionato al cambiamento ambientale.
L’evoluzione dice che se una specie deve vincere, altre devono perdere. Introdurre una specie in un ecosistema che non si è evoluto può risultare nel caos totale, come per i conigli in Australia. Questo porta ad avere sul mercato molte versioni dello stesso gioco che si riveleranno una “razza-meteora” (Wii fit?) e giochi che fagociteranno i simili in una corsa sfrenata per l’evoluzione più rapida.
E frattanto, nel mezzo della battaglia per il dominio dell’ambiente, l’innovazione generale si sta perdendo.
Andrea Gargano
P.S. Mi vorrei scusare con i nostri affezionati lettori per la mancanza dell’articolo del lunedì della scorsa settimana sopravvenuto per motivi tecnici, che stavano portando alla mancata pubblicazione anche questo lunedì. Probabilmente neanche io sono adatto all’evoluzione.