#Niezbędnik Juniora: Code Kata

By 2 września 2016Niezbędnik Juniora

Z naszego bloga mogliście już poznać kilka skutecznych sposobów nauki programowania. Było już o metodzie gumowej kaczuszki, debugowaniu i rozwiązywaniu problemów, czy czytaniu kodu na głos. Zebraliśmy też dobre praktyki dla Juniora. Dzisiaj kolejny sposób na dojście do programistycznego mistrzostwa, czyli Code Kata.

Czym jest code kata?

Za Wikipedią: code kata jest ćwiczeniem, które pomaga programistom doskonalić swoje umiejętności poprzez powtarzanie. Termin ten został użyty po raz pierwszy przez Dave Thomasa (które możecie znac z książki The Pragmatic Programmer) i jest nawiązaniem do terminu kata wywodzącego się z japońskich sztuk walki. Kata to ćwiczenie w karate, które powtarzasz wiele razy, za każdym razem robiąc małe poprawki, by w końcu dojść do mistrzostwa w ruchu. Więcej o samym powstaniu koncepcji możecie przeczytać tutaj, my zaś przejdziemy do praktyki.

Założeniem tego stylu nauki jest ciągłe doskonalenie się. Tak jak sportowcy czy muzycy, muszą wiele razy powtarzać te same sekwencje by osiągnąć w nich mistrzostwo, tak i my, programiści możemy w ten sposób się rozwijać. Autor koncepcji podkreśla, że by być dobrym profesjonalistą musisz mieć czas na ćwiczenia i naukę (i czas ten powinien być oddzielony od Twojej pracy). Możesz rozwiązywać ten sam problem, zaczynając za każdym razem od początku i nie wzorując się na swoim poprzednim rozwiązaniu. Code kata może być więc świetną okazją do uczenia się na błędach, a w samych ćwiczeniach nie chodzi o rozwiązanie, a bardziej o drogę jaka do niego prowadzi.

Code kata w praktyce

Oczywiście Twój trening może wyglądać różnie, idąc jednak za autorem koncepji powinnaś znaleźć czas by codziennie rozwiązywać małe zadania z programowania. 30 min czy godzina powinna wystarczyć, ale pamiętaj by zapewnić sobie odpowiednie warunki do nauki – niech to będzie czas dla Ciebie i dla Twojego kodu. Możesz wziąć zadanie, które skupia się głównie na kodowaniu, możesz wybrać takie, które wymaga więcej abstrakcyjnego myślenia. Oryginalne katy znadziesz tutaj, a my od siebie możemy dorzucić wpis z zadaniami z programowania. Zaletą tych ćwiczeń jest to, że są oderwane od twojej pracy  – możesz więc poeksperymentować i sprawdzić rzeczy, które Cię zastanawiają, albo wręcz przeciwnie, nie skupiać się na teorii i po prostu programować, sprawdzając potem, co można byłoby zrobić lepiej. Eksperymentuj. Praktykuj. Baw się ;)

Code kata 2.0

Przeglądając materiały w internecie odnośnie takiego podejścia do ćwiczeń, znalazłam również artykuł, który podpowiada szersze spojrzenie na code kata. Jego autor, cytując wpisy innych programistów odnośnie samodoskonalenia się sugeruje, że nasze ćwiczenia mogą być znacznie bardziej abstrakcyjne i skerowane na ludzi, a nie na kod :)

Poniżej lista pomysłów, które najbardziej mi się spodobały, uzupełniona o nasze propozycje:

  • Stwórz listę programistów, których podziwiasz. Pomyśl o swoich współpracownikach, osobach z bliskiego otoczenia. Zastanów się czego mógłbyś się od nich nauczyć.
  • Przez 20 min czytaj czyjś kod. Zarówno czytanie bardzo dobrego kodu, jak i tego okropnego może być bardzo rozwijające. Jeśli masz problem ze znalezieniem przykładu, poproś o pomoc bardziej doświadczonego programistę. Możesz również podesłać te przykłady innemu programiście i potem wspólnie z nim o nich podyskutować.
  • Wybierz kogoś, kto jest mistrzem w swojej dziedzinie, ale nie jest to programowanie. Pomyśl o tym jak doszedł do tego poziomu i czego możesz się od niego nauczyć.
  • Zaangażuj się w rekrutacje w swojej firmie. Spróbuj wysłuchiwać np. telefonicznego etapu rekrutacji, a następnie samodzielnie ocenić kandydata. Możesz również poprosić, by na tobie rkeruter przetestował przygotowane pytania.
  • Wyszukuj zadania programistyczne i zaangażuj swój zespół we wspólne rozwiązywanie. Po 10-15 min poświęćcie tyle samo czasu na dyskusję o problemie, nawet jeśli jeszcze nie skończyliście rozwiązywać.
  • Spróbuj nauczyć się nowego języka programowania, który jest inny niż Twój dotychczasowy (np. programując obiektowo, zdecyduj się na język funkcyjny, tworząc backend spróbuj frontu itp).
  • Dziel się wiedzą – wrzuciaj swój kod na githuba (praca, jaką będziesz musiała wykonać przygotowywując go do pokazania światu jest naprawdę rozwijająca), prowadź bloga (nawet, gdy jesteś początkująca – możesz opisywać swoją naukę wg danego źródła), wstępuj na spotkaniach lokalnych społeczności (i na konferencjach), przygotowuj prezentacje dla swojego zespołu.
  • Zaangażuj się w projekt Open Source.
  • Zaglądaj do swoich starych projektów – sprawdź, co teraz zrobiłbyś inaczej, ale też weryfikuj, czy rozwijasz się w porządanym kierunku.
  • powtarzaj podstawy – co jakiś czas wróc do algorytmów, albo teorii bliższej programowaniu niskopoziomowemu. Staraj się zrozumieć jak działa twoja ulubiona biblioteka i framework, nawet jeśli na co dzień, wystarczy Ci, że jest to automagiczne.
  • Nie bój się code review czy pair programmingu – pomagaj swojemu zespołowi zawsze, kiedy tylko jest to potrzebne.
  • Spróbuj wytłumaczyć podstawowe koncepty programowania osobie, która zupełnie się tym nie zajmuje. Opowiedz o swoim projekcie swojej babci, albo młodszemu bratu w sposób żeby mogli go zrozumieć.

Tyle od nas, a jak wygląda Twoje code kata? 

  •  
  •  
  •  
  •  
  •  
  • Hej :) Widzę, że zebraliście mnóstwo przydatnych porad. Ze swojego doświadczenia polecam:
    – uczenie się nowego języka, paradygmatu – bardzo „otwiera oczy” na nowe koncepcje, które mogą się przydać w codziennej pracy,
    – powtarzanie podstaw – czasami nie jesteśmy świadomi, że po pewnym czasie coś nam umyka i wykonujemy pewne czynności/piszemy kod nawykowo, nie pamiętając dlaczego robimy to w ten sposób,
    – 30 minut dziennie kodowania poza pracą + wrzucanie tego na github’a – świetny pomysł, tworzymy sobie portfolio, które przyda się gdy będziemy szukać pracy, dodatkowo uczymy się dzielenia pracy na małe kawałki, które można skończyć w 30 minut :)