CodeRetreat на SEEK: Чысты код супраць зоны камфорту

Панядзелак раніцай. Гэта не тыповы для распрацоўнікаў час, каб выгнаць сябе з зоны камфорту кадавання і накіравацца на eXtreme Learning на цэлы дзень.

Але гэта 20 адважных праграмных інжынераў SEEK і 3 запрошаныя кодэры з супольнасці #DevOpsGirls, якія падпісаліся 16 красавіка 2018 года. Яны паняцця не мелі, у што яны ўваходзяць. Спрытны і рост мыслення для перамогі!

Пара кадуе гульню жыцця Conway, выконваючы практыкі TDD і XP

"Практыка і ўдасканальваць свае рамёствы."

CodeRetreat - гэта паўтараемае, штодзённае мерапрыемства, арыентаванае на адпрацоўку асноў распрацоўкі праграмнага забеспячэння з выкарыстаннем некаторых практык XP (праграмавання eXtreme), такіх як распрацоўка тэставых праграм (TDD), парнае праграмаванне і просты дызайн. Мэта складаецца ў тым, каб палепшыць кошт змяненняў і напісаць код, які адкрыта прымае змены.

У той час як мэта распрацоўшчыкаў кожны дзень заключаецца ў тым, каб завяршыць наступны вынік, асноўная ўвага для распрацоўнікаў пры адступленні кода заключаецца ў тым, каб практыкаваць і вучыцца - не дабівацца.

Пасля таго, як мы нагадалі сабе гэтыя асновы чыстага і адаптаванага кода, мы пераскочылі проста ў сесіі кадавання.

Прыгода, якая чакае каманды, была вырашана ў гульні "Жыццё жыцця" Conway за 4 сеансы, кожны раз пачынаючы кожны раз, кожны раз мяняючы спарвання партнёра, кожны раз з рознымі забаўнымі праблемамі (ака з абмежаваннямі). Мы хацелі выгнаць нашых інжынераў з зоны камфортнага кадавання для навучання eXtreme!

Пачнём!

Кожны сеанс працуе па 45 хвілін. Пасля кожнай сесіі каманды выдаляюць свой код. Часта гэта адбываецца, калі пачынаецца лаянка. Мэта выдалення іх кода заключаецца ў тым, каб захаваць моцную ўвагу да навучання. Кароткі тэрмін дазваляе ўдзельнікам завяршыць гульню жыцця Conway. Улічваючы тое, што кожны чалавек выдаляе свой код пасля кожнай сесіі, усё роўна, ці сапраўды гэты код страшны ці добры. Гэта прыводзіць да вялікай волі эксперыментаваць з спробамі розных падыходаў да кадавання і TDD.

Сесія № 1: Размінка

Знаёмства з праблемай, TDD і спарваннем.

разагрэў()
{
   timeRemaining = таймер (45, time.minutes)
   час (застаецца час)
   {
     працаваць у парах()
     codeSolution ()
   }
   deleteAllCode ()
}

Сесія № 2: Злучэнне пінг-понга

Па чарзе пісаць няўдалы тэст альбо рэалізацыю.

pingPongPairing ()
{
   timeRemaining = таймер (45, time.minutes)
   час (застаецца час)
   {
     driver.writeFailingTest ()
     swapDriver ()
     driver.makeTestPass ()
     driver.refactor ()
   }
   deleteAllCode ()
}
Адна з пар пінг-понг TDD

Сесія № 3: Адключэнне гуку

Падчас сесіі размова не ідзе (выключэнне: невядомыя на мове / IDE).

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

Сесія № 4: Дзіцячыя крокі

Час кадавання - скрыні па 4 хвіліны для напісання і здзяйснення праходжання тэстаў.

babySteps ()
{
  timeRemaining = таймер (45, time.minutes)
  час (застаецца час)
  {
    stepTimer = таймер (4, time.minutes)
    паспрабуйце {
      writeFailingTest ()
      makeTestPass ()
      gitCommit ()
    }
    злавіць (timeOut)
    {
      gitRevert ()
    }
  }
  deleteAllCode ()
}
Час клікае!

Ітэратыўнае навучанне на 3-х узроўнях

CodeRetreat мае на мэце максімальна павялічыць навучанне, выстаўляючы пары на складаную праблему, у той час як кідаючы абмежаванні як складаныя фарматы сесій.

Навучанне на многіх узроўнях. Фота Element5 Digital на Unsplash
CodeRetreat палепшыла маё майстэрства і кар'еру больш, чым любая іншая дзейнасць, якую я калі-небудзь рабіў. Нават як фасілітатар я шмат чаму навучыўся. (Джым Херн, амерыканскі праграмны інжынер і дасведчаны мадэратар CodeReetreat)

Мы прымацавалі да навучання людзей, знайшоўшы час, каб разважаць і дзяліцца імі як групы: ітэратыўнае навучанне = сесія + рэтра.

Тры ўзроўню навучання на працягу дня працавалі над спалучэннем, TDD і паўтарэннем аднолькавай праблемы:

  • Злучэнне з рознымі людзьмі на працягу дня прыводзіць да шматграннага навучання з розных падыходаў да той жа праблемы - канцэптуальна і праграмна (мовы праграмавання, дызайн праграмнага забеспячэння, IDE, інструменты, даследаванні, стыль зносін).
  • Кадзіраванне адной і той жа праблемы зноў і зноў зразумела, што няма ніякага спосабу пачаць распрацоўваць, кадзіраваць і тэставаць рашэнне. Першапачатковае рашэнне пачаць знутры (спачатку распрацаваць навакольнае асяроддзе) або знутры (знутры распрацаваць правілы гульні) вызначыла TDD-падыход каманды і тое, колькі яны будуць рабіць, і як хутка яны даведаюцца і пацвердзяць свой дызайн .
  • Дзякуючы тэсціраванню тэсціравання распрацоўкі (TDD) заняткаў, камандам было кінута задача думаць, што гэта сапраўды мала. Было шмат "ага" момантаў пра цяжкасці гэтай дысцыпліны і, што яшчэ важней, пра перавагі наступнага падыходу, бо TDD дапамагае кіраваць дызайнам рашэння, не задумваючыся над рашэннем.
    У Agile and Lean мы працуем з камандамі, каб засяродзіцца на скарачэнні адходаў за ўвесь жыццёвы цыкл пастаўкі прадукцыі. Мы разбіваем праблемы на невялікія кавалкі і засяроджваемся на прадастаўленні кліентам самых каштоўных рэчаў, каб павялічыць хуткасць і каштоўнасць навучання.
    TDD дазваляе знізіць колькасць адходаў у праграмнай інжынерыі, няспынна засяроджваючыся на тым, каб будаваць толькі тое, што актуальна і каштоўна. Усё гэта прыводзіць да больш чыстаму і адаптацыйнаму коду. Гэта важны ўрок для інжынераў праграмнага забеспячэння ў свеце, дзе хуткасць, адаптацыя і каштоўнасць кліента робяць або парушаюць поспех людзей, каманд і прадпрыемстваў.
Каманда збіраецца разам, каб падзяліцца сваімі ведамі і назіраннямі

Што сказалі нашы праграмныя інжынеры?

Спарванне Ping Pong: Пошук дзірак

Карысна было назіраць за тым, як хтосьці іншы піша код толькі для таго, каб прайсці тэсты майго блока, бо без здагадак і кантэксту, якія ўваходзяць у іх рашэнне, у маіх тэстах было выяўлена дзіркі, якія я, магчыма, не заўважыў, як працуе сола. (Дж. Дж.)

Маўчанне спарвання: экспрэсіўны код будучай ўласнай асобы

З сесіі 3, дзе мы не маглі размаўляць з партнёрамі - Гэта вельмі адносна таго, што трэба пісаць самавыражальны код, бо наша будучае "я" альбо хтосьці іншы будзе падобны на нашага маўклівага партнёра, які проста павінен мець сэнс ад таго, што азначае код . (А.К.)

TDD: Рабіць гэта няправільна

Сесія прымусіла нас думаць / пераасэнсоўваць тое, як мы робім TDD. Мы працавалі над тэматычным даследаваннем TDD, і мы распрацавалі ўсе тэставыя сцэнарыі наперад, мне заўсёды было цікава, чаму мы не маем адчувальнага выніку (кода) нават пасля столькіх дзён працы. Зараз у мяне ёсць адказ, мы зрабілі TDD няправільна. Спачатку гэта не тэсты, мы зараз яго адрамантавалі і пачалі пісаць адзіны тэст, а потым ісці наперад. (П.С.)
Канцэнтрацыя адчувальная падчас складанага

Урокі садзейнічання

Былі і навучанні для нас, як фасілітараў.

Гатоўнасць да TDD
Адной з найважнейшых задач нашых каманд была першапачатковая настройка іх асяроддзя TDD. Мы папрасілі людзей прыйсці падрыхтаванымі са сваім ноўтбукам, наладзіць з ідэнтыфікатарам па сваім выбары, гатовым TDD і ўсталяваць git. Аднак гэта было не дастаткова яўна. Некаторыя каманды нават не змаглі паўдзельнічаць у вучэнні, бо ўвесь час яны стваралі сваё асяроддзе.

У наступны раз мы прапануем дадатковую падтрымку нашым камандам наперад. Асабліва для ўнутранага codeRetreat. Што тычыцца знешняга codeRetreat, мы будзем больш ясна пра тое, што азначае TDD-гатовая серада і як яны могуць праверыць гэта, каб быць гатовым codeRetreat :)

Выпадковае спарванне
Ідэя, якая ўсплыла да нас пасля дня, заключалася ў пошуку гульняў, каб рандомизировать спарванне. Натуральна, людзі імкнуцца да пары з людзьмі вакол іх альбо людзьмі, з якімі яны прывыклі працаваць, таму пошук цікавых спосабаў процідзеяння гэтаму выгадна.

Спрашчэнне ў дзеянні - час спыніць і выдаліць код

Разнастайнасць & #DevOpsGirls

У нас была разнастайная група людзей, якія прысутнічалі на мерапрыемстве. Ад нашых самых малодшых асацыяваных распрацоўшчыкаў праграмнага забеспячэння, да нашых самых старэйшых галоўных распрацоўшчыкаў (таксама вядомых як Tech Leads ў іншых кампаніях). У нас было цудоўнае стаўленне да жанчын у тэхніцы з 8 з 20 удзельніц. Гэта значна вышэй, чым звычайна <10% у любой камандзе.

Фасілітатары CodeRetreat Вікторыя Шыфер, Мішэль Глісан з нашымі #DevOpsGirls Праграмныя інжынеры Edit, Падмаваці і Наталля

Мы былі рады падтрымцы супольнасці Мельбурна #DevOpsGirls, адкрыўшы наша ўнутранае навучанне для трох знешніх праграмных інжынераў. Нам спадабалася, каб яны ўносілі свае дызайнерскія і інжынерныя навыкі, а нашы пары вучыліся разам са сваім вопытам і зваротнай сувяззю.

У пакоі была дзіўная вібрацыя і некалькі фантастычных размоў, калі ўсе спрабавалі вырашыць тую ж праблему, а аспрэчвалі тыя ж абмежаванні.

Выснова

Да канца дня ўсе былі знясілены, бо яны разважалі над сваімі праблемамі і перажываннямі. Мы таксама спадзяемся, што наш codeRetreat дапамог нам дасягнуць мэты SEEK, дапамагаючы нашым праграмным інжынерам жыць больш паўнавартасна і прадуктыўна працаваць, дапамагаючы нашай арганізацыі дасягнуць поспеху.

Цікаўлюся codeRetreats - вось яшчэ!

www.coderetreat.org
Даведайцеся больш пра codeRetreats, іх гісторыю, як размясціць альбо палегчыць адно і дзе знайсці наступнае мерапрыемства побач з вамі.

Наступны сусветны дзень CodeRetreat #gdcr запланаваны на 17 лістапада 2018 года. Захавайце дату, азнаёмцеся, калі ў вашым рэгіёне будзе падзея #gdcr, і прытрымлівайцеся @coderetreat на твітэры альбо далучайцеся да расслабленай каманды праграмістаў.

Каб прачытаць яшчэ адзін унутраны запуск CodeRetreat пры праверцы REA гэтага паведамлення ў блогу: http://rea.tech/tdd-in-bash-aka-our-1st-internal-code-retreat-rea/

Асаблівая падзяка Мішэль Глісан за сумеснае правядзенне дня са мной і задавальненне спарвання псеўда-кода сесій. Таксама Джо П'ечота за ўнутранае змаганне за падзеяй. Таксама дзякуй SEEK - Tim Smart & Craig Penfold за спансаванне мерапрыемства для нашых праграмных інжынераў. І апошняе, але не ў апошнюю чаргу дзякуй Тэрэзе Нэйт за дапамогу ў падтрымцы #DevOpsGirls, запрасіўшы 3 знешніх праграмных інжынераў #DevOpsGirls.