CodeRetreat SEEKis: puhas kood vs mugavustsoon

On esmaspäeva hommik. See pole tüüpiline arendajasõbralik aeg, et end otsekodeerimise mugavustsoonist välja lüüa ja suunduda terveks päevaks eXtreme õppesse.

Kuid just see, 20 julget tarkvarainseneri SEEKis ja 3 külaliskooderit kogukonnast #DevOpsGirls, registreerusid 16. aprillil 2018. Neil polnud aimugi, millesse nad end sisse saavad. Agiilset ja kasvu toetavat mõtteviisi võitmiseks!

Paarid kodeerivad Conway elumängu, järgides TDD ja XP tavasid

"Harjutage ja parandage oma käsitööd."

CodeRetreat on korduv, kogu päeva vältel toimuv sündmus, mis on keskendunud tarkvaraarenduse põhialuste harjutamisele, kasutades mõnda XP (eXtreme Programming) tava, näiteks Test Driven Development (TDD), Pair Programming ja Simple Design. Eesmärk on muutuste maksumuse vähendamisel paremini jõuda ja kirjutada kood, mis on muudatustega avalikult nõus.

Kuigi arendajate eesmärk on iga päev lõpetada järgmine väljaanne, keskendub arendajatele kooditagamisel harjutamine ja õppimine - mitte lõpetamine.

Pärast seda, kui tuletasime endale meelde neid puhta ja kohandatava koodi põhialuseid, hüppasime otse kodeerimisseanssidele.

Meeskonda ootav seiklus oli Conway elumängu käsitlemine 4 sessioonina, alustades iga kord otsast peale, vahetades paaripartnerit, iga kord erinevate lõbusate väljakutsetega (ehk piirangutega). Lõppude lõpuks tahtsime oma insenerid oma kodeerimise mugavustsoonist välja lüüa!

Alustame!

Iga seanss kestab 45 minutit. Pärast igat sessiooni kustutavad meeskonnad oma koodi. Sageli on see siis, kui vannumine algab. Nende koodi kustutamise eesmärk on hoida tugev keskendumine õppimisele. Lühike ajakava muudab osalejate jaoks Conway elumängu lõpetamise võimatuks. Arvestades seda, et kõik kustutavad oma koodi pärast igat seanssi, pole vahet, kas kood on tõesti kohutav või tõesti hea. See annab palju vabadust katsetada erinevaid lähenemisviise kodeerimisele ja TDD-le.

Seanss nr 1: soojendus

Probleemiga tutvumine, TDD ja sidumine.

üles soojenema()
{
   timeRemaining = taimer (45, aeg.minutid)
   while (aegRaikuv)
   {
     paaris töötama()
     codeSolution ()
   }
   deleteAllCode ()
}

Sessioon nr 2: pingpongi sidumine

Ebaõnnestunud testi või rakenduse kirjutamiseks kordamööda.

pingPongPairing ()
{
   timeRemaining = taimer (45, aeg.minutid)
   while (aegRaikuv)
   {
     driver.writeFailingTest ()
     swapDriver ()
     driver.makeTestPass ()
     driver.refactor ()
   }
   deleteAllCode ()
}
Üks pingpongi paaridest TDD’ing

Seanss nr 3: vaigistamine

Seansi ajal ei räägita (erand: tundmatud keeles / IDE-s).

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

Seanss nr 4: beebi sammud

Kodeerimise ajakastid 4-minutised testide kirjutamiseks ja sooritamiseks.

lapsesammud()
{
  timeRemaining = taimer (45, aeg.minutid)
  while (aegRaikuv)
  {
    stepTimer = taimer (4, aeg.minutid)
    proovige {
      writeFailingTest ()
      makeTestPass ()
      gitCommit ()
    }
    saak (timeOut)
    {
      gitRevert ()
    }
  }
  deleteAllCode ()
}
Aeg tiksub!

Iteratiivne õpe kolmel tasemel

CodeRetreat eesmärk on maksimeerida õppimist, paljastades paarid keerukale probleemile, viskades samal ajal piirangud väljakutsuvateks sessioonivorminguteks.

Õppimine mitmel tasandil. Foto autor Element5 Digital saidil Unsplash
CodeRetreat on parandanud minu oskusi ja karjääri rohkem kui ükski teine ​​tegevus, mida ma kunagi teinud olen. Isegi juhendajana olen nii palju õppinud. (Jim Hurne, USAs asuv tarkvarainsener ja kogenud codeRetreat'i hõlbustaja)

Ankurdasime inimeste õppetunnid sellega, et võtame aega nende kajastamiseks ja rühmana jagamiseks: Iteratiivne õpe = Sessioon + Retro.

Päeva 3 õppimistaset olid sidumine, TDD ja iteratsioon sama probleemi kohal:

  • Päeva jooksul erinevate inimestega sidumine viib mitmetahuliste õppimiseni, mis käsitlevad sama probleemi eri lähenemisviise - kontseptuaalselt ja programmiliselt (programmeerimiskeeled, tarkvara kujundamine, IDE-d, tööriistad, uurimistöö, suhtlusstiil).
  • Sama probleemi ikka ja jälle kodeerides mõistis meeskond, et pole ühte viisi, kuidas alustada lahenduse kavandamist, kodeerimist ja testimist. Esialgne otsus alustada väljastpoolt (kõigepealt keskkonna kujundamine) või väljastpoolt (kõigepealt mängureeglite kujundamine) määras meeskonna TDD-lähenemisviisi ning selle, kui palju nad ära teha saaks ja kui kiiresti nad õpiksid oma disaini tundma ja valideerima .
  • Seansside testitava arengu (TDD) fookuse kaudu kutsuti meeskondi üles mõtlema tõeliselt väikeseks. Selle distsipliini raskuste kohta oli palju „aha” -momente ja mis veelgi olulisem - selle lähenemisviisi järgimise eelistest, kuna TDD aitab suunata lahenduse kavandamist, ilma et oleks lahendust üle töötatud. Agile ja Lean's töötame meeskondadega, et keskenduda jäätmete vähendamisele kogu toote tarnimise olelustsükli vältel. Jaotame probleemid väiksemateks tükkideks ja keskendume kliendile kõige väärtuslikumate asjade kohaletoimetamisele, et suurendada õppimise kiirust ja väärtust. TDD võimaldab vähendada tarkvaratootmise raiskamist, keskendudes järeleandmatult ainult asjakohase ja väärtusliku loomisele. Kõik viib puhtama ja paremini kohandatava koodini. See on oluline õppetund tarkvarainseneridele maailmas, kus kiirus, kohanemisvõime ja kliendi väärtus muudavad üksikisikute, meeskondade ja ettevõtete edu või murravad selle edu.
Meeskond, kes saavad kokku oma kogemusi ja kogemusi

Mida meie tarkvarainsenerid ütlesid?

Pingpongi sidumine: aukude leidmine

Oli väärtuslik vaadata, kuidas keegi teine ​​kirjutab koodi lihtsalt selleks, et läbida minu ühikatsetused, kuna ilma eeldusteta ja nende lahendusesse sisse arvestatud kontekstiga näitas see minu testides avasid, et ma pole võib-olla märganud töötavat soolo. (J. J.)

Vaikne sidumine: väljendusrikas kood tuleviku mina jaoks

Alates 3. sessioonist, kus me ei saanud oma partneritega vestelda - see on väga suhteline sellega, et peame kirjutama eneseväljenduskoodi, kuna meie tulevane mina või keegi teine ​​sarnaneb meie vaikiva partneriga, kes pidi lihtsalt aru saama, mida kood tähendab . (A.K.)

TDD: Valesti käitumine

Seanss pani meid mõtlema / ümber mõtlema, kuidas me TDD-d teeme. Töötasime TDD juhtumianalüüsi kallal ja olime kõik oma katsestsenaariumid juba ette kavandanud. Imestasin alati, miks meil isegi nii paljude tööpäevade järel pole käegakatsutavat väljundit (koodi). Nüüd on mul vastus, me tegime TDD valesti. Esiteks ei ole need testid, nüüd oleme seda ümber kujundanud ja asunud kirjutama ühte katseseadist ning seejärel edasi minema. (P.S.)
Kontsentratsioon on käegakatsutava keeruka “vaigistamise sidumise” ajal

Õpitud õppetunnid

Oli ka õpetusi meile kui juhendajatele.

TDD valmidus
Üks meie meeskondade suuremaid väljakutseid oli TDD-keskkonna algne seadistamine. Palusime inimestel tulla ette oma sülearvutiga, seadistamiseks valitud IDE-ga, TDD-ga valmis ja paigaldatud. Kuid see polnud piisavalt selge. Mõnel meeskonnal ei õnnestunud isegi õppusel osaleda, kuna neil kulus kogu aeg oma keskkonna loomiseks.

Järgmine kord pakume oma meeskondadele kohe rohkem tuge. Eriti sisemise codeRetreat. Välise codeRetreat 'i puhul räägime täpsemalt, mida tähendab TDD-valmis keskkond ja kuidas nad saavad seda testida, et see oleks codeRetreat-iga valmis :)

Sidumise juhuslik kasutamine
Idee, mis meile päeva järel hõljus, oli leida paaride juhuslikuks muutmiseks mänge. Loomulikult kipuvad inimesed paarituma enda ümber asuvate või harjunud inimestega, nii et lõbusate viiside leidmiseks selle vastu on kasu.

Tegevuse hõlbustamine - aeg koodi peatamiseks ja kustutamiseks

Mitmekesisus ja #DevOpsGirls

Üritusel osales meil mitmekesine seltskond inimesi. Alates meie kõige noorematest kaastöötajatest tarkvaraarendajatest kuni meie kõige vanemate peamiste arendajateni (teistes ettevõtetes tuntud ka kui Tech Leads). 20-st osalejast 8-l oli suur osakaal tehnikatööstuses tegutsevaid naisi. See on palju suurem kui tavaline <10% suhe ükskõik millises meeskonnas.

CodeRetreat'i juhendajad Victoria Schiffer, Michelle Gleeson koos meie tarkvarainseneridega #DevOpsGirls Edit, Padmavathi ja Natalia

Meil oli hea meel toetada Melbourne #DevOpsGirls kogukonda, avades oma sisekoolituse 3 välisele tarkvarainsenerile. Meile meeldis, kui nad andsid oma panuse oma disaini- ja insenerioskustesse ning et meie paarid saaksid õppida koos oma kogemuste ja tagasisidega.

Ruumis valitses hämmastav vibe ja mõned fantastilised vestlused, kuna kõik püüdsid sama probleemi lahendada, samal ajal kui neile seati vastu samad piirangud.

Järeldus

Päeva lõpuks olid kõik kurnatud, kui mõtisklesid oma väljakutsete ja kogemuste üle. Samuti loodame, et meie codeRetreat aitas meil saavutada SEEK-i eesmärke, aidates meie tarkvarainseneridel elada täisväärtuslikumat ja produktiivsemat elu ning aidates meie enda organisatsioonil edu saavutada.

Teid huvitab codeRetreats - siin on veel!

www.coderetreat.org
Lisateave codeRetreatide, nende ajaloo, ühe hostimise või hõlbustamise kohta ja kust leida järgmine sündmus teie lähedal.

Järgmine ülemaailmne CodeRetreat #gdcr päev on kavandatud 17. novembrile 2018. Salvestage kuupäev, registreeruge, kas teie piirkonnas toimub #gdcr sündmus ja jälgige @coderetreat twitteris või liituge tarkvara käsitööliste lohaka meeskonnaga.

Lugege veel ühe sisemise CodeRetreat'i käituse kohta REA kassas seda ajaveebi postitust: http://rea.tech/tdd-in-bash-aka-our-1st-internal-code-retreat-rea/

Eriline tänu Michelle Gleesonile selle päeva koos minuga majutamise ja seansside pseudokoodiga sidumise lõbutsemise eest. Samuti Jo Piechotale ürituse sisemise meisterlikkuse eest. Samuti tänu SEEK - Tim Smart & Craig Penfoldile ürituse sponsoreerimise eest meie tarkvarainseneridele. Ja viimane, kuid mitte vähem tähtis, tänu Theresa Neate'ile, kes aitas meil toetada #DevOpsGirls, kutsudes 3 välist #DevOpsGirls'i tarkvarainsenerit.