Jak mądrze rozwijać swoje umiejętności programistyczne?

Kariera programisty to nieustanny rozwój

Mam nadzieję, że jest to oczywiste dla każdego czytelnika tego bloga. Kto się nie rozwija tak naprawdę się cofa. Dlatego też warto już od samego początku wiedzieć jak rozwijać się mądrze tak, aby wypracować sobie dobre nawyki i praktyki oraz uniknąć błądzenia w poszukiwaniu odpowiedzi na nurtujące nas pytania. Artykuł ten jest skierowany głównie dla początkujących programistów oraz dla tych, którzy dopiero chcą rozpocząć swoją przygodę z programowaniem. Nie znaczy to, że doświadczeni programiści nie mają tu czego szukać – wręcz przeciwnie! Chciałbym, aby to co piszę zostało zweryfikowane przez kogoś bardziej doświadczonego – za uwagi i komentarze będę bardzo wdzięczny 🙂

Rozwój - uczniowie przed komputerami

Nie ma głupich pytań

Przy tym punkcie należy pamiętać, że każdy z nas od czegoś zaczynał. Sporo początkujących pyta o oczywiste oczywistości, jednak warto mieć na uwadze, że dla kogoś początkującego “wyśrodkowania obrazka w CSS” może stanowić niemałe wyzwanie. Doświadczony programisto – pamiętaj o tym, zaś początkujący programisto – nie bój się pytać jeśli czegoś nie wiesz bardziej doświadczonych kolegów, ale…

Najpierw szukaj, potem pytaj

W Internecie jest cała masa odpowiedzi, a jeszcze więcej pytań. Jeśli masz jakiś problem, to pierwszym krokiem powinna być wyszukiwarka. Sprawdź, czy ktoś przed tobą nie zmagał się z takim kłopotem jak ty. W sporej części przypadków okaże się, że ktoś przed tobą miał już podobny problem, który został już rozwiązany.

Co więcej, w obecnych czasach umiejętność dobrego “googlowania” problemów jest niesamowicie ważna i pozwoli nam oszczędzić całą masę czasu.

Nie korzystając z wyszukiwarek nie tylko zaśmiecasz fora i grupy problemem, który został już rozwiązany, ale też rozleniwiasz się – liczysz, że ktoś znajdzie odpowiedź za Ciebie. Natomiast jeśli nie znajdziesz odpowiedzi na nurtujące Cię pytanie to…

Pytaj i odpowiadaj publicznie

Częstym zjawiskiem, z którym spotykam się na programistycznych grupach na Facebooku jest zadawanie pytania i oczekiwanie na rozwiązanie w prywatnej wiadomości, lub też odpowiadanie na zadane pytanie prywatnie. Nie powinniśmy praktykować czegoś takiego, chociażby ze względu na to, że nasze pytanie lub odpowiedź za jakiś czas może się przysłużyć komuś innemu. Ukrywając odpowiedzi na nasze pytania nakręcamy tylko spiralę pytań o rozwiązane wcześniej problemy.

Korzystaj z dokumentacji

Na sporą część naszych pytań odpowiedzi znajdziemy w oficjalnych
(i nieoficjalnych) dokumentacjach. Pamiętajmy o tym przed zadaniem pytania. Twórcy technologii zdają sobie sprawę, z tego że będą liczne pytania dotyczące ich produktu, dlatego też odpowiedzi na wiele z nich zamieszczają właśnie w dokumentacji. Co więcej, jest sporo dokumentacji napisanych naprawdę dobrze – moim ulubionym przykładem takiej dokumentacji jest dokumentacja VueJS, która moim subiektywnym zdaniem jest produktem kompletnym.

Skoro mały przegląd programistycznego savoir vivre’u mamy za sobą przejdę do innych możliwości rozwoju.

Rozwój - grupy tematyczne

Dołączaj do społeczności

Praktycznie każdy popularniejszy język czy framework ma społeczność skupioną wokół niego. Możesz dołączać do programistycznych Slacków – jednym z większych w Polsce jest Devs PL. Tam również znajdziesz całą masę specjalistów i pasjonatów, którzy pomogą ci znaleźć odpowiedzi na twoje pytania.

Inną możliwością są grupy Facebookowe. Natomiast poziom tych grup mocno zależy już od samych użytkowników. Nietrudno znaleźć grupę gdzie 90% pytań będzie wyglądało tak: “How to hack Facebook?” lub “Uncaught SyntaxError: Unexpected token )” bez załączonego kodu.

Nikt oczywiście nie zmusi Cię do aktywnego udzielania się tam, lecz nawet samo czytanie dyskusji innych programistów pozwoli Ci nauczyć się czegoś nowego.

Przeglądaj repozytoria na GitHub’ie

Kiedy tworzyłem swój pierwszy sklep internetowy przeglądanie innych projektów na GitHub’ie okazało się niezmiernie pomocne. W praktyce oszczędziło mi to wiele godzin pracy.  Podglądając kod innych programistów jesteśmy w stanie dostrzec różne podejścia i rozwiązania.

Należy jednak pamiętać, że każdy kij ma dwa końce. Możesz natrafić na kod z błędami i złymi praktykami – warto mieć to na uwadze.

Co więcej, jeśli znajdziesz błąd w cudzym kodzie możesz zrobić pull request i poprawić czyjś kod. Uczenie innych to jeden z najefektywniejszych sposobów na lepszy rozwój oraz utrwalanie wiedzy i umiejętności, dlatego też…

Prowadź bloga lub udzielaj się w inny sposób

Jeśli zmagałeś się z jakimś problemem i udało ci się go rozwiązać to podziel się tym rozwiązaniem z innymi programistami. Możesz założyć własnego bloga, gdzie będziesz dzielił się swoimi doświadczeniami. Dobrze prowadzony blog nie tylko pozytywnie wpłynie na twój rozwój, ale też przyciągnie sporą ilość czytelników.

Inną możliwością jest udzielanie się na wcześniej wspomnianych grupach na Facebooku.

Polecam także przeglądanie Stack Overflow i odpowiadanie na zadawane tam pytania. Nie tylko pomożemy komuś, ale też społeczność zweryfikuje przedstawiane przez nas rozwiązania.

Rozwój - blogerka

Wykorzystuj wiedzę w praktyce

Jest to niezmiernie ważne. Samo czytanie i pochłanianie wiedzy nic nie znaczy jeśli nie zaczniemy jej wykorzystywać w praktyce. Wiedza bez utrwalenia jej poprzez pisanie projektów uleci nam z z głowy bardzo szybko, co więcej taki praktyczny projekt pomoże nam ją zweryfikować. Według Taksonomii Nauczania Blooma wykorzystanie wiedzy w praktyce jest zdecydowanie bardziej efektywne niż jej posiadanie czy nawet rozumienie. Więcej o tym zagadnieniu znajdziesz w źródłach na końcu wpisu.

Ucz się wzorców i dobrych praktyk

Rozumienie dobrych praktyk i wzorców jest zdecydowanie ważniejsze niż “wykucie na blachę” 90% funkcji danego języka wraz z parametrami jakie przyjmują.

Dobre wzorce i praktyki praktycznie się nie dewaluują, zaś większość obecnych języków programowania rozwija się tak szybko i dynamicznie, że uczenie się języka na pamięć nie ma większego sensu (najprostszym przykładem takiego języka jest chociażby JavaScript, który regularnie dostaje nowe funkcjonalności, zaś liczba rozszerzeń i bibliotek do niego jest ogromna). Zamiast uczyć się kolejnej biblioteki lepiej poznać ogólne kierujące tym językiem, a także dobre praktyki programistyczne wykorzystywane w każdym języku programowania. Znajdzie to zastosowanie w sytuacji, gdy będziemy chcieli zmienić nasz język na inny. Ponadto kod kodowany zgodnie z wzorcami i dobrymi praktykami jest czytelny oraz intuicyjny przez co jeśli przejmie go inny developer to bardzo szybko się w nim odnajdzie.

Z tego powodu też gdy zaczniesz zagłębiać się w literaturę związaną z programowanie dobieraj uważnie książki jakie czytasz. Zdecydowanie lepiej na twój rozwój jako programista wpłyną książki takie jak “Czysty Kod” Roberta C. Martina niż “Laravel 5.7 – poradnik”(nazwa zmyślona), który po wyjściu wersji 6.0 będzie już w sporej części nieaktualny. Listę uniwersalnych i wartościowych książek znajdziesz w źródłach na końcu wpisu.

Rozwój - czytanie

Zacznij od małego projektu

Podstawowym błędem początkujących, który również ja popełniłem jest porywanie się z motyką na słońce. Pisząc swój pierwszy projekt zacznij od czegoś małego.

Chcąc tworzyć kolejnego Facebooka nie musisz od razu implementować wszystkich jego funkcjonalności. Zacznij od rejestracji logowania i dodawania wpisów. Następnie gdy już to masz to planuj dalszy rozwój aplikacji i jej funkcjonalności.

W momencie gdy zaczynałem uczyć się Reacta, to chciałem zbudować w nim swoją pierwszą aplikację. Miała ona mieć wiele funkcjonalności i być bardzo rozbudowana. Ostatecznie pochłonęła ona kilkadziesiąt godzin mojej pracy, połowy z funkcjonalności nawet nie stworzyłem, druga połowa nie zadowalała mnie całkowicie, zaś jakość kodu pozostawiała wiele do życzenia.

Na sam początek warto nawet stworzyć tak popularną i często obśmiewaną To Do Listę.

Rozwój - todo lista

Poproś o code review

Dobrym pomysłem jest poproszenie kogoś bardziej doświadczonego o code review. Doświadczeni programiści zwrócą Ci uwagę na aspekty Twojego kodu, z których nawet nie zdawałeś sobie sprawy.

Code review występuje w wielu firmach jako powszechna praktyka, także warto się z tym oswoić jeszcze przed podjęciem pracy 🙂

Specjalizuj się w jednej dziedzinie

Jak coś jest do wszystkiego do jest do niczego – to stwierdzenie jest jak najbardziej prawdziwe. Zdecydowanie lepiej znać jedno lub kilka zagadnień od podszewki niż znać 30 języków programowania, ale tak naprawdę żadnego z nich porządnie. Zdecydowanie polecam dążenie do specjalizacji niż do wszechstronności.

Bierz udział w wydarzeniach

Na wydarzeniach nie tylko uczysz się nowych rzeczy ale też poznajesz ludzi z branży. Biorąc udział w warsztatach, wykładach czy prelekcjach zyskujesz naprawdę wiele: od inspiracji przez wiedzę i umiejętności na mentorach kończąc. Z tego miejsca chciałbym zachęcić Cię do udziału w FRONTEND CON 2018. Wydarzenie odbywać się będzie 4-5 grudnia w Pałacu Kultury i Nauki w Warszawie.

Podsumowanie

Mam nadzieję, że artykuł okazał się dla Ciebie przydatny i że wykorzystasz moje rady. Dla wielu osób czytających ten wpis będzie to wiedza oczywista, jednak chcę przypomnieć początek tego wpisu – każdy z nas kiedyś zaczynał. Jak zwykle zachęcam do dyskusji i pozostawienia komentarza.

Źródła i materiał dodatkowe:

https://pl.wikipedia.org/wiki/Taksonomia_Blooma
https://www.whoishostingthis.com/resources/programming-books/
https://youtu.be/SLWpMGs1E9E