Orice programator trebuie să se fi întrebat asta. Există întotdeauna un echilibru între calitatea codului și viteza de implementare. Pentru că mereu se poate șlefui ceva, mereu se poate încerca un alt design, mereu apar librării și tooluri noi care ne-ar putea face codul mai mentenabil. Dar orice bucată de cod trebuie livrată pentru a fi utilă.
Code Retreat invită programatorii să-și răspundă la această întrebare. Scopul evenimentului este de exersare. Fiecare dintre participanți exersează tehnici prin care poate să scrie cod mai bun, mai curat și mai mentenabil, astfel încât atunci când revine la munca sa poate să scrie în mod natural cod mai bun.
Code Retreat este un eveniment care simulează mediul ideal în care timpul nu este un factor în deciziile luate în timpul programării.
În general, evenimentele din zona IT-ului și programării se împart în două categorii: conferințele și concursurile. Conferințele, meet-upurile, chiar și workshopurile se bazează pe transferul de cunoștințe, mai ales teoretice de la persoane care au mai multe informații dintr-o anumită nișă către ceilalți participanți. Concursurile se bazează mai mult pe practică, dar implică concentrarea pe rezolvarea problemelor, în defavoarea practicilor de îmbunătățire a calității. Code Retreat-ul este o altă categorie: participantul își îmbunătățește setul de skilluri prin exercițiu.
La Code Retreat programatorii se întâlnesc pentru a-și exersa abilitățile de a scrie cel mai bun cod care rezolvă parțial o problemă predefinită.
Global Day of Code Retreat este, după cum îi spune și numele evenimentul anual la care participă programatori din toată lumea. În 2017 s-au organizat 136 de Code Retreat-uri simultane. În Cluj, GDCR se ține în fiecare an din 2012.
Problema care trebuie abordată este aceeași în fiecare an: Conway's Game of Life. Cei mai mulți participanți la Code Retreat nu o rezolvă niciodată, deși am auzit în fiecare an pe cineva la sfârșitul zilei: mă duc acasă și rezolv problema, nu poate să rămână nerezolvată de mine. Sunt oameni care participă an de an și în fiecare an spun lucrul acesta. Motivul este că, deși problema rămâne nerezolvată integral, la sfârșitul zilei senzația de împlinire este acolo: codul pe care l-am scris a fost mai bun, mai lizibil, mai ușor de întreținut, mai acoperit de unit teste decât în orice altă zi din an.
Code Retreat facilitează îmbunătățirea unor skilluri care nu sunt legate de obicei, de limbajul sau mediul de programare, dar care stau la baza creării codului de bună calitate, ușor de întreținut, cu costuri minime pe termen lung. În lumea profesională nu există mediul de exersare, în care să se codeze fără presiunea rezultatului final. Pentru că scopul nu e de a produce cod, ci de a produce instrumente software. Dan North susține că orice cod, oricât de bine scris, este o povară, dacă ceva se poate rezolvă fără producerea de cod, așa ar trebui făcut: Microservices: Software that fits in your head. În cadrul Code Retreat, scopul programării se mută de la crearea unui produs bun, la crearea unui cod cât mai aproape de perfecțiune.
Code Retreat are la bază principiile care guvernează și problema din fiecare an: regulile sunt foarte simple, dar pot duce la o evoluție a situației foarte complexă.
Ziua este împărțită în șase sesiuni de câte 45 de minute. După fiecare sesiune se șterge codul. Fiecare sesiune vine cu reguli noi menite să îl facă pe programator să iasă din zona de confort și să exerseze practici cu care nu este obișnuit, dar care sunt metode dovedite de a obține cod de calitate mai bună.
Sesiunile se desfășoară în perechi. Deși fiecare este responsabil de evoluția și revelațiile proprii pe parcursul zilei, programarea în echipe de doi ajută la deschiderea perspectivelor, dezvoltarea exprimării argumentelor, învățarea anumitor trucuri. Frumusețea formatului constă în faptul ca aceste beneficii vin natural. De obicei oamenii nu se cunosc între ei. Perechile sunt formate relativ aleatoriu și oricum se schimbă pe parcursul zilei de cinci-șase ori. Fiecare are soluția lui și crede că e cea mai bună. Fiecare trebuie să scrie și unit teste și cod, nu este recomandat să scrie doar un participant. Există și reguli pe care participanții trebuie să le respecte uneori: unul trebuie să scrie codul care să facă testele celuilalt să treacă; nu au voie să vorbească între ei; nu se poate folosi mouse-ul sau scurtăturile de la tastatură; trebuie să scrie un test și codul care face testul să treacă în 30 de secunde, altfel nu pot salva codul și o iau de la început; la jumătatea sesiunii se schimbă calculatorul cu altă echipă. Toate aceste constrângeri duc la o altfel de atitudine față de cod și de cei din jur. La sfârșitul zilei, oamenii se bucură că au scris mai multe teste, că au reușit să facă refactoring, că au înțeles ce înseamnă TDD cu adevărat. Sunt aceiași oameni care în aceeași dimineață erau convinși că EI vor rezolvă problema și doar după aceea se vor gândi la calitate.
După fiecare sesiune există cinci minute în care se discută impactul pe care l-au avut ultimele 45 de minute asupra participanților: cum au abordat de data aceasta problema, ce s-a schimbat, ce a fost ieșit din comun. Aici, în cercul de la sfârșitul sesiunilor se extrag concluzii revelatoare uneori: "nu credeam că unit testele scrise înainte pot dicta rezolvarea problemei", "nu credeam că metodele mele sunt atât de greșit denumite până când am fost constrâns să vorbesc cu perechea mea", "nu credeam că pot să am doar metode de cinci linii", "cel mai greu a fost să alegem o soluție", "unit testele ne-au ajutat să alegem soluția", "cel mai greu este să programezi pe alt calculator sau alt sistem de operare".
După toate sesiunile se mai face o retrospectivă în care se răspunde la trei întrebări: "Ce ai învățat azi? Ce te-a surprins? Ce vei aplică în viitor?". Se învață cum se scriu unit teste, cum se programează în alt limbaj, cum se folosește un tool într-un mod mai bun, cum e să-ți dispară codul căruia i-ai dedicat toate ultimele trei sferturi de oră, cum e să trebuiască să găsești tu soluția de compromis ca lucrurile să meargă mai departe. Ne uimește cum se scurtează 45 de minute de la o sesiune la altă pentru că suntem mai implicați, cât de greu e să nu folosim copy/paste, cât de complexă e totuși problema, cât de greu este să scriem cod fără propoziții condiționale, cum o simplă schimbare de cerințe (de exemplu: să avem celule cu șase vecini în loc de patru) îți poate da toată rezolvarea peste cap. Vom încerca să aplicăm TDD sau măcar să scriem unit teste, să scriem metode mai scurte, să folosim alte limbaje de programare. În cazul mea, participarea la un code retreat, m-a condus la decizia că trebuie să îmi schimb jobul pentru că mi-am dat seama că mă plafonam.
Code Retreat are abilitatea pe care o promit toate workshopurile de succes: într-un mediu sigur, te poate scoate din zona de confort pentru a te obliga să evoluezi. La fiecare ediție, la fiecare sesiune înveți ceva, uneori despre coding, alteori despre tine.
Te așteptăm și în acest an în Cluj la Global Day of Code Retreat pe 17 Noiembrie! Până atunci ne poți urmări pe
de Paul Resiga
de Mihai Babici
de Mircea Vădan