Programmare è un gioco, anche da grandi!

Sono sempre più numerosi i siti e le applicazioni che per insegnare a programmare fanno ricorso alla gamification. Quando si parla di gamification ci si riferisce a un insieme di tecniche utilizzate per rendere attività o servizi più godibili attraverso l’applicazione di dinamiche mutuate dal mondo dei giochi, come per esempio sistemi a punti, classifiche, ma anche veri e propri meccanismi di gioco.

codecombat

Alice alle prese con Codecombat

È facile intuire come il ricorso a questo genere di espedienti sia una scelta particolarmente felice quando ci si rivolge ad un pubblico giovane: cosa c’è di meglio di un gioco per imparare qualcosa?

Ma la verità è che, un po’ perché la sera siamo stanchi, un po’ perché in fondo adulti non lo siamo diventati mai davvero, queste applicazioni che insegnano a programmare giocando piacciono un sacco anche a noi!

Di seguito ve ne presento tre, piuttosto diverse tra loro: Codecombat, creato per i più giovani, Codewars, per chi vuole fare esercizio, e Codingame, per chi vuole dimostrare la propria abilità, e magari trovare un lavoro!

Codecombat

CodeCombat è uno strumento pensato in modo specifico per la formazione di bambini e ragazzi. Il meccanismo di gioco li guida attraverso livelli successivi di apprendimento, inizia con l’insegnare i comandi di base del linguaggio e aggiunge elementi via via più complessi.

Lo stile è quello di un RPG: si sceglie il proprio personaggio e a ogni livello superato si ottengono diamanti con cui è possibile acquistare armi e pezzi di armatura per renderlo più forte. Una finestra sulla sinistra mostra la schermata di gioco e sulla destra un editor consente di scrivere i comandi per far compiere azioni al proprio personaggio (dal muoversi nello spazio all’attaccare i nemici).

L’ho provato con Alice, 10 anni. Ci siamo divertite, a ogni livello superato non vedeva l’ora di esplorare il successivo e certe soluzioni risultavano più ovvie a lei che a me. Quando venivano introdotti costrutti nuovi (come ad esempio il loop) intervenivo per spiegarle il funzionamento generale.

CodeCombat si presta particolarmente all’uso didattico a scuola, perché rende la programmazione un’attività divertente e accessibile.

È open source e il codice è disponibile su GitHub: è possibile contribuire alla creazione di nuovi elementi del gioco e così pure alla sua traduzione in italiano.

Considerato lo scopo didattico e il target giovane, è accettabile che non offra la possibilità di scegliere tra molti linguaggi differenti. Il linguaggio di programmazione proposto per default è basato su Python ma contiene comandi che esistono solo all’interno del gioco.

Codewars

La carriera che ho scelto mi ha portata ad allontanarmi un po’ dalle attività più tecniche, quali la programmazione. A dirla tutta, però, un pochino mi mancano. E così, per cercare di tenermi aggiornata, nel tempo libero ho iniziato a studiare un nuovo linguaggio, Python (beh, nuovo per me!), utilizzando una delle numerose piattaforme per l’apprendimento di linguaggi di programmazione: Codecademy.

Ma per saper programmare non basta completare un corso, serve anche un sacco di pratica e, considerato il poco tempo che vi dedicavo, quello che avevo imparato stava lentamente scivolando nel fondo della memoria. Allora mi sono messa a cercare progetti o piccoli problemi per continuare a esercitarmi e così, attraverso un articolo su Opensource.com, ho scoperto Codewars.

Codewars abbina i più tipici meccanismi di gamification (ricompensa alla soluzione degli esercizi, livelli da superare e classifiche) a strumenti collaborativi per imparare dagli altri: al termine di ogni esercizio vengono mostrate le soluzioni proposte da tutti gli utenti e consente di confrontarle con la propria. Per passare da un livello al successivo bisogna risolvere un certo numero di esercizi di complessità variabile.

Codewars supporta i principali linguaggi di programmazione ed evolve attraverso i contributi degli utenti più esperti (quelli con più onore, per usare i termini di Codewars), che possono proporre nuovi esercizi e tradurre quelli esistenti in nuovi linguaggi. In questo modo la piattaforma è in continua evoluzione.

Codingame

La prima volta che ho sentito parlare di Codingame è stato nel corso di una conversazione con un manager dell’azienda in cui lavoro, che mi raccontava di come lo usi per valutare i candidati durante i colloqui.

Condingame ha caratteristiche in comune sia con CodeCombat che con Codewars.

Il funzionamento è paragonabile a quello di Codecombat: il codice che scriviamo controlla le azioni del nostro personaggio per avanzare nel gioco, ma in Codingame a ciascun esercizio corrisponde un gioco diverso, con la sua ambientazione (dallo spazio stellare al mondo di Thor).

Per quanto riguarda il target cui si rivolge, Codingame si avvicina di più a Codewars: offre esercizi di programmazione a chi già conosce un linguaggio e vuole continuare ad esercitarsi. Per questo si presta particolarmente ad essere utilizzato nel corso di colloqui tecnici, unito al fatto che supporta una lunga lista di linguaggi di programmazione e di scripting (da Python a C++ a Go e Groovy).

Da qualche settimana inoltre Codingame ha rilasciato in beta una nuova funzionalità che costruisce un nuovo ponte tra il gioco e il mondo del lavoro: Job Store. Giocando e risolvendo problemi sempre più complessi il giocatore può sbloccare offerte di lavoro. Le aziende, dal lato loro, potranno pubblicare le offerte legandole al linguaggio di programmazione e al livello di esperienza richiesti, facendo così già una prima selezione dei candidati.

E voi? Cosa usate per tenere sempre in esercizio la vostra abilità nella programmazione?

Autrice: Silvia Bindelli

Silvia è un'ingegnere informatico trapiantato in Costa Azzurra. Nel tempo libero collabora con la comunità open source di Ubuntu, esplora e fotografa la più grande quantità di mondo possibile, trasforma la cucina in un campo di battaglia da cui escono cupcake, brownies, loaf, crostate...e qualche volta anche qualcosa di salato!
Website: http://dolasilla.tumblr.com/
Twitter: SilviaBindelli