ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 144
Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 23
Abonament PDF

Code Kata

Tudor Trișcă
Team Lead & Scrum Master
@.msg systems Romania



MANAGEMENT

Cuvântul Kata provine din artele marţiale: este traducerea japoneză a cuvântului formă. Kata e folosit pentru a descrie şabloane de mişcare detaliate, de o anumită coreografie, care pot fi practicate fie singur, fie în perechi.

Poate să descrie şi alte acţiuni din artele marţiale cum ar fi training-ul, lupte simulate detaliate şi altele.

Kata-urile erau metode de învăţare si de training prin care tehnicile de luptă de succes erau conservate şi transmise mai departe. Practicarea Kata permitea unui grup de persoane să activeze într-o luptă folosind o tehnică sistematică, spre deosebire de o mulţime de indivizi într-o manieră haotică.

Principalul avantaj al folosirii Kata-urilor în arte marţiale este transmiterea de tehnici dovedite şi practicarea lor într-o manieră repetitivă. Aceasta ajută novicele să-şi dezvolte abilităţile de executare a acestor tehnici şi mişcări într-un mod natural ca şi un reflex. Pentru a atinge acest nivel, ideea nu este acţionarea sistematică, ci mai degrabă internalizarea acestor mişcări şi tehnici, astfel încât persoana să le poată adapta diferitor nevoi.

Exersarea

Exersarea ca o metodă de învăţare este ubicuă. Se poate vedea în toate domeniile, nu doar în arte marţiale:

  • Cântatul la un instrument muzical,
  • Îmbunătăţirea performanţei în sport,
  • Pregătirea pentru un discurs în public, ş.a. .

Incontestabil este o metodă fundamentală de învăţare. Desigur, depinde de mai mulţi factori, dar cu dedicarea şi ghidarea corectă, o persoană poate să exceleze la multe lucruri doar prin exersare.

Memoria Procedurală

Memoria procedurală este un tip de memorie de termen lung, mai specific, dovedindu-se eficient în învăţarea bazată pe tehnici. Acest lucru e realizat prin repetarea unui task complex, rezultând astfel într-o îmbunătățire a sistemului neuronal utilizat pentru a realiza acel task. Psihologii au început să scrie despre memoria procedurală de peste un deceniu. După multe cercetări, a fost dovedit faptul că doar simpla repetare a unui task nu asigură achiziţia unei noi abilităţi. Comportamentul trebuie să se schimbe într-un un rezultat al acelei repetiţii. Dacă schimbarea comportamentală se poate observa, atunci se poate spune că s-a dobândit şi abilitatea nouă.

Code Kata

Dave Thomas a fost primul care a introdus ideea de Kata-uri ca tehnică de învăţare în programare. Abordarea este destul de simplă: un Code Kata este o simplă problemă de programare, intenţia fiind să fie uşor rezolvată iar şi iar, tinzând spre perfecţiune. Ideea este să ajute programatorul să rezolve problema oferită într-un mod mai bun de fiecare dată când se încearcă, în timp ce subconştientul învaţă perechi de probleme/soluţii detaliate care pot să vină în ajutor în rezolvarea de alte probleme. Kata-ul se poate face şi prin adaugarea de alte provocări, cum ar fi anumite limitări: de exemplu, folosirea unui limbaj de programare diferit faţă de cel obişnuit zilnic. Se poate realiza fie individual, fie într-un grup organizat.

Munca de la servici nu înseamnă exersare

Serviciul poate aduce prea multă presiune asupra programatorilor neexperimentaţi: presiunea nevoii de a livra cod de calitate folosind tehnici nefamiliare, care poate duce la frustrări, greşeli, sau lipsa aplicării de "best practices". Ajutorul din partea mentorilor nu este o permanență: programatorii experimentaţi sunt ocupaţi cu terminarea task-urilor asignate şi nu găsesc timpul necesar de alocat pentru ajutarea creşterii celorlalţi.

Pentru a deveni un programator mai bun este nevoie de exersare. Cât de bună ar fi o trupă de muzică dacă şi-ar exersa cântecele doar când ar fi pe scenă? Ce fel de calitate ar aduce o piesă de teatru dacă actorii ar primi scenariul doar cu o oră înainte de spectacol?

Cum să nu faci Code Kata

Multă lume e de părere că sesiunile de Code Kata se referă la rezolvarea aceleaşi probleme în acelaşi fel. Acest lucru va avea ca efect probabil învăţarea doar unor scurtături în IDE-ul folosit. Cum menţionam anterior despre memoria procedurală: doar simpla repetare a unui task nu asigură dobândirea unei noi abilităţi. Comportamentul trebuie să se schimbe devenind un rezultat al acelei repetiţii.

Ca şi cum mersul pe jos în fiecare zi nu te face un maestru al mersului pe jos, şi condusul maşinii zilnic nu te face un şofer superior, la fel nici rezolvarea aceluiaşi set de probleme de programare iar şi iar nu te va face un maestru al programării. Repetarea aceluiaşi lucru iar şi iar fără creşterea nivelului de provocare rezultă doar în complacerea minţii cu activitatea respectivă.

Dacă vrei să faci Code Kata-uri, ele trebuie să fie provocatoare. Repetarea nu va ajuta dacă creierul nu este captivat.

Creierul trebuie provocat pentru a stimula şi a crea noi căi neuronale.

Tips & Tricks

Pair-programming: munca în echipă este un factor important în sesiunile de Code Kata. Acesta trebuie să încurajeze ca învăţarea să se producă în timpul implementării pentru că programatorul care nu este la tastatură observă, comentează şi întreabă, furnizând un feedback continuu (dar fără dictare, critică sau control).

Finalizarea unui task nu trebuie forţată. Dacă se pune prea mult accent pe terminarea task-ului, programatorii vor începe să compromită calitatea codului pe care îl scriu. Acest lucru se întâmplă în mediile de producţie în care se aplică prea multă presiune pe viteză în schimbul calităţii. Dacă ţinta sesiunilor de Code Kata este ca programatorii să fie mai rapizi, ei trebuie lăsaţi să exerseze fără sentimentul de presiune al completării task-ului într-un anumit timp setat. În timp se va observa că tehnicile de programare devin din ce în ce mai naturale şi rezultatul final va consta în programare mai rapidă şi calitatea codului mai ridicată.

Asigurarea faptului că la sfârşitul sesiunii codul se şterge. Se porneşte cu ideea că există întotdeauna mai multe metode în rezolvarea unei probleme şi acest lucru e adevărat mai cu seamă în programare. Dacă vei ruga zece programatori să rezolve o anumită problemă, de cele mai multe ori vei obţine zece implementări diferite. Dar care e cea mai bună soluţie dintre ele? Probabil nici una, cea mai bună soluţie fiind adeseori o combinaţie dintre câteva sau toate implementările sau poate chiar o soluţie cu totul diferită. Scopul ar fi ca programatorii să înţeleagă că există mai mult decât o modalitate de a face un anumit lucru şi ştergerea codului existent şi începerea task-ului din nou este câteodată cea mai bună opţiune.

Ajutarea perechilor de programatori să contribuie în mod egal. Perechile de programatori care participă la sesiunea de Code Kata trebuie observate şi ajutate să se trateze între ei ca membri egali. Este de obicei dificil când există o pereche ce conţine un senior şi un junior, dar e important ca acele contribuţii rezultate să fie egale. Această sesiune nu este una de mentoring.

Stricteţea legată de timp. Din când în când, tendinţa este să se mai lase puţin timp pentru dezvoltare. Aceasta este din cauză că se pune prea mult accent pe terminarea task-ului, ceea ce nu trebuie să constituie o prioritate. Programatorii trebuie să fie reasiguraţi de faptul că nu este vorba de finalizarea task-urilor; odată ce acest lucru este înţeles, ei nu vor mai cere timp în plus.

Menţinerea sesiunii distractivă, dar intensă. Niciodată nu strică puţină muzică de fundal (dar să nu distragă atenţia), iniţierea de discuţii, recompense, orice este nevoie pentru a scoate programatorii din monotonie. E importantă concentrarea asupra eliminării anxietăţilor şi reasigurarea faptului că greşelile şi eşecul reprezintă un lucru bun.

Încurajarea comunicării. Camera în care se susţine sesiunea de Code Kata trebuie să fie tot timpul zgomotoasă, plină de discuţii, schimb de idei, dar toată această activitate timpul trebuie orientată spre task-ul de rezolvat. Dacă în cameră e linişte şi programatorii sunt decuplaţi de la proces, atunci ceva nu merge bine.

Găsirea de Code Kata-uri provocatoare, dar nu inaccesibile: A nu se face greşeala de a se selecta un task prea complex pentru sesiune fiindcă atunci entuziasmul va cădea şi programatorii se vor decupla de la întregul proces.

Concluzie

Ideea de pornire atunci când doreşti să iniţiezi sau să participi la o astfel de sesiune de Code Kata este faptul că scopul unei Kata nu este acela de a ajunge la un răspuns corect. Tot ce contează sunt cunoştiinţele acumulate pe parcurs. Scopul este exersarea, nu soluţia.

Referinţe

"Code Katas", Bart Bakker, 2014

"Code Kata", Joao M. D. Moura, 2014

"Using Code Kata practice sessions to become a better developer", Kirsten, UVd, 2013

"Performing Code Katas", Micah Martin, Kelly Steensma, 2013

"Why I Don"t Do Code Katas" John Sonmez, 2013

"Code Katas: Practicing Your Craft", 2011

"Code Kata - Improve your skills thrugh deliberate practice", 2013

LANSAREA NUMĂRULUI 144

Modern Agile

joi, 20 iunie, ora 18:00

sediul msg systems Romania

Facebook Meetup StreamEvent YouTube

NUMĂRUL 143 - Software Craftsmanship

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Colors in projects