CodeRetreat SEEK: Puhdas koodi vs mukavuusvyöhyke

On maanantaiaamuna. Tämä ei ole tyypillinen kehittäjäystävällinen aika potkaista itsesi suoraan koodauksen mukavuusvyöhykkeeltä ja siirtyä eXtreme-oppimiseen koko päivän ajan.

Tämä on kuitenkin se, johon 20 rohkeaa SEEK-ohjelmistosuunnittelijaa ja 3 #DevOpsGirls-yhteisövierailijakoodia ilmoittautuivat 16. huhtikuuta 2018. Heillä ei ollut aavistustakaan, mihin he itse ryhtyivät. Ketterät ja kasvua ajattelevat voitot!

Pari paria koodaa Conwayn Game of Life -tapahtumaa noudattaen TDD- ja XP-käytäntöjä

"Harjoittele ja paranna käsityötäsi."

CodeRetreat on toistettava, koko päivän mittainen tapahtuma, joka on keskittynyt ohjelmistokehityksen perusteiden harjoitteluun käyttämällä joitain XP (eXtreme Programming) -käytäntöjä, kuten Test Driven Development (TDD), pariohjelmointi ja yksinkertainen suunnittelu. Tavoitteena on pitää entistä paremmin vähentää muutoksen kustannuksia ja kirjoittaa koodi, joka avoimesti hyväksyy muutoksen.

Vaikka kehittäjien tavoitteena on joka päivä päästä seuraavaan tuotteeseen, kehittäjien pääpaino on koodin vetäytymisessä harjoitteluun ja oppimiseen - ei loppuun saattamiseen.

Kun muistutimme itsellemme näitä puhtaan ja mukautuvan koodin perusteita, hyppäsimme suoraan koodausistuntoihin.

Ryhmää odottava seikkailu käsitteli Conwayn elämänpeliä 4 istunnossa, jokainen aloittaen alusta, joka kerta vaihtamalla pariliitosparia, joka kerta eri hauskoilla haasteilla (alias rajoitukset). Halusimme potkaista insinöörejämme koodausmukavuudesta eXtreme-oppimiseen!

Aloitetaan!

Jokainen istunto kestää 45 minuuttia. Jokaisen istunnon jälkeen joukkueet poistavat koodinsa. Usein tällöin vannoutuminen alkaa. Heidän koodinsa poistamisen tarkoituksena on pitää vahva keskittyminen oppimiseen. Lyhyen aikataulun ansiosta osallistujien on melkein mahdotonta lopettaa Conwayn elämänpeli. Koska kaikki poistavat koodinsa jokaisen istunnon jälkeen, ei ole väliä, onko koodi todella kauhea vai todella hyvä. Tämä antaa paljon vapautta kokeilla erilaisia ​​lähestymistapoja koodaukseen ja TDD: hen.

Istunto # 1: Lämmitä

Tutustuminen ongelmaan, TDD ja pariliitos.

lämmitellä()
{
   timeRemaining = ajastin (45, aika.minuutit)
   kun taas (timeRemaining)
   {
     työskennellä pareittain()
     codeSolution ()
   }
   deleteAllCode ()
}

Istunto # 2: Ping Pong -parinmuutos

Vuorotellen kirjoittamalla epäonnistunut testi tai toteutus.

pingPongPairing ()
{
   timeRemaining = ajastin (45, aika.minuutit)
   kun taas (timeRemaining)
   {
     driver.writeFailingTest ()
     swapDriver ()
     driver.makeTestPass ()
     driver.refactor ()
   }
   deleteAllCode ()
}
Yksi pingispongipareista TDD'ing

Istunto 3: Mykistä pariliitos

Ei puhetta istunnon aikana (poikkeus: kielen tuntemattomat / IDE).

mutePairing ()
{
  personA.canTalk = väärä
  personB.canTalk = väärä
  pingPongPairing ()
}

Istunto # 4: Vauvan vaiheet

Koodausaikalaatikot 4 minuuttia testien kirjoittamista ja suorittamista varten.

vauvanaskeleet()
{
  timeRemaining = ajastin (45, aika.minuutit)
  kun taas (timeRemaining)
  {
    stepTimer = ajastin (4, aika.minuutit)
    yrittää{
      writeFailingTest ()
      makeTestPass ()
      gitCommit ()
    }
    saalis (TIMEOUT)
    {
      gitRevert ()
    }
  }
  deleteAllCode ()
}
Kello käy!

Iteratiivinen oppiminen kolmella tasolla

CodeRetreat pyrkii maksimoimaan oppimisen altistamalla parit monimutkaiselle ongelmalle samalla kun heikentää rajoituksia haastavina istuntoformaateina.

Oppiminen monilla tasoilla. Kuva Element5 Digital on Unsplash
CodeRetreat on parantanut taitojani ja urani enemmän kuin mikään muu toiminta, jota olen koskaan tehnyt. Jopa avustajana olen oppinut niin paljon. (Jim Hurne, yhdysvaltalainen ohjelmistosuunnittelija ja maustetun koodin palautuksen avustaja)

Ankkuroimme ihmisten oppimisen ottamalla aikaa pohtia ja jakaa niitä ryhmänä: Iterative Learning = Session + Retro.

Päivän 3 oppimistasoa olivat pariliitokset, TDD ja iteroivat saman ongelman yli:

  • Parillisuus erilaisten ihmisten kanssa koko päivän johtaa monipuolisiin oppimisiin eri lähestymistavoista samaan ongelmaan - käsitteellisesti ja ohjelmallisesti (ohjelmointikielet, ohjelmistosuunnittelu, IDE: t, työkalut, tutkimus, kommunikaatiotyyli).
  • Koodaamalla samaa ongelmaa uudestaan ​​ja uudestaan, joukkue tajusi, että ratkaisun suunnittelulle, koodaamiselle ja testaamiselle ei ole yhtä tapaa. Alkuperäinen päätös aloittaa ulkopuolelta (ensin ympäristön suunnittelu) tai sisäpuolelta (ensin pelisääntöjen suunnittelu) määritteli joukkueen TDD-lähestymistavan ja sen, kuinka paljon he saavat aikaan ja kuinka nopeasti oppivat ja validoivat suunnittelun. .
  • Istuntojen Test Driven Development (TDD) -keskuksen avulla ryhmät haastettiin ajattelemaan todella pientä. Tämän oppiaineen vaikeuksista, ja mikä tärkeintä, tämän lähestymistavan noudattamisen eduista oli paljon ”aha” -hetkiä, koska TDD auttaa ohjaamaan ratkaisun suunnittelua ilman, että ratkaisua suunnitellaan liikaa.
    Agile and Lean -ympäristössä työskentelemme tiimien kanssa keskittyäksemme jätteiden vähentämiseen koko tuotteen toimitusjakson ajan. Jaotamme ongelmat pienemmiksi paloiksi ja keskitymme arvokkaiimpien tuotteiden toimittamiseen asiakkaalle oppimisen nopeuden ja arvon kasvattamiseksi.
    TDD mahdollistaa ohjelmistosuunnittelussa syntyvän jätteen vähentämisen keskittymällä säälimätömästi vain rakentamaan asiaankuuluvaa ja arvokasta. Kaikki johtaa puhtaampaan ja mukautuvampaan koodiin. Tämä on tärkeä oppitunti ohjelmistosuunnittelijoille maailmassa, jossa nopeus, mukautuvuus ja asiakasarvo tekevät tai murtaa yksilöiden, ryhmien ja yritysten menestyksen.
Tiimi kokoontuu jakamaan kokemuksiaan ja havaintojaan

Mitä ohjelmistosuunnittelijamme sanoivat?

Ping Pong -parien muodostaminen: reikien löytäminen

Oli arvokasta katsoa, ​​että joku muu kirjoitti koodia vain siirtääksesi yksikkötestini, koska ilman oletuksia ratkaisustaan ​​ja kontekstia, joka osoitti testissäni reikiä, joita en ehkä huomannut työskentelevän yksin. (J. J.)

Hiljainen pariliitos: Ilmeikäs koodi tulevaisuuden itselle

Istunnosta 3 alkaen, jolloin emme voineet puhua kumppaneidemme kanssa - Tämä on hyvin suhteellista siihen, että joudumme kirjoittamaan itseilmaisukoodin, koska tuleva itsemme tai joku muu olisi samanlainen kuin hiljainen kumppanimme, joka piti vain ymmärtää mitä koodi tarkoittaa . (A.K.)

TDD: Tekee väärin

Istunto sai meidät ajattelemaan / ajattelemaan uudelleen tapaa, jolla teemme TDD: tä. Työskentelimme TDD: tä koskevassa tapaustutkimuksessa ja olimme suunnitelleet kaikki testiskenaariomme etukäteen, mietin aina, miksi meillä ei ollut mitään konkreettista tulosta (koodia) edes niin monen päivän työn jälkeen. Nyt minulla on vastaus, teimme TDD väärin. Se ei ole ensin testejä, olemme nyt uudelleensuunnitelleet sitä ja alkaneet kirjoittaa yhden koestusvälineen ja siirtyä sitten eteenpäin. (P.S.)
Keskittyminen on havaittavissa hankala ”mykistetty pariliitos” -istunnon aikana

Oppimisen helpottaminen

Oli myös opiskelua meille avustajille.

TDD-valmius
Yksi joukkueidemme suuremmista haasteista oli TDD-ympäristön alustava määrittäminen. Pyysimme ihmisiä tulemaan valmistautumaan kannettavalla tietokoneellaan, asennukseen valitsemallaan IDE: llä, valmis TDD: llä ja asennettuna. Se ei kuitenkaan ollut riittävän selkeä. Jotkut joukkueet eivät edes onnistuneet osallistumaan harjoitukseen, koska he pitivät koko ajan ympäristönsä luomisessa.

Seuraavan kerran tarjoamme enemmän tukea joukkueillemme etukäteen. Varsinkin sisäisen codeRetreat: n yhteydessä. Ulkoisen codeRetreat-prosessin yhteydessä olisimme tarkempia siitä, mitä TDD-valmis ympäristö tarkoittaa ja miten he voivat testata sen olevan valmis codeRetreat-valmisteltavaksi :)

Pariliitoksen satunnaistaminen
Idea, joka levisi meille päivän jälkeen, oli löytää pelejä satunnaistamaan pariliitos. Ihmisillä on luonnollisesti pari pari heidän ympärillään olevien ihmisten kanssa tai ihmisten kanssa, joiden kanssa he ovat tottuneet työskentelemään, joten hauskojen tapojen löytäminen vastapainoksi on hyödyllistä.

Helppous toiminnassa - aika lopettaa ja poistaa koodi

Monimuotoisuus & #DevOpsGirls

Tapahtumassa oli monipuolinen joukko ihmisiä. Nuoremmista osakkuusohjelmistokehittäjistämme vanhimpiin pääkehittäjiin (tunnetaan myös nimellä Tech Leads muissa yrityksissä). Meillä oli läsnä suuri tekniikan ammattilaisten naisten lukumäärä, 8 osallistujaa 20 osallistujasta. Tämä on paljon korkeampi kuin minkä tahansa joukkueen tavanomainen <10% -suhde.

CodeRetreat-avustajat Victoria Schiffer, Michelle Gleeson #DevOpsGirls -ohjelmistosuunnittelijoidemme Edit, Padmavathin ja Natalian kanssa

Olimme mielellämme tukemassa Melbourne #DevOpsGirls -yhteisöä avaamalla sisäisen koulutuksen 3 ulkoiselle ohjelmistosuunnittelijalle. Nautimme siitä, että he antoivat heidän suunnittelu- ja suunnittelutaitojaan ja että parimme oppivat yhdessä kokemuksensa ja palautteensa kanssa.

Huoneessa oli hämmästyttävä tunnelma ja fantastisia keskusteluja, kun kaikki yrittivät ratkaista saman ongelman samalla kun heidät haastettiin samoilla rajoituksilla.

johtopäätös

Päivän loppuun mennessä kaikki olivat uupuneita, kun he pohtivat haasteitaan ja kokemuksiaan. Toivomme myös, että codeRetreat auttoi meitä saavuttamaan SEEKin tavoitteen auttamalla ohjelmistosuunnittelijamme elämään tyydyttävämpää ja tuottavampaa työelämää ja auttamalla omaa organisaatiotamme menestymään.

Kiinnostunut codeRetreats - täällä on enemmän!

www.coderetreat.org
Lisätietoja codeRetreaateista, niiden historiasta, kuinka isännöidä tai helpottaa yhtä ja mistä löytää seuraava läheinen tapahtuma.

Seuraava CodeRetreat #gdcr: n globaali päivä on tarkoitus järjestää 17. marraskuuta 2018. Tallenna päivämäärä, tarkista jos alueellasi on #gdcr-tapahtuma ja seuraa @coderetreat twitterissä tai liity ohjelmiston käsityöläisten hidasta tiimiä.

Lukeaksesi toisesta sisäisestä CodeRetreat-ajoista REA: n kassalla, katso tämä blogi: http://rea.tech/tdd-in-bash-aka-our-1st-internal-code-retreat-rea/

Erityiset kiitokset Michelle Gleesonille päivän yhdessä järjestämisestä kanssani ja pariksi tekemisen hauskasta istuntojen pseudokoodissa. Myös Jo Piechotalle tapahtuman puolustamisesta sisäisesti. Kiitos myös SEEK - Tim Smart & Craig Penfoldille sponsoroimasta tapahtumaa ohjelmistosuunnittelijoillemme. Ja viimeisenä, mutta ei vähäisimpänä, kiitos Theresa Neateelle, joka on auttanut meitä tukemaan #DevOpsGirls-kutsua 3 ulkoista #DevOpsGirls-ohjelmistosuunnittelijaa.