26 lipca 2018

Mentoring

Jak uczyć się programowania?

Jaka jest najlepsza metoda nauki programowania? Według mnie samo programowanie. Nie nauczysz się programowania bez wykonywania tej czynności. Szczególnie gdy spojrzymy na takie teorie, jak 10 tysięcy godzin Malcolma Gladwella. Po prostu – praktyka czyni mistrza.

W tej teorii tkwi jeden problem: 10 tysięcy identycznych godzin w przypadku programowania się nie sprawdzi. Wiele razy widziałem programistów, którzy mieli wieloletnie doświadczenie, ale przez te lata ciągle robili to samo, w ten sam sposób. Przez to niestety nie zostali dobrymi programistami, mimo wielu godzin spędzonych na programowaniu.

Dlatego czasami warto po godzinach rozwijać jakiś projekt, na którym można się uczyć, gdy nie ma się takiej możliwości w codziennej pracy.

Jaki projekt tworzyć?

Odpowiadam na to zawsze tak samo: wybierz sobie to, co Ci się przyda. Będziesz miał większą motywację, aby rozwijać taki projekt.

Drugą ważna cechą jest to, aby za bardzo nie skupiać się na funkcjonalności. Kilka widoków na ogół wystarczy. Pamiętaj, że ważniejsze jest to, co jest w środku. Tak jak pisałem wcześniej – to, że stworzysz 100 widoków identycznych od strony technicznej spowoduje tylko, że będziesz miał w tym wprawę. Dlatego lepiej mieć mało funkcjonalności i dopieszczać je od strony technicznej.

Nie używasz kontenerów Dependency Injection? To je dodaj. Nie masz testów jednostkowych? To je dodaj. Nie masz innych automatycznych testów? To je również dodaj. Wzorce projektowe? Również je dodaj. Po prostu zmieniaj aplikację, aby jej kod był coraz lepszy. Dodawaj kolejne biblioteki, które znajdziesz w nugecie lub innych miejscach.

I pamiętaj – im mniej będziesz miał funkcjonalności, tym łatwiej będzie przepisywać aplikację. A zrobisz to wielokrotnie podczas nauki.

Ale co dodawać i w jakiej kolejności?

Tutaj dochodzimy do sedna problemu. Możemy próbować zrobić to sami metodą prób i błędów (na ogół niestety głównie błędów) lub skorzystać z pomocy kogoś bardziej doświadczonego – tak zwanego mentora.

Często w projekcie mamy kogoś, kto narzuca właśnie takie rozwiązania, dzięki którym przy okazji się uczymy. Innym razem w firmie mamy jakiegoś „technical lead”, który dba między innymi o to, aby programiści się rozwijali.

Od lat pomagam programistom w ten sposób – czy to wsparciem po szkoleniu, czy w biurze innym koleżankom oraz kolegom. Myślę, że jest to jedna z lepszych form nauki, która dość szybko daje fajne efekty. Ale musisz pamiętać, że taki mentor może Ci tylko pomóc. Ty sam musisz wszystko ciężko przepracować.

A co, gdy nie ma wokół mnie takiego mentora?

Można zadać pytanie na forum lub w grupie na Facebooku. Jest tam wielu doświadczonych programistów, którzy z chęcią pomogą. Ale niestety z czasem może się okazać, że na kolejne pytania będą odpowiadały różne osoby i odpowiedzi będą się w pewnym sensie wykluczać.

Dlatego właśnie warto znaleźć jedną osobę i ją poprosić o pomoc. Osobę, która będzie mogła pracować z nami w sposób systematyczny i długofalowy. Myślę, że warto tutaj nawet za taką pomoc zapłacić, aby była ona bardziej zorganizowana i systematyczna, szczególnie gdy potrzebujemy jej więcej.

Najlepiej przejrzeć takie fora oraz grupy i tam wyłapać osoby, które się udzielają oraz dodatkowo mają dużo wiedzy. Następnie po prostu napiszmy do niej wiadomość, że szukamy takiego mentora i że moglibyśmy za taką pomoc się odwdzięczyć.

Usługi mentorskie

Po rozmowach z różnymi osobami postanowiłem, że zacznę oferować takie usługi szerzej, nie tylko dla tych, którzy byli na moich szkoleniach. Jeśli interesuje Cię taka pomoc, to napisz do mnie maila na daniel at plawgo.pl. Pierwszą godzinę takiego wsparcia oferuję za darmo. 🙂

W moim przypadku takie wsparcie wygląda różnie. Niektórzy tylko potrzebują pomocy w odpowiedzi na trudniejsze pytania. Inni potrzebują sugestii w rozwoju kodu aplikacji – co dodać, co usunąć. A jeszcze inni potrzebują większego zaangażowania – i tutaj robię między innymi code review, gdzie omawiamy kod czasami nawet linijka po linijce.

Dowiedz się, w jaki sposób mogę Ci pomóc.