„CodeRetreat“ SEEK: „Clean Code vs Comfort Zone“

Tai pirmadienio rytas. Tai nėra tipiškas kūrėjams patogus laikas, kai norite išstumti save iš savo kodavimo komforto zonos ir visą dieną leistis į „eXtreme“ mokymąsi.

Vis dėlto štai 20 drąsių „SEEK“ programinės įrangos inžinierių ir 3 svečių #DevOpsGirls bendruomenės programuotojai užsiregistravo 2018 m. Balandžio 16 d. Jie net neįtarė, į ką jie įsitraukia. Agile ir augimo mąstysena laimėti!

Poros koduoja „Conway's Game of Life“, vadovaudamosi TDD ir XP praktika

„Išmok ir tobulink savo amatą“.

„CodeRetreat“ yra kartojamas, visą dieną trunkantis įvykis, orientuotas į programinės įrangos kūrimo pagrindų praktiką, naudojant kai kurias XP („eXtreme Programming“) praktikas, tokias kaip „Test Driven Development“ (TDD), „Pair Programming“ ir „Simple Design“. Tikslas yra ir toliau tobulėti mažinant pokyčių sąnaudas ir parašyti kodą, kuris atvirai priima pokyčius.

Nors kūrėjų tikslas kiekvieną dieną yra baigti kitą pristatymą, kūrėjams didžiausias dėmesys skiriamas kodo renažuotėms - mankštintis ir mokytis - nebaigti.

Po to, kai priminome sau apie švaraus ir pritaikomo kodo pagrindus, mes perėjome tiesiai į kodavimo seansus.

Nuotykis, kurio laukė komanda, buvo „Conway's Game of Life“ įveikimas per 4 seansus, kiekvieną kartą pradedant iš naujo, kiekvieną kartą keičiant poros partnerį, kiekvieną kartą atliekant skirtingus linksmus iššūkius (dar vadinamus apribojimais). Galų gale norėjome išstumti inžinierius iš savo kodavimo komforto zonos, kad galėtumėte mokytis „eXtreme“!

Pradėkime!

Kiekviena sesija trunka 45 minutes. Po kiekvieno užsiėmimo komandos ištrina savo kodą. Dažnai tai būna tada, kai prasideda keiksmažodžiai. Ištrinant jų kodą siekiama išlaikyti didelį dėmesį mokymuisi. Dėl trumpo laikotarpio dalyviams beveik neįmanoma baigti „Conway“ gyvenimo žaidimo. Kadangi visi po kiekvieno seanso ištrina savo kodą, nesvarbu, ar kodas tikrai baisus, ar tikrai geras. Tai suteikia daug laisvės eksperimentuoti išbandant skirtingus kodavimo ir TDD metodus.

1 seansas: sušilkite

Susipažinimas su problema, TDD ir susiejimas.

apšilimas()
{
   „timeRemaining“ = laikmatis (45, laikas.minutės)
   tuo tarpu (timeRemaining)
   {
     dirbti porose()
     „codeSolution“ ()
   }
   deleteAllCode ()
}

2 seansas: „Ping Pong“ poravimas

Paeiliui parašyti nesėkmingą testą ar jo įgyvendinimą.

„pingPongPairing“ ()
{
   „timeRemaining“ = laikmatis (45, laikas.minutės)
   tuo tarpu (timeRemaining)
   {
     driver.writeFailingTest ()
     „swapDriver“ ()
     driver.makeTestPass ()
     vairuotojas.refaktorius ()
   }
   deleteAllCode ()
}
Viena iš „ping pong“ porų TDD’ing

3 seansas: Nutildyti poravimą

Sesijos metu nekalbama (išimtis: nežinoma kalba / IDE).

„mutePairing“)
{
  personA.canTalk = klaidinga
  personB.canTalk = klaidinga
  „pingPongPairing“ ()
}

4 seansas: Kūdikio žingsniai

Kodavimo laiko dėžutės - 4 minutės, skirtos rašyti ir laikyti egzaminus.

maži žingsneliai()
{
  timeRemaining = laikmatis (45, laikas.minutės)
  tuo tarpu (timeRemaining)
  {
    stepTimer = laikmatis (4, laikas.minutės)
    bandyti{
      „writeFailingTest“ ()
      „makeTestPass“ ()
      gitCommit ()
    }
    pagauti (timeOut)
    {
      gitRevert ()
    }
  }
  deleteAllCode ()
}
Laikas tiks!

Iteracinis mokymasis 3 lygiais

„CodeRetreat“ siekia maksimaliai padidinti mokymąsi, atskleisdami poroms sudėtingą problemą, kartu nurodydami apribojimus kaip iššūkių reikalaujančius sesijos formatus.

Mokymasis daugeliu lygių. „Element5 Digital“ nuotrauka „Unsplash“
„CodeRetreat“ pagerino mano įgūdžius ir karjerą labiau nei bet kuri kita mano kada nors vykdoma veikla. Net būdamas tarpininku išmokau tiek daug. (Jim Hurne, JAV įsikūręs programinės įrangos inžinierius ir patyręs „codeRetreat“ tarpininkas)

Mes įtvirtinome žmonių mokymąsi skirdami laiko apmąstyti ir pasidalyti jais kaip grupe: Iteracinis mokymasis = Sesija + Retro.

Trys tos dienos mokymosi lygiai buvo poruojami, TDD ir kartojami dėl tos pačios problemos:

  • Poros su skirtingais žmonėmis per dieną lemia įvairiapusį mokymąsi iš skirtingų požiūrių į tą pačią problemą - konceptualiai ir programiškai (programavimo kalbos, programinės įrangos dizainas, IDE, įrankiai, tyrimas, komunikacijos stilius).
  • Vėl ir vėl koduodama tą pačią problemą, komanda suprato, kad nėra vieno būdo pradėti kurti, koduoti ir išbandyti sprendimą. Pradinis sprendimas pradėti išorėje (pirmiausia suprojektuoti aplinką) arba išorėje (pirmiausia suprojektuoti žaidimo taisykles) nustatė komandos TDD požiūrį ir tai, kiek jie pasieks ir kaip greitai sužinos apie savo projektą ir patvirtins jį. .
  • Sesijoms sutelkus dėmesį į „Test Driven Development“ (TDD), komandoms buvo leista mąstyti išties mažomis. Buvo daugybė „aha“ momentų apie šios disciplinos sunkumus, o dar svarbiau - apie šio požiūrio laikymosi naudą, nes TDD padeda vadovautis sprendimo dizainu, per daug nesigilinant į sprendimą.
    „Agile and Lean“ grupėse mes dirbame su komanda, siekdami sutelkti dėmesį į atliekų mažinimą per visą produkto pristatymo gyvavimo ciklą. Mes suskirstome problemas į mažesnes dalis ir sutelkiame dėmesį į vertingiausių daiktų pristatymą klientui, kad padidintume mokymosi greitį ir vertę.
    TDD leidžia sumažinti programinės įrangos inžinerijos švaistymą, negailestingai sutelkiant dėmesį tik į tai, kas tinkama ir vertinga. Visa tai lemia švaresnį ir labiau pritaikomą kodą. Tai yra svarbi pamoka programinės įrangos inžinieriams pasaulyje, kuriame greitis, pritaikomumas ir kliento vertė lemia arba palaiko asmenų, komandų ir verslo sėkmę.
Komanda, susibūrusi pasidalinti savo žiniomis ir pastebėjimais

Ką pasakė mūsų programinės įrangos inžinieriai?

„Ping Pong“ poravimas: skylių radimas

Buvo vertinga žiūrėti, kaip kažkas kitas rašo kodą tik tam, kad išlaikytų mano vieneto testus, nes be prielaidų ir konteksto, į kurį atsižvelgta jų sprendime, tai parodė mano testų spragas, kurių aš galbūt nepastebėjau dirbdamas solo. (J. J.)

Tylus poravimasis: išraiškingas ateities savęs kodas

Nuo 3 sesijos, kur negalėjome kalbėtis su savo partneriais - tai labai susiję su tuo, kad turime parašyti išraiškingą kodą, nes mūsų būsimasis aš ar kas nors kitas būtų panašus į mūsų tylųjį partnerį, kuriam tereikėjo suprasti, ką reiškia kodas . (A.K.)

TDD: elgiasi neteisingai

Sesija privertė mus susimąstyti / pergalvoti tai, kaip mes darome TDD. Mes dirbome nagrinėdami TDD atvejo analizę ir iš anksto sukūrėme visus savo bandymų scenarijus. Man visada buvo įdomu, kodėl net po tiek dienų darbo neturėjome jokio apčiuopiamo išėjimo (kodo). Dabar aš turiu atsakymą, mes padarėme TDD neteisingai. Pirmiausia tai nėra testai, dabar mes jį rekonstravome ir pradėjome rašyti vieną bandomąjį įrenginį, tada einame į priekį. (P.S.)
Koncentracija yra juntama sudėtingame „nutildymo poravimo“ seanso metu

Išmoktos lengvinimo pamokos

Taip pat buvo išmokta ir mūsų, kaip pagalbininkų.

TDD parengtis
Vienas iš didesnių mūsų komandų iššūkių buvo pradinis jų TDD aplinkos nustatymas. Mes paprašėme žmonių ateiti pasiruošę su savo nešiojamu kompiuteriu, sąranka su pasirinktu IDE, paruoštu TDD ir įdiegtu „git“. Tačiau jis nebuvo pakankamai aiškus. Kai kurios komandos net nesugebėjo dalyvauti pratybose, nes visą laiką kūrė savo aplinką.

Kitą kartą mes iš anksto pasiūlysime daugiau palaikymo komandoms. Ypač vidaus codeRetreat. Jei norite naudoti išorinį „codeRetreat“, mes turėtume aiškiau pasakyti, ką reiškia TDD parengta aplinka ir kaip jie gali tai išbandyti, kad būtų parengta „codeRetreat“ :)

Atsitiktinis susiejimas
Po dienos mums kilo mintis surasti žaidimus, kurie atsitiktinai parinktų porą. Natūralu, kad žmonės linkę poruotis su aplinkiniais žmonėmis ar žmonėmis, su kuriais jie yra įpratę dirbti, todėl naudinga rasti įdomių būdų, kaip tai neutralizuoti.

Veikimo palengvinimas - laikas sustabdyti ir ištrinti kodą

Įvairovė ir #DevOpsGirls

Renginyje dalyvavo įvairus būrys žmonių. Nuo mūsų jauniausių asocijuotos programinės įrangos kūrėjų iki vyriausių pagrindinių kūrėjų (dar vadinamų „Tech Leads“ kitose įmonėse). Buvo 8 moterys iš 20 dalyvių, dirbančių technikos srityje. Tai yra daug didesnis nei įprastas <10% santykis bet kurioje komandoje.

„CodeRetreat“ fasilitatoriai Victoria Schiffer, Michelle Gleeson su mūsų #DevOpsGirls programinės įrangos inžinieriais Edit, Padmavathi ir Natalia

Mums buvo malonu palaikyti Melburno #DevOpsGirls bendruomenę, atvėrus mūsų vidinius mokymus 3 išoriniams programinės įrangos inžinieriams. Mums patiko, kad jie įnešė savo projektavimo ir inžinerijos įgūdžių, o mūsų poros mokėsi kartu su savo patirtimi ir atsiliepimais.

Kambaryje tvyrojo nuostabi vibe ir keletas fantastiškų pokalbių, nes visi bandė išspręsti tą pačią problemą, tuo pačiu būdami ginčijami dėl tų pačių suvaržymų.

Išvada

Dienos pabaigoje visi buvo išsekę, nes apmąstė savo iššūkius ir patirtį. Mes taip pat tikimės, kad mūsų „codeRetreat“ padėjo mums pasiekti SEEK tikslą - tai padėjo mūsų programinės įrangos inžinieriams gyventi ištvermingesnį ir produktyvesnį darbinį gyvenimą ir padėjo mūsų organizacijos sėkmei.

Domina „codeRetreats“ - štai daugiau!

www.coderetreat.org
Sužinokite daugiau apie „codeRetreats“, jų istoriją, kaip priglobti ar palengvinti ir kur rasti kitą įvykį šalia jūsų.

Kita pasaulinė „CodeRetreat #gdcr diena“ yra numatyta 2018 m. Lapkričio 17 d. Išsaugokite datą, patikrinkite, ar jūsų rajone įvyks #gdcr įvykis, ir sekite @coderetreat per „Twitter“ arba prisijungkite prie programinės įrangos kūrėjų „vangus“ komandos.

Norėdami perskaityti kitą vidinį „CodeRetreat“ paleisti REA, patikrinkite šį tinklaraščio įrašą: http://rea.tech/tdd-in-bash-aka-our-1st-internal-code-retreat-rea/

Ypatinga ačiū Michelle Gleeson už dienos kartu su manimi priėmimą ir porų linksmybes sesijų pseudo kodu. Taip pat Jo Piechota už čempiono renginyje vidų. Taip pat ačiū SEEK - Tim Smart ir Craig Penfold, kurie rėmė renginį mūsų programinės įrangos inžinieriams. Ir paskutinis, bet ne mažiau svarbus ačiū Theresa Neate, kad ji padėjo mums palaikyti #DevOpsGirls, pakviesdama 3 išorinius #DevOpsGirls programinės įrangos inžinierius.