Global Day of Code Retreat 2012
Azi a fost Global Day Code Retreat și s-a ținut și în Cluj. Și a fost foarte tare! S-a ținut la Cluj Cowork (un loc foarte mișto de altfel) de la vreo 9 până la 6.
În ce constă GCRD? Sunt vreo 5 sesiuni de pair programming de 45 de minute și după fiecare îți ștergi codul. Și apoi îți schimbi perechea. Și începi din nou. Și deobicei îs restricții diferite la fiecare sesiune. Anul acesta problema era Conway's Game of Life.
Prima oară am început cu Andrei în Javascript. Am încercat ceva metode „OOP”. În Javascript. Având obiecte celule. That didn't turn out to be a good ideea. Am reușit să facem ceva, dar nu am ajuns prea departe. A doua tură am fost tot cu el, dar am schimbat tehnica. Celulele nu mai erau obiecte, ci le păstram doar coordonatele într-o matrice rară, cu două dicționare. Progrese, dar acuma am început să scriem și teste, așa că tot nu am apucat să implementăm toate regulile.
La a treia tură a trebuit să schimbăm partener. Auzisem de cineva că vrea Python, așa că m-am băgat. Silviu nu mai lucrase în Python, dar s-a descurcat. Avea o recomandare foarte bună pentru cum să organizăm codul, iar brevitatea codului Python ne-a ajutat să terminăm problema (fără UI) și să și facem ceva teste. Când am întrebat pe GM dacă mai avem timp de UI, era să primim în cap de la ceilalți. Printre altele, o mare plângere a fost că nu aveam destule de teste, sau că nu erau bine făcute.
Așa că la a patra tură m-am băgat cu principalul critic, Daniel, să facem în Python, cu TDD ca lumea. Well, nu știam că se poate scrie așa mult cod de testare. Aveam 170 linii de test (un pic brutal, că puteam face ceva refactoring să avem un set up, dar nici el nu avea experiență cu Python, așa că nu am mai complicat treaba). Și aici am ajuns până la pasul de implementare a funcției de evoluție a universului. A fost o tură foarte educativă pentru mine. Mai ales că Daniel mi-a zis să nu mă grăbesc prea tare și să implementez doar atât cât să treacă testele. Testele erau doar pentru vecinătate pe orizontală? Doar aia implementăm. Celelelate verificări au venit mai încolo. Interesant.
Last up: cu Viorel în Python. Restricția: no talking. Și trebuia să scriem unul din noi teste, dăm laptopul la celălat, implementează acesta, scrie alte teste și dă înapoi. Brusc mă trezesc cu trei teste cu nume de un kilometru. Restricția de no talking ne-a făcut de câteva ori să ne ridicăm sprâncenele puternic la ce teste ne scriam reciproc, dar a ieșit destul de ok (față de alții, care și-au dat seama că aveau designuri complet diferite în cap pe la jumătatea sesiunii :)) )
A fost interesant „clash”-ul dintre programatorii cărora le plac limbajele dinamice și cei cu limbaje statice. Au cam predominat cei cu C# și Java, dar din când în când se întâlneau doi cu preferințe diferite. Eu am prins de fiecare dată limbaje dinamice, dar Andrei a pățit să ajungă la C#, la sesiunea de no talking, și se tot mira cum apare din senin atâta cod după doar câteva apăsări de taste =)))
All in all, a fost o zi foarte faină, organizatorii au făcut o treabă excelentă și abia aștept următoarea sesiune de Code Retreat, chiar dacă fi sub o altă denumire. Și sper că data următoare voi putea lucra în ceva limbaje și mai exotice.
Folosind local history din IDE-uri, am reușit să recuperez toate cele 5 sesiuni și le-am pus pe GitHub for everyone to enjoy and laugh at code written in 45 minutes.