Kata, czyli trening programistów

Słowem wstępu, kata to określenie treningu, które wzięło się z dziedziny sportów walki. Każdy wojownik na drodze do mistrzostwa jest zobowiązany ćwiczyć regularnie i wylewać hektolitry potu. Jak to zwykle bywa, ktoś przełożył to określenie na kolejne dziedziny, w tym na programowanie. Przenosimy się więc w inne realia i każdy dobry programista, na drodze do poziomu mistrza powinien ćwiczyć swoją technikę i chociaż od czasu do czasu, najzwyczajniej w świecie ćwiczyć. Zamiast potu możesz wylewać hektolitry kawy lub po prostu kruszyć na klawiaturę przekąskami.

Dlaczego trzeba ćwiczyć? To nie dotyczy każdego, ale czasem na ten przykład przestajemy rozwijać się w obecnej pracy. Opanowaliśmy już temat, jesteśmy lokalnym lead developerem więc możemy świecić sławą, niewiele robić i podrzucać robotę juniorom. Osiągając ekspertyzę na danym polu czujemy się wystarczająco pewnie, robimy swoje i nie zawsze jest okazja, by iść dalej. Czasem to jest właśnie cel, nie wysilać się już więcej. Jeżeli zależy Ci jednak na ciągłym rozwoju i utrzymaniu formy, musisz regularnie ćwiczyć. Tak samo jest z siłownią czy

każdym innym sportem.

W sieci jest mnóstwo materiałów pomocnych przy tego typu ćwiczeniach, włączając w to konkretne scenariusze, które konkretnie i barwnie przedstawią nam cel jaki należy osiągnąć. Zwykle nie jest to rocket science. Jest to raczej powrót do korzeni, użycie konkretnego algorytmu albo pokonanie znanego problemu logicznego czy matematycznego. Zalecaną metodyką jest tutaj TDD, czyli najpierw napisać testy pasujące do rozwiązania, a następnie stworzyć kod, który owe testy „przejdzie”.

Niejeden jeszcze zaskoczy się, gdy po latach sprawnego tworzenia dużych aplikacji biznesowych, zająknie się na implementacji sortowania albo przeszukiwania grafu. Tak jest mój drogi czytelniku. Jeżeli nigdy tak nie miałeś, to prawdopodobnie jesteś robotem i to nie kuchennym! Jeżeli w tym momencie przypominasz sobie taką „niezręczną” sytuację, przybij piątkę w komentarzu! Nie będę jednak wstawiał tutaj przykładów takich ćwiczeń bo jest ich w Internecie już wystarczająco. Przyznam się natomiast, że zdarza mi się je wykonywać a nawet wymyślać je sobie od czasu do czasu. Dlatego mam zamiar się nimi dzielić i komentować rozwiązania i błędy, na których sam siebie złapałem. Być może zachęci to kogoś do spróbowania i ulepszania swoich umiejętności.