CodeRetreat a SEEK: Clean Code vs Comfort Zone

És dilluns al matí. Aquest no és un moment típic per als desenvolupadors de llançar-se directament de la vostra zona de confort de codificació i dirigir-se a l'aprenentatge eXtreme durant un dia sencer.

Això és el que van signar el 20 d'abril del 2018 20 valents enginyers de programari de SEEK i 3 codificadors convidats de la comunitat #DevOpsGirls. Mentals àgils i de creixement per al triomf!

Combina el joc de la vida de Conway, seguint les pràctiques de TDD i XP

"Practiqueu i milloreu el vostre ofici."

Un codeRetreat és un esdeveniment repetible, durant tot el dia, centrat en practicar els fonaments del desenvolupament de programari, utilitzant algunes de les pràctiques de XP (programació eXtreme), com ara Test Driven Development (TDD), Programació de parelles i Disseny senzill. L’objectiu és millorar cada cop més reduït el cost del canvi i escriure codi que accepti obertament el canvi.

Tot i que l’objectiu dels desenvolupadors cada dia és acabar el següent lliurament, l’objectiu dels desenvolupadors en un retir de codi és practicar i aprendre, no acabar.

Després de recordar-nos aquests fonaments del codi net i adaptable, vam saltar directament a les sessions de codificació.

L’aventura que esperava l’equip era abordar el joc de la vida de Conway en 4 sessions, cada vegada que va començar, cada cop que intercanviava parella de parella, cada cop amb diferents reptes divertits (també coneguts). Volíem treure als nostres enginyers fora de la seva zona de confort de codificació per a l'aprenentatge eXtreme després de tot!

Comencem!

Cada sessió té una durada de 45 minuts. Després de cada sessió, els equips eliminen el seu codi. Sovint és quan comença la juració. El propòsit de suprimir el seu codi és mantenir fortament l’aprenentatge. El curt període de temps fa que els participants acabin el joc de la vida de Conway. Atès que tothom suprimeix el seu codi després de cada sessió, no importa si el codi és realment terrible o realment bo. Això comporta molta llibertat per experimentar amb diferents enfocaments de codificació i TDD.

Sessió número 1: escalfament

Familiarització amb el problema, TDD i sincronització.

escalfar()
{
   timeRemaining = temporitzador (45, time.minutes)
   while (Resta de temps)
   {
     workInPairs ()
     codeSolution ()
   }
   deleteAllCode ()
}

Sessió núm. 2: maridatge amb ping-pong

Fer torns per escriure la prova o implementació que falla.

pingPongPairing ()
{
   timeRemaining = temporitzador (45, time.minutes)
   while (Resta de temps)
   {
     driver.writeFailingTest ()
     swapDriver ()
     driver.makeTestPass ()
     driver.refactor ()
   }
   deleteAllCode ()
}
Una de les TDD de parells de ping pong

Sessió núm. 3: Emparellament silenciat

No es parla durant la sessió (excepció: incògnites en l'idioma / IDE).

mutePairing ()
{
  personA.canTalk = fals
  personB.canTalk = fals
  pingPongPairing ()
}

Sessió # 4: Baby Steps

Temps de codificació: caixes de 4 minuts per escriure i fer proves de superació.

babySteps ()
{
  timeRemaining = temporitzador (45, time.minutes)
  while (Resta de temps)
  {
    stepTimer = temporitzador (4, temps.minuts)
    prova {
      writeFailingTest ()
      makeTestPass ()
      gitCommit ()
    }
    captura (timeOut)
    {
      gitRevert ()
    }
  }
  deleteAllCode ()
}
El temps està marcant!

Aprenentatge iteratiu en 3 nivells

Un codeRetreat té l’objectiu de maximitzar l’aprenentatge exposant les parelles a un problema complex, alhora que es limiten els formats com a formats de sessió desafiants.

Aprenentatge a molts nivells. Foto de Element5 Digital a Unsplash
CodeRetreat ha millorat les meves habilitats i la meva carrera professional que qualsevol altra activitat que he fet mai. Fins i tot, en tant que facilitador, n’he après molt. (Jim Hurne, enginyer de programari basat als Estats Units i codi experimentat, facilitador de retracte)

Hem ancorat els aprenentatges de les persones aprofitant el temps per reflexionar-los i compartir-los com a grup: Aprenentatge iteratiu = Sessió + Retro.

Els 3 nivells d’aprenentatge durant tot el dia es van combinar, TDD i iterar el mateix problema:

  • El maridatge amb persones diferents al llarg del dia condueix a aprenentatges polifacètics des de diferents enfocaments al mateix problema, conceptualment i programàticament (llenguatges de programació, disseny de programari, IDE, eines, recerca, estil de comunicació).
  • Codificant el mateix problema una i altra vegada l'equip es va adonar que no hi ha una manera única de començar a dissenyar, codificar i provar una solució. La decisió inicial d’iniciar-se per fora (dissenyar primer l’entorn) o per dins (dissenyar primer les regles del joc) va determinar l’enfocament de TDD de l’equip i quant s’aconseguirien i amb quina rapidesa aprendrien i validarien el seu disseny. .
  • Mitjançant el focus de les sessions de Test Driven Development (TDD), es va reptar als equips a pensar realment petits. Hi va haver molts moments “aha” sobre les dificultats d’aquesta disciplina i, el que és més important, sobre els avantatges de seguir aquest enfocament, ja que TDD ajuda a guiar el disseny de la solució, sense enginyar massa la solució.
    A Agile i Lean treballem amb equips per centrar-nos en la reducció de residus durant tot el cicle de vida de l’entrega de productes. Desglossem els problemes en fragments més petits i ens centrem a lliurar els articles més valuosos al client per augmentar la velocitat i el valor de l’aprenentatge.
    TDD permet reduir els residus de l'enginyeria de programari mitjançant un enfocament implacable a construir només allò rellevant i valuós. Tot conduint a un codi més net i adaptable. Aquesta és una lliçó important per als enginyers de programari en un món on la velocitat, l’adaptabilitat i el valor del client fan o trenquen l’èxit de persones, equips i empreses.
L’equip es reuneix per compartir els seus aprenentatges i observacions

Què van dir els nostres enginyers de programari?

Maridatge de ping-pong: cerca de forats

Va ser valuós veure algú altre escriure codi només per passar les proves de la meva unitat, ja que sense els supòsits sobre el context i el context inclòs en la seva solució, va mostrar forats en les meves proves que potser no he notat que treballava en solitari. (J. J.)

Emparellament silenciós: codi expressiu per al futur jo

A partir de la sessió 3, en què no podríem parlar amb els nostres companys, això és molt relatiu a haver d’escriure codi autorepressiu ja que el nostre futur o algú altre seria semblant al nostre company silenciós que només hauria de tenir sentit del que significa el codi. . (A.K.)

TDD: Ho fa malament

La sessió ens va fer pensar / repensar la manera de fer TDD. Estàvem treballant en un estudi de cas sobre TDD i havíem dissenyat tots els nostres escenaris de prova, sempre em preguntava per què no teníem cap producte tangible (codi) fins i tot després de tants dies de treball. Ara tinc la resposta, vam fer TDD malament. Primer no es posa a prova, ara ho hem refactorat i hem començat a escriure una única prova per implementar-la per després avançar. (P.S.)
La concentració és palpable durant la sessió complicada de

Lliçons de facilitació apreses

També hi va haver aprenentatges per a nosaltres com a facilitadors.

Preparació en TDD
Un dels grans reptes dels nostres equips va ser la configuració inicial del seu entorn TDD. Vam demanar a la gent que vingui preparada amb el seu ordinador portàtil, que configurés amb un IDE de la seva elecció, el TDD preparat i el git instal·lat. Tot i això, no va ser prou explícit. Alguns equips ni tan sols van aconseguir participar en un exercici, ja que van passar tot el temps configurant el seu entorn.

La propera vegada oferirem més suport als nostres equips per endavant. Especialment per a un tractament intern de codi. Per a un codeRetreat extern, seríem més explícits sobre què significa un entorn preparat per a TDD i com poden provar-lo perquè estigui llest codeRetreat :)

Maridatge aleatori
Una idea que ens va passar després del dia era buscar jocs per emparellar aleatòriament els maridatges. Naturalment, les persones solen emparellar-se amb persones que hi ha al seu voltant o persones amb les quals estan acostumats, de manera que és profitós trobar formes divertides de contrarestar-ho.

Facilitat en l'acció: temps per aturar i suprimir el codi

Diversitat i #DevOpsGirls

Vam tenir un grup divers de persones que van assistir a l'esdeveniment. Des dels nostres desenvolupadors de programari associats més joves, fins als nostres desenvolupadors principals més importants (també coneguts com a líders tècnics en altres empreses). Teníem una gran proporció de dones en tecnologia present amb 8 dels 20 participants. Això és molt superior a la ràtio <10% habitual en qualsevol equip.

Els facilitadors de CodeRetreat Victoria Schiffer, Michelle Gleeson amb els nostres #DevOpsGirls Software Engineers Edit, Padmavathi i Natalia

Ens va encantar donar suport a la comunitat #DevOpsGirls de Melbourne obrint la nostra formació interna a 3 enginyers de programari externs. Ens ha agradat que aportessin les seves habilitats en disseny i enginyeria i que les nostres parelles aprenguessin junts amb la seva experiència i feedback.

Hi va haver un ambient increïble a la sala i algunes converses fantàstiques, ja que tothom intentava resoldre el mateix problema mentre se'ls reptava les mateixes limitacions.

Conclusió

Al final del dia, tothom estava esgotat, ja que reflexionava sobre els seus reptes i experiències. També esperem que el nostre codeRetreat ens hagi ajudat a assolir el propòsit de SEEK, ajudant els nostres enginyers de programari a viure una vida laboral més satisfactòria i productiva i a ajudar a la nostra pròpia organització a tenir èxit.

Està interessat en codificar retrats: aquí en teniu més!

www.coderetreat.org
Obteniu més informació sobre els rècords de codi, el seu historial, com allotjar o facilitar-ne un i on trobar el següent esdeveniment a prop vostre.

El proper Dia Mundial de CodeRetreat #gdcr està programat per al 17 de novembre de 2018. Guardeu la data, comproveu si hi haurà un esdeveniment #gdcr a la vostra àrea i seguiu @coderetreat a twitter o uniu-vos a l'equip de correcció de programari crafters.

Per llegir una altra publicació de CodeRetreat intern a REA checkout en aquesta publicació del blog: http://rea.tech/tdd-in-bash-aka-our-1st-internal-code-retreat-rea/

Agraïments especials a Michelle Gleeson per haver convidat la jornada amb mi i per divertir-me al pseudo-codi de les sessions. També a Jo Piechota per internar-se a l’esdeveniment. També gràcies a SEEK - Tim Smart & Craig Penfold per patrocinar l’esdeveniment per als nostres enginyers de programari. I, finalment, però no menys important, gràcies a Theresa Neate per ajudar-nos a donar suport a #DevOpsGirls convidant 3 enginyers de programari externs de #DevOpsGirls.