Ovvero un piccolo progetto che sto portando avanti con un gruppo di ragazzi. Lo so, e' in Java, ma continuate a leggere perche' l'idea e' interessante, perche' esplora l'applicazione di metodologie di sviluppo agili in due situazioni che non sono proprio considerate ideali:
- Lo sviluppo di un gioco, che per quanto in 2D e piuttosto semplice, propone problematiche differenti dalle piu' conosciute applicazioni gestionali magari.
- Sviluppo distribuito dove i partecipanti si trovano fisicamente separati l'uno dall'altro; a complicare le cose la maggior parte dei ragazzi che partecipano sono alle prima armi, non hanno quasi mai visto Java prima (come me :p), non hanno mai sviluppato nulla assieme ad altri.
E allora facciamogli fare un po' di Extreme Programming (sebbene molto adattato alla situazione) e vediamo che succede. Facile no? I ragazzi stanno imparando a scrivere gli Unit Test, imparano i principi di Semplicita' e Condivisione del Codice, imparano a lavorare assieme, a fare la stima dei propri task, a completarli in tempo, a seguire rigidi coding standard, ed imparano che cosa vuol dire avere una Build machine che gli segnala immediatamente gli errori dopo i commit.
La cosa piu' bella e' che imparano e dopo quasi sei settimane di lavoro la code base non e' ancora esplosa seppure scritta in Java! Gia' questa e' una vittoria!
Con questo esperimento a scopo didattico voglio provare sul campo che non c'e' bisogno di essere un gruppo di guru per usare con successo una metodologia di sviluppo agile, ma basta seguire le giuste pratiche e aver voglia di imparare.
Ho parlato gia' troppo, questo e' il link al forum dove il progetto e' portato avanti: Diamonds.
Dimenticavo, stiamo sviluppando un Puzzle Game 2D, usando OpenGL come libreria grafica, che giri sotto Win32, Linux e MacOSX e io non scrivo mezza riga di codice.
Per chi vuole dare un'occhiata al codice, lo puo' prelevare via Subversion da questo server:
svn://spartacus.dnsalias.net/diamonds
Ma non fatevi tentare dal Lato Oscuro! Magari potrebbe essere uno spunto per ripetere lo stesso esperimento in .NET *hint* hint* ;)