Quando volevo incoraggiare l'uso di Test Driven Development, gestivo un Cyber-Dojo . Con questo tipo di esercizio, l'enfasi non è sul codice stesso, ma sul processo di scrittura del codice .
Abbiamo trascorso un pomeriggio, in coppia, ripetendo lo stesso kata, ma in condizioni diverse. Abbiamo iniziato con tutti i gruppi che facevano un esercizio contemporaneamente. Ciò ha fornito una base.
Abbiamo quindi discusso alcuni dei principi di base del TDD, facendo cambiare a tutti i partner e ripetere lo stesso kata. Abbiamo ripetuto gli stessi kata per de-enfatizzare la generazione del codice e concentrare invece le persone sul processo di denominazione dei casi di test e sul ciclo Rosso / Verde.
Quindi abbiamo ripetuto nuovamente i kata, ma all'incirca ogni 10 minuti una persona in ciascun gruppo si spostava in un altro gruppo, simulando gli ambienti di squadra piuttosto fluidi che spesso ci troviamo in questi giorni.
Nell'iterazione finale, abbiamo fatto cambiare entrambi i partner ogni 10 minuti circa in gruppi diversi. Ciò ha contribuito a dimostrare che con TDD, anche il passaggio da una squadra a una squadra completamente diversa non deve necessariamente essere troppo doloroso, poiché il progetto dovrebbe essere solo un ciclo rosso / verde dal lavoro.
La cosa interessante era che c'erano poche persone che avevano fatto qualsiasi TDD prima della sessione, ma che conoscenza TDD ci fosse rapidamente diffusa fino all'iterazione finale attraverso i kata, la maggior parte delle persone pensava in modo TDD o almeno poteva apprezzare il perché potrebbe essere utile.
La gente generalmente diceva che il pomeriggio era sia divertente che informativo e ora stiamo cercando altri modi per usare Cyber-Dojo sul mio posto di lavoro.
Cyber-Dojo , scritto da Jon Jagger , funziona incredibilmente bene per questo tipo di esercizio. È un ambiente integrato basato sul web per fare pratica deliberata di TDD e conoscere le dinamiche del team. Ha molti kata selezionati appositamente per aiutare le persone a concentrarsi sul processo di TDD e non sul problema. Supporta anche una vasta gamma di lingue, da Python e Ruby a Java e C ++.
La cosa migliore è, dopo aver fatto un kata, puoi tornare indietro e guardare la progressione rosso / verde (o forse non * 8 ') di ciascuno dei gruppi partecipanti. I suoi semafori sono un ottimo modo per visualizzare come funziona il processo TDD.
Se vuoi il tuo server CyberDojo, l' intero progetto può essere trovato su github e c'è anche una macchina virtuale Linux chiavi in mano collegata da lì, il che significa che supponendo che tu abbia già installato VMware player o VirtualBox , puoi essere attivo e funzionante all'interno pochi minuti per scaricare l'appliance!