Pereiti prie pagrindinio turinio

Code Katos: puikus metodas lavinti programavimo įgūdžius

Esu Artūras ir šiuo metu dirbu Admincontrol projekte, kuriame su komanda kuriame įrankį leidžiantį kompanijoms saugiai dalintis konfidencialia informacija ir dokumentais.

Tam, kad visuomet kurtume geriausios kokybės produktus Vismoje palaikome nuolatinio tobulėjimo ir investavimo į savo įgūdžius kultūrą. Per 7 mano darbo metus įmonėje, esame išbandę daug įvairių metodų, ir šiame blog’e pasidalinsiu vienu įdomiu ir mūsų komandoje pasiteisinusiu Code Katų metodu, apie kurį sužinojau tik prieš pusantrų metų.

Code Katos blog post'as

Tai ne tik padėjo pagerinti savo asmeninius programavimo įgūdžius, bet ir supratau, kad man, kaip programuotojui, tai padėjo daug pragmatiškiau žiūrėti į įvairias kasdienines užduotis. Taip pat kartu su kolegomis pagerinau savo greito mąstymo ir darbo komandoje įgūdžius.

Kas yra Code Kata?

Nesuklysiu sakydamas, kad daugelis dalykų yra geriausiai išmokstami praktikuojantis: ne tik tada, kai patys sprendžiame įvairias užduotis, bet ir tada, kai mokome ir padedame įvairius principus suprasti kolegoms. Lavinti savo programavimo įgūdžius galime ne tik dirbdami prie projekto, bet ir atlikdami įvairias Code Katas.

Terminas Kata japonų kalboje reiškia “forma” arba “šablonas”, o kovos menuose taip vadinama tam tikra individualių treniruočių sistema, kuri susideda iš lengvai pritaikomų kovos menų judesių.

Ir nors programuojant mums nereikia naudoti kovos menų judesių, bet lengvai galime pritaikyti tam tikrus kodo rašymo šablonus, kuriuose yra praktikuojami įvairūs užduočių sprendimai, principai ir logika. 

Lavinti savo programavimo įgūdžius galime ne tik dirbdami prie projekto, bet ir atlikdami įvairias Code Katas.

Norint šią praktiką sėkmingai pritaikyti savo kasdieniniame darbe, reikės sukurti savo Coding Dojo, įsivaizduojamą, žinoma… Kurioje mokiniai galės praktikuotis spręsti įvairias logines problemas arba kitaip tariant atlikinėti Code Katas

Tam mums reikės ne tik įsivaizduojamos Coding Dojo, bet ir tam tikrų rolių:

Sempai – Mentoriaus programuotojo

Kenshūsei (mokinys) – programuotojo

Kata – programos

Kata kovos judesiai – programos testų

Praktinis Code Katų pritaikymas

Taigi viskas prasideda labai paprastai:

  1. Sempai (mentorius) suranda/sugalvoja užduotį

Pavyzdžiui, užduotis gali būti tokia: reikia sukurti boulingo taškų skaičiuoklę. Prieš pateikdamas užduotį Sempai sukuria tuščią klasę ir jai parašo pirmą paprastą testą, kuris, žinoma, yra nesėkmingas. Tada nustato tikslų laiką, kiek turėtų trukti užduoties sprendimas (treniruotė), pasikviečia mokinį ir paleidžia laikmatį.

Pateikiamo kodo pavyzdys (visą kodą galite rasti čia):

2. Kenshūsei (mokinys) sutvarko testą.

Mokinio užduotis yra kuo greičiau ir paprasčiau sutvarkyti testą. Tam jis turėtų aprašyti klasę, kad testas būtų sėkmingas. Svarbiausia yra daug negalvoti ir susitvarkyti su užduotim, kuo paprasčiau. Pavyzdžiui, šiuo atveju mokinys tiesiog galėtų implementuoti GetScore metodą taip:

3. Sempai sugalvoja kitą TestCase

Kaip ir prieš tai šis TestCase turėtų būti nesėkmingas:

Jeigu šis testas būtų sėkmingas, tuomet galima bandyti paleisti sudėtingesnį TestCase:

O jeigu ir šis testas iš karto  sėkmingas vadinasi mokinys aprašė GetScore metodą per sudėtingai.

O jeigu ir šis testas iš karto  sėkmingas arba Sempai negali sugalvoti naujo TestCase, tai vadinasi mokinys aprašė GetScore metodą per sudėtingai – visos šios praktikos esmė yra viską atlikti greitai ir kuo paprasčiau.

4. Per likusį numatytą laiką kartojami antras ir trečias punktai

Likusį treniruotės laiką reikia išnaudoti rašant naujus testus. Pavyzdžiui, šiuo atveju Sempai turėtų tikrinti įmanomus visų numuštų kėglių variantus, apgalvodamas kraštutinius atvejus, tokius kaip 10-ojo metimo Strike ir Spare kombinacijos.

Taigi galutinis sprendimas galėtų atrodyti taip:

Pasibaigus laikui mokinys ir mentorius turi aptarti užduoties sprendimo procesą, na ir, žinoma, pasijuokti iš nestandartinių ir TestCase’ų. Po to užtvirtinant žinias Kenshūsei gali save išbandyti ir Sempai rolėje su kitu kolega.

Po to užtvirtinant žinias Kenshūsei gali save išbandyti ir Sempai rolėje su kitu kolega.

Galimos kitos Code Kata temos:

  • Giminės medžio sudarymas (Binary Tree);
  • Paskutinio sekmadienio (Last Saturday) skaičiuoklė;
  • Romėniškų skaičių konvertavimas (Roman Numbers Converter) – romėnišką skaičių konvertuoja į metrinę sistemą;
  • Parduotuvės skaitytuvas (Shop Scanner) – krepšelio sumos skaičiuoklė, kai tam tikroms prekėms taikoma nuolaida;
  • Labirinto sprendimas (Maze Path Finder) – matricoje labirinto principu rasti greičiausią kelią;
  • Pokerio laimėjimo tikimybės skaičiuotuvas (Poker Hand Winner Calculator)
  • Slaptas modelis (Secret Pattern) – sugalvok savo modelį (kai įvestis ir išvestis – skaičius)
Ką supratau naudodamasis Code Katomis?

Atliekant Code Katas reikia laikytis tų pačių kovose menuose naudojamų principų ir suprasti, kad su praktika įgūdžiai darosi geresni, o gerėjant įgūdžiams ne tik galima bet ir reikia užsirišti aukštesnio KYU diržą, kuris atitinka mūsų meistriškumą. Todėl pradėję lyg balti diržai nuo fundamentalių loginių užduočių, pamažu turėtume pereiti prie vis sudėtingesnių uždavinių ar net kelias realias darbe pasitaikančias problemas išspręsti Code Kata metodu.

Code Katas galite atlikinėti individualiai arba prisijungdami prie mūsų Admincontrol projekto, kuriame kaip tik dabar ieškome naujų narių galinčių papildyti komandą.

Tai lavina mūsų Test Driven Development’o ir pair programinimo įgūdžius. Code Katas galite atlikinėti individualiai arba prisijungdami prie mūsų Admincontrol projekto, kuriame kaip tik dabar ieškome naujų narių galinčių papildyti komandą.

Populiariausi blog'ai