Learning through repetition – nauka przez powtarzanie to bodaj najprostsza i najstarsza metoda efektywnej nauki. Sprawdza się wszędzie tam, gdzie trzeba przyswoić ogromną ilość wiedzy teoretycznej i jej użycie w praktyce. A że programowanie wymaga w pierwszych etapach kariery zabsorbowanie potężnej dawki teorii i wyrobienia w sobie odpowiednich nawyków – to w tym miejscu z pomocą przychodzi … KATA! Kata to sformalizowane, zdyscyplinowane, regularne i określone czasowo ćwiczenie. Jak to wygląda w praktyce?

Bubble Sort w 30 minut

Ideą ćwiczeń Kata jest przede wszystkim regularność i powtarzalność. W moim przypadku jeszcze przed startem codziennej pracy odpalam IDE i ze stoperem w ręku przez 30 minut rozwiązuje określone ćwiczenie. Jak na przykład rozpisanie sortowania bąbelkowego wraz z podstawowymi testami jednostkowymi. Jeżeli mam w zadatku kilka minut, to rozwiązanie commituję do gita lub bitbucket’a – z różnego poziomu i z zastosowaniem różnych endpointów (terminal, IDE, klient). Ważne, by regularne powtarzanie nie stało się mechaniczne – dlatego w trakcie ćwiczeń rozważam różne podejścia do rozwiązania problemu (a tych można mnożyć w nieskończoność, nawet w przypadku tak prostego ćwiczenia jak bubble sort).

Kata oswaja z materiałem i dodaje pewności

Praktykujący, nawet od dłuższego czasu, junior zawsze cierpi na dolegliwość „nie wiem wystarczająco wiele”. To normalne – programowanie to kolosalna ilość wiedzy do wchłonięcia, która może przytłaczać. Dlatego regularna praktyka w postaci szybkich ćwiczeń pozwala pozostać w formie i ugruntowywać wiedzę.

„W trakcie nauki nowego języka (np. chińskiego) nowe słownictwo czy zasady gramatyczne zostają utrwalone w pamięci dopiero po trzecim lub czwartym powtórzeniu.”

Podobnie jest z programowaniem. Ja sam mam problem z przypomnieniem sobie materiału, który realizowaliśmy na kursie jeszcze dwa miesiące temu. Bez zajrzenia do kodu, który wtedy pisałem i notatek, ciężko jest siąść i spisać z głowy określony temat. Dlatego regularne powtarzanie jest tak cholernie ważne.

Przykładowe ćwiczenia i linki do źródeł

Środowisko programistów bardzo szybko zaadoptowało ćwiczenia Kata – korzystają z niego nie tylko juniorzy na przyuczeniu, ale też doświadczeni i wyspecjalizowani programiści. Oto przykładowy zestaw ćwiczeń:

– rozpisz quick sorta wraz z unit testami
– rozpisz Fizz Buzz wraz z unit testami
– podaj przynajmniej trzy sposoby na wylistowanie liczb pierwszych w określonym zakresie liczb
– wypisz wszystkie prymitywne typy danych i wykonaj na nich dowolne obliczenia. Określ i zaprezentuj w jaki sposób zabezpieczyć się przed utratą precyzji
– korzystając z klasy Random wypełnij dowolnymi wartościami podstawowe struktury danych (dziedziczące z klasy Collection)
– korzystając z Javy 8 wykonaj na Liście obiektów operacje sortowania, filtrowania i mapowania
– zaprezentuj trzy klasy do operowania na datach. Wykonaj po 3 generyczne metody na każdej z nich. Jak wypadają te klasy w porównaniu do siebie?
– zaprezentuje bazową logikę do gry w papier, nożyce, kamień między Tobą a komputerem

Gdzie jeszcze szukać pomysłów do Kata
?
CodeKata.com
Programming by doing
Rosetta Code
Code Wars

Kilka ważnych uwag:
– Kata to regularność. Jeżeli porzucisz praktykę po kilku dniach, po czym wrócisz do niej po miesiącu – to nie ma sensu. Wbij sobie to w kalendarz, wrzuć przypomnienie w komórce
– Zapisuj każdy dzień – jakie zrobiłeś ćwiczenie, ile Ci to zajęło, jak wygląda rozwiązanie. Dzięki temu po określonym czasie będziesz mógł zerknąć w tył i zweryfikować progres
– Jeżeli masz taką możliwość, to spróbuj uzyskać feedback do Twoich rozwiązań od kogoś bardziej doświadczonego

Powodzenia!