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 czynni mistrza.

W tej teorii tkwi jeden problem: 10 tysięcy identycznych godzin w przypadku programowanie się nie sprawdzi. Wiele razy widziałem programistów, który mieli wieloletnie doświadczenie, ale przez te lata ciągle robili to samo, w ten sam sposób. Przez co 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, 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ć ją 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, czym 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 samemu metodą prób i błędów (na ogół niestety głównie błędów) lub skorzystać z kogoś bardziej doświadczonego, tak zwanego mentora.

Często w projekcie mamy kogoś, kto narzuca właśnie takie rozwiązania, przy których 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 programistą w ten sposób, czy to wsparciem po szkoleniu, czy w biurze innym koleżanką oraz kolegą. 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 grupie na facebooku. Jest tam wielu doświadczonych programistów, które 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ą siebie w pewnym sensie wykluczać.

Dlatego warto znaleźć jedną osobę i ją poprosić o pomoc, która będzie wstanie 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 napisz do niej wiadomość, że szukasz takiego mentora i że byłbyś w stanie się odwdzięczyć za taką pomoc.

Usługi mentorskie

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

W moim przypadku takie wsparcie wygląda w różny sposób. 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.