Rozwój w pracy programisty - okładka

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

Opublikowano Kategorie Felietony, Praca w ITCzas czytania 9min

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 przygotowałem zostało zweryfikowane przez doświadczonych programistów i programistki. Za uwagi i komentarze będę bardzo wdzięczny i myślę, że inni czytelnicy również.

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, natomiast 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. Niekorzystanie z wyszukiwarki to również przejaw braku szacunku dla innych użytkowników danego forum czy grupy. 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 już problemy. O tym, jak zadawać dobre pytania techniczne możesz również przeczytać dedykowany artykuł na moim blogu.

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. Praktycznie każdy popularniejszy język czy framework ma społeczność skupioną wokół niego. Możesz dołączać do programistycznych Slacków czy kanałów na Discord.

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 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ą, a większość obecnych języków programowania rozwija się szybko i dynamicznie. Uczenie się języka na pamięć nie ma większego sensu. Najprostszym przykładem takiego języka jest JavaScript, który regularnie dostaje nowe funkcjonalności, a liczba rozszerzeń i bibliotek do niego jest ogromna. Zamiast uczyć się kolejnej biblioteki lepiej poznać ogólne zasady 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 tworzony zgodnie ze 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 na dedykowanej podstronie.

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. Rozwijają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, planuj dalszy rozwój aplikacji i jej funkcjonalności. Pomocne może okazać się podejście Minimum Viable Product.

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 ruszyłem, druga połowa nie zadowalała mnie całkowicie, a jakość kodu pozostawiała wiele do życzenia.

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

Wyrażenia regularne - test

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, to 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.

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

Dominik Szczepaniak

Zawodowo Senior Software Engineer w CKSource. Prywatnie bloger, fan włoskiej kuchni, miłośnik jazdy na rowerze i treningu siłowego.

Inne wpisy, które mogą Cię zainteresować

Zapisz się na mailing i odbierz e-booka

Zapisując się na mój mailing, otrzymasz darmowy egzemplarz e-booka 106 Pytań Rekrutacyjnych Junior JavaScript Developer! Będziesz też otrzymywać wartościowe treści i powiadomienia o nowych wpisach na skrzynkę e-mail.

Subscribe
Powiadom o
guest

4 komentarzy
oceniany
najnowszy najstarszy
Inline Feedbacks
View all comments
R4ndyThr0atz
R4ndyThr0atz
5 lat temu

taniutki ten frontend con 😉

Dominik Szczepaniak
5 lat temu
Reply to  R4ndyThr0atz

Niestety nie ja ustalałem cenę 😉

Tomasz Sochacki
5 lat temu

Wszystko fajnie opisane, ale drobna uwaga, do czytelników, CR jest po to, aby rozmawiać o błędach i dobrych praktykach, a czasami ludzie potrafią się nawet mocno oburzać za wskazanie błędów w CR 🙂

I druga kwestia z tą jedną dziedziną. Owszem, warto wybrać w danej chwili jeden kierunek, np. front-end jeśli jesteśmy w webie, ale czasami nie rozumiem ludzi, którzy idą wręcz do przesady i z góry zakładają, że np. uczą się tylko Reacta i angular czy angularjs, vue itp. nie mogą tknąć, a od apek w vanillaJS też uciekają jak się da.

Także moim zdaniem wybieraj kierunek jak najbardziej, ale w jego obszarze nie zamykaj się zbyt wąsko. Sam mam w pracy przypadku różnych migracji między technologiami i śmieszne by było, gdyby firma miała zatrudniać nowych programistów bo się zmienił framework na froncie… No bez jaj 🙂

I plus za proponowanie na starcie małych projektów. Wiele osób zbyt szybko chce się rzucić na coś dużego i szybko tracą zapał. Zresztą to chyba po prostu domena nauki programowania, w końcu kto z zaczynających z back-endem nie chciał pisać własnego CMS ? 😀

Dominik Szczepaniak
5 lat temu

Jasne masz rację, trzeba być otwartym na rozwój i uczenie się nowych rozwiązań lecz trzeba pamiętać o zachowaniu umiaru, nie można przegiąć w żadną ze stron. Tak jak wspomniałeś uczenie się np. tylko i wyłącznie Reacta lub Angulara jest strzałem w stopę. Tak samo sytuacja wygląda z drugiej strony, gdy ktoś się uczy JS’a, PHP, Javy, Pythona, C# i C++ (najlepiej jednocześnie).