Ostatnimi czasy nie ma tygodnia, żeby w okolicy nie była organizowana jakaś konferencja, meetup czy warsztat. W samych Katowicach na meetup.com można znaleźć 43 grupy, które regularnie organizują tego typu wydarzenia. Oznacza to, że osoby chcące poszerzyć swoją wiedzę, czy nabyć nowe umiejętności, nie mają na co narzekać. Należy jednak zwrócić uwagę na pewną prawidłowość: większość z tych wydarzeń to cykle wykładów lub prelekcji skupionych wokół jakiejś tematyki. Niewiele jest wydarzeń, na których rzeczywiście się programuje, a przecież powszechnie wiadomo, że jednym z najlepszych sposobów nauki i rozwoju jest właśnie praktyka.


Dawid Mazur. Podczas swojej kariery pracował jako programista, team leader oraz project manager. Obecnie pracuje jako backendowiec dla Clearcode. Prywatnie aktywny członek lokalnej społeczności IT i nie tylko. Słuchacz, prelegent oraz organizator eventów. Współorganizator Coding Dojo Silesia. Uczy dzieci programowania w Little Bit Academy. Ewangelista dobrych praktyk, czystego kodu oraz wzorców projektowych. Nałogowy słuchacz podcastów, bywalec hackathonów. Jest również autorem bloga pattern-fever.com. Dziwnie czuje się pisząc o sobie w osobie trzeciej.


Deliberate practice

Jednak praktyka praktyce nierówna. Jako programiści praktykujemy cały czas, w pracy czy robiąc jakieś bonusowe projekty. Czy to oznacza, że codziennie mocno rozwijamy nasze umiejętności? Niekoniecznie.

Z tego powodu warto od czasu do czasu oddać się świadomej, ukierunkowanej praktyce swojego rzemiosła. Można to porównać do gitarzysty, który spędza czas pracując nad techniką czy akordami, zamiast ćwiczenia piosenek. Tego typu ćwiczenia odgrywają sporą rolę, kiedy chcemy przenieść swoje umiejętności na wyższy poziom. I to właśnie deliberate practice stoi u podstaw coding dojo.

Czym jest coding dojo?

Za Wikipedią, dōjō (道場) jest miejscem służącym intensywnemu czy głębokiemu uczeniu się i medytacji. Nie inaczej jest w przypadku coding dojo. Podczas trwania spotkania, zbieramy się w miejscu, w którym oddajemy się świadomej praktyce naszych umiejętności programistycznych. Jak w każdym Dojo, i w tym obowiązują pewne zasady. Nie są to jednak zasady wymagające zdejmowania butów czy ukłonu przed wejściem. Oto niektóre z nich:

1. W Dojo idee i rozwiązania nie istnieją bez kodu. To znaczy, że jeśli mamy pomysły to dyskutujemy na ich temat dopiero po przedstawieniu ich jako działający kod.

2. Kod nie może istnieć bez testów, jest to potwierdzenie tego, że działa i jest to dobra praktyka. Podczas coding dojo zawsze stawiamy jakość nad ilością.

3. Uczymy się od siebie nawzajem. Znajdujemy mentorów, pracujemy w parach. Nie bez powodu zbieramy się wszyscy w jednym miejscu, naszym celem jest współpraca i wspólne poszerzanie naszej wiedzy.

4. Nie ścigamy się. Ważne jest stawianie małych kroków. Nauka wymaga od nas skrupulatności oraz skupienia.

5. Zachęcamy do spróbowania nowego podejścia do problemu, do nauczenia się czegoś od nowa, do rzucenia się czasem na głęboką wodę, w niezbadane przez nas wcześniej rejony.

Przede wszystkim coding dojo powinno być przestrzenią, gdzie uczestnicy mogą pracować nad rozwiązaniem danego problemu w skupieniu i dobrej atmosferze. Ma być to miejsce otwarte i przyjazne dla wszystkich.

Tak jak w dojo sztuk walki, pracujemy nad swoją techniką, aby przygotować się na moment, kiedy będziemy musieli nasze umiejętności wykorzystać. Skupiamy się na pojedynczych ciosach, ruchach czy sekwencjach. Powtarzamy wielokrotnie to samo, aby doszlifować formę i technikę do perfekcji.

Jak to może wyglądać w praktyce? W coding dojo praktyka może przyjąć różne formy. Najczęściej przyjmie ona formę code kata.

Code kata

Również termin kata (形) został zapożyczony z kultury japońskiej. Kata w sztukach walki to pewien ustalony zestaw ruchów, czy choreografia, która jest powtarzana tysiące razy przez adeptów owych dyscyplin. Pozwala ona, tak jak ćwiczenie pojedynczych ciosów, rozwijać swoją technikę poprzez powtarzanie tych samych sekwencji aż do osiągnięcia absolutnej perfekcji.

Code kata będzie to więc proste zadanie programistyczne do rozwiązania w jakimś ograniczonym czasie. Może przyjąć formę implementacji prostych gier jak Game of Life, algorytmów sortowania czy kodowania, zaimplementowanie logiki do maszyny sprzedającej napoje. Czasem zadania będą związane z konkretnym językiem lub frameworkiem. Jest wiele list dostępnych kata np. na GitHubie. Ćwiczenie takie można powtarzać, stosując inne podejścia czy starając się poprawić swoje rozwiązanie. Dobrze jest skupić się na zachowaniu dobrych praktyk jak TDD czy SOLID.

Jak to wygląda w dojo? Kata może być rozwiązywane przez dobrane lub losowe pary programistów, którzy potem porównują swoje rozwiązania. Wśród innych form może być PreparedKata, podczas którego jedna osoba rozwiązuje kata samodzielnie, a inne osoby mogą przerwać w jeśli nie rozumieją co się dzieje na ekranie. Istnieje także forma RandoriKata, podczas której uczestnicy zmieniają się co np. 5 minut przy jednym komputerze.

Coding Dojo Silesia

Przykładem coding dojo jest wydarzenie, które powstało w Katowicach kilka miesięcy temu. Członkowie Coding Dojo Silesia spotykają się raz w miesiącu i rozwiązują wybrane wcześniej przez organizatorów kata. Zadanie rozwiązujemy w parach, przez ok. 2h, a na sam koniec każda para na zmianę podpina się do projektora i ma 5 minut na prezentację swojego rozwiązania. Po tym wszystkim trwa dyskusja na temat rozwiązań.

Wydarzenie to jest otwarte dla ludzi o dowolnym poziomie doświadczenia. Zwykle wcześniej ustalany jest język programowania, w którym będziemy rozwiązywać zadanie, aby zaprosić kilku mentorów, którzy będą do dyspozycji uczestników.

Doświadczenie pokazuje, że nawet najprostsze kata potrafią być rozwiązane w bardzo różny sposób. Prezentacje na koniec często zaskakują i nawet mentorzy uczą się czegoś nowego. Dyskusja po prezentacjach często trwa ponad godzinę i wielu ludzi zostaje dłużej, żeby jeszcze powymieniać się doświadczeniami, albo zwyczajnie porozmawiać. Powstała też społeczność na Slacku wydarzenia, gdzie można zaproponować kata na kolejne spotkania, a także wziąć czynny udział w organizacji jako mentor czy prowadzący daną edycję.

Dlaczego warto?

Idea Coding Dojo Silesia urodziła się jako prywatne dojo wewnątrz firmy, co jest dobrym pomysłem samym w sobie, jako efektywne narzędzie do dzielenia się doświadczeniem w zespole.

Zarówno organizacja, jak i uczestnictwo w coding dojo to czysty fun. Jedyne co trzeba to jakaś kata, trochę miejsca z dostępem do Internetu i można kodzić. Gorąco zachęcam do uczestnictwa i przede wszystkim organizacji tego typu wydarzeń w swojej okolicy czy firmie.

Osobiście czuję, że praca z Coding Dojo Silesia przyniosła mi sporo korzyści i mimo że jest to popularna forma spotkania w świecie programistycznym, to nadal chętnie zobaczyłbym więcej takich wydarzeń w regionie. Naprawdę świetnie jest oglądać różne podejście do rozwiązywania problemów czy przyjść na edycję w języku programowania, w którym jest się kompletnie “zielonym” i spróbować w parze ukodzić coś co ma ręce i nogi, a potem dostać natychmiastowy feedback.

I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times — Bruce Lee
(podesłane mi przez Michała, jednego z założycieli Coding Dojo Silesia)


Zdjęcie główne artykułu pochodzi z pexels.com.

Zapraszamy do dyskusji
Nie ma więcej wpisów

Send this to a friend