Quali sono i modi efficaci per introdurre il concetto di codice kata nel luogo di lavoro?

3

Nelle tue esperienze, quali sono alcuni modi efficaci per introdurre la pratica codice kata in un'organizzazione o compagnia?

Per essere chiari, non mi interessa l'utilità del codice kata. Sono interessato ai metodi per introdurre questo concetto in un team di sviluppo.

    
posta Sardathrion 05.03.2012 - 10:06
fonte

4 risposte

4

Il modo in cui introduci i kata di codice nel tuo posto di lavoro dipende molto da ciò che vuoi ottenere da loro.

Nel mio caso volevo incoraggiare l'uso di Test Driven Development così ho eseguito un Cyber-Dojo . Con questo tipo di esercizio, l'enfasi non è sul codice stesso, ma sul processo di scrivere il codice.

Abbiamo trascorso un pomeriggio, a coppie, ripetendo lo stesso kata, ma in condizioni diverse. Abbiamo iniziato con tutti i gruppi a fare un esercizio allo stesso tempo. Ciò ha fornito una base di riferimento.

Abbiamo quindi discusso alcuni dei principi di base del TDD, abbiamo tutti cambiato partner e ripetuto lo stesso kata. Abbiamo ripetuto lo stesso kata per de-enfatizzare la generazione del codice e invece concentrare le persone sul processo di denominazione dei casi di test e del ciclo Red / Green.

Poi abbiamo ripetuto di nuovo il kata, ma approssimativamente ogni 10 minuti una persona in ciascun gruppo si spostava in un altro gruppo, simulando gli ambienti di squadra piuttosto fluidi in cui ci troviamo spesso in questi giorni.

Nell'ultima versione, abbiamo scambiato entrambi partner ogni 10 minuti circa in gruppi diversi. Ciò ha contribuito a dimostrare che con TDD, anche il passaggio di consegne da una squadra a una completamente diversa non deve necessariamente essere troppo doloroso, dal momento che il progetto dovrebbe essere solo un ciclo Red / Green dal lavoro.

La cosa interessante era che c'erano poche persone che avevano fatto un TDD prima della sessione, ma quale conoscenza del TDD si diffuse rapidamente fino alla completa iterazione attraverso il kata, la maggior parte delle persone pensava in modo TDD o almeno poteva apprezzare perché potrebbe essere utile.

Le persone in generale hanno detto che il pomeriggio è stato sia divertente che informativo e ora stiamo esaminando altri modi per utilizzare il 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 la pratica deliberata di TDD e apprendere le dinamiche di squadra. Ha un sacco di 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 è che, dopo aver eseguito un kata, puoi tornare indietro e osservare la progressione rosso / verde (o forse non * 8 ') di ciascuno dei gruppi partecipanti. I semafori sono un ottimo modo per visualizzare il funzionamento del processo TDD.

Se vuoi il tuo server CyberDojo, il intero progetto può essere trovato su github e c'è anche un Chiavi in mano Linux macchina virtuale dell'appliance collegata da lì, il che significa che supponendo che tu abbia già VMware player o VirtualBox installati, puoi essere installato e funzionante entro pochi minuti dal download del apparecchio!

    
risposta data 06.03.2012 - 17:02
fonte
7

La domanda è "modi efficaci per introdurre X nel posto di lavoro". Non discuterò se dovresti o non dovresti. Il modo per introdurlo è guardare la propria organizzazione e determinare chi è nella posizione giusta per introdurlo.

In alcune organizzazioni l'approccio migliore è attraverso la gestione. Regolano alcuni luoghi di lavoro, quindi qualsiasi cosa che non ritengono utile sarà schiacciata. Altrimenti i partecipanti saranno costretti a nasconderlo dal management, limitando così la sua efficacia.

In altri luoghi di lavoro l'approccio migliore è ottenere il buy-in da uno sviluppatore senior. Possono incoraggiare gli altri a partecipare. Possono coinvolgere tutto il loro team / progetto.

Il terzo approccio consiste nel coinvolgere un altro sviluppatore rispettato. Hanno guadagnato abbastanza margine di manovra che il loro tempo investito in X non è visto come una perdita di tempo.

Dopo che è stato introdotto, preparatevi a raccogliere dati e provatelo: aumenta la produttività; riduce i difetti; o riduce il tempo di allenamento.

    
risposta data 05.03.2012 - 14:18
fonte
2

Un'idea è quando l'implementazione di un nuovo algoritmo che è un po 'complicato o difficile è avere più sviluppatori che la implementano in modo indipendente. Più che probabile ci saranno due o più implementazioni differenti. Quindi cambia l'uno con l'altro e cerca di impiantare l'implementazione degli altri in modo indipendente. Quindi riunirsi e determinare qual è il modo migliore. In questo modo ti eserciti e sembra che stai per raggiungere la soluzione migliore.

    
risposta data 06.03.2012 - 05:43
fonte
2

Uno degli sviluppatori del mio gruppo ha raccomandato di eseguire occasionalmente un refactoring a mano libera che catturasse la tua fantasia solo per dimostrare che sarebbe stato possibile, quindi ripristina il tutto.

Questa sembra essere la migliore applicazione del mondo reale di un "kata" di cui ho sentito parlare.

Ti prepara per / se mai fare il refactoring per un vero problema, e non è una perdita di tempo per un problema immaginario che potrebbe o meno essere applicato alla tua base di codice.

    
risposta data 06.03.2012 - 16:15
fonte

Leggi altre domande sui tag