onsdag 5. desember 2012 Julekalender Kata CodingDojo
Andreas Lien Olsen er en annen .NET-utvikler som jobber hos Miles i Bergen (ref. Thomas fra i går). Det er ikke meningen å reklamere så mye for dem, men så har det seg bare sånn at jeg kjenner en del mennesker der da. Andreas er en ung mann med et sterkt ønske om å bli en dyktig utvikler, og vil i dag fortelle om ett konkret virkemiddel han bruker for å nå det målet.
Hvem er du?
Utflyttet stordabu som liker programmering og godt øl.
Hva er jobben din?
Konsulent i Miles Bergen, jobber for tiden i Frende Forsikring.
Hva kan du?
Best på C#, prøver å bli like flink på JavaScript og web.
Hva liker du best med yrket ditt?
At det er utfordrende, lærerikt og gøy!
Kodekata er eit begrep Dave Thomas innførte i byrjinga av 2007. Dave følgde sonen sin til karatetrening og brukte treningstida til å eksperimentere med ulike søkealgoritmar. I ettertid reflekterte han over dette, og bestemte seg for å skriva om temaet.
Kata er eit japansk ord som beskriv "et detaljert mønster av bevegelser som blir utført enten aleine eller i par", og blir mykje brukt innan ulike former for kampsportar, kor ein kata er eit definert sett med øvingar som repeteras fleire gangar etter kvarandre.
Kodekata er ein øving der ein løyser ei kodeoppgåve for øvinga sin skyld. Oppgåva er lita og ein gjer den gjerne fleire gangar. Når ein gjer oppgåva fleire gangar vil ein optimalisera løysinga, prosessen og verktya ein bruker under utviklinga. Kodekata er derfor ein fin måte å gjera seg kjend med arbeidsmetodar og verkty, i tillegg til å løyse det spesifikke problemet.
Grunnen til at eg vel å skrive om kodekata er at eg synes det er ein fin form for trening for utviklarar. Ei trening som kan føre til at ein blir betre i faget. Me utviklarar jobbar i eit ungt fagmiljø som beveg seg fort, og det er derfor fort gjort å koma bakpå i den teknologiske utviklinga. Ein nyutdanna utviklar har så vidt byrja på reisa, og kan ikkje regne seg som ferdig utlært etter 5 år på skulebenken. Mange arbeidsplasser ligg eit stykke bak i den teknologiske utviklinga eller fokuserer lite på å eksperimentere med nye teknikkar og arbeidsmetodar. Eg meiner derfor at utviklarane sjølv må ta ansvar for eiga læring.
Kodekata er ein gøy måte å utvikle seg sjølv på! Når ein har gjort ein kodekata nokon gangar får ein ei utroleg mestringskjensle, og byrjar å leite etter nye og betre måtar å løyse oppgåva på. I denne prosessen har ein anledning til å eksperimentere med nye teknikkar og verkty, som ein "ikkje har tid til" når ein koder med tidsfristar hengande over seg.
Eg byrja å løyse kodekataer for nokre år sidan då eg ville lære meg testdrevet utvikling (TDD). Roy Osherove har laga ein kodekata der ein skal implementere ein kalkulator ved hjelp av TDD. Denne kodekataen tvingar utviklaren til å utvikle med hjelp av TDD. Sidan då har eg løyst ein god del ulike kodekataer. Felles for dei alle er at det har vore med hjelp av TDD, som eg først fekk inn i blodet ved god hjelp av kalkulator kodekataen.
Kodekata består ofte av oppgåver som egner seg veldig godt til å løyse med hjelp av testdrevet utvikling. Dette er noko eg har nytta fleire gangar for å lære vekk korleis ein jobbar på ein testdrevet måte. Ved hjelp av ein kodekata, TDD og ping-pong (ein form for TDD/parprogrammering) har eg vist fleire korleis ein kan jobbe på ein testdrevet måte. Denne forma for ”opplæring” kan også nyttast når ein ikkje har moglegheit for å sitte saman å arbeide. Vi har då koda lokalt og lasta koden opp på GitHub. Måten vi gjorde det på var med å løysa ein test og legga på ein ny feilande test før vi lasta opp koden. Det kan ta lang tid å fullføra ein kodekata på denne måten sidan det kan ta lang tid før neste opplasting, men om ein er litt tolmodig går det bra.
Kodekata kan også vera ein sosial aktivitet. Kodedojo er ein aktivitet kor fleire utviklarar møtes for å løyse ei oppgåva for læringa si skyld. I fleire store norske byar, til dømes: Oslo og Bergen, arrangerast det kodedojoer der alle som vil får delta. Om du ikkje finn ein kodedojo i nærleiken er det kanskje ein gylden anledning til å starte ein? :-)
Om ein vil komme i gang med kodekataer kan ein henge seg på ein kodedojo eller løyse ein av mange kodekataer på nett. Her er ei liste over mange mulige kodekataer.
Kanskje vi sees på neste kodedojo?