Menu Zamknij

Jak powinien wyglądać efektywny proces nauki programowania? W drodze do zdobycia pierwszej pracy…

Jako doświadczony mentor programowania, który pomógł zdobyć pracę dziesiątkom już Junior Dev-om, od zawsze powtarzam, że nauka programowania to ciężka przeprawa. W trakcie niej poziom motywacji nieustannie szybuje od zera aż do maksymalnie wysokiego poziomu, później spada i tak w kółko. Szlifowanie swoich umiejętności programistycznych to również próba Twojego charakteru. Czy będziesz na tyle silny, że stawisz czoła wszelkim przeciwnościom i niepowodzeniom?

No dobra, rozpocząłem dość górnolotnie. Rozwodzenie się nad zachowaniami kadetów programowania nie jest celem tego artykułu. Poniżej chciałbym przekazać Ci kilka rad, których warto przestrzegać podczas programistycznego rozwoju, aby zmaksymalizować swoje efekty i jak najszybciej osiągnąć postawiony cel. Trzymanie się założeń, które za chwilę wymienię jest niezbędne, aby ułatwić sobie tę ciężką przeprawę przez proces samokształcenia się. Ponadto, są to tak ważne zasady, że już od samego początku wpajam je każdemu z mentorowanych przeze mnie uczniów. Także, jeżeli nie możesz sobie w danym momencie pozwolić na pracę z własnym mentorem programowania, obiecaj mi, że wyrobisz w sobie wystarczającą dyscyplinę, aby przestrzegać poniższych założeń.

 

Zasada 1. Miej jasno postawiony cel już od samego początku nauki.

Ważne jest, aby podczas rozwoju przyświecał Ci konkretny cel. Rozpocząłeś pisać kod, aby się przebranżowić? Jeżeli tak, to gdzie widziałbyś siebie po opanowaniu zagadnień języka i technologii? Chciałbyś zbudować własny start-up czy pracować w jakimś software housie, korporacji? A może przyświeca Ci obietnica wysokich zarobków? (choć z nią na początku też bywa różnie, o czym możesz się przekonać z serii wywiadów z naszymi Juniorami)

A może uczysz się programować, aby pisać własne aplikacje i automatyzować swoją rutynę pracy? Wszystkie argumenty są na wagę złota! 

Oczywiście na etapie rozpoczęcia nauki nie wymagam od ucznia, aby dokładnie wiedział, z jakim stackiem technologicznym chce pracować oraz jaka dziedzina IT go kręci najbardziej. Najważniejsza jest sama idea, nie musi być mocno doprecyzowana. To wszystko jest po to, abyś wiedział, po co poświęcasz tak wiele ciężkich godzin na naukę programowania. Uwierz mi, że nie zawsze będzie łatwo – będą chwile, kiedy z powodu nawet pozornie prostego syntax error-u, będziesz chciał zrezygnować z nauki. Przypomnienie sobie o swojej motywacji, może znacznie podnieść Cię na duchu i uskrzydlić w pracy.

 

Zasada 2. Nie rezygnuj za szybko, ale również poznaj swoje możliwości…

Będąc już przy temacie rezygnacji, nie pozwól, aby gorszy dzień czy chwila rzutowały na Twój zapał do nauki. To, że nie idzie Ci zrozumienie danego zagadnienia wcale nie znaczy, że się nie nadajesz. Po prostu każdy uczy się w swoim tempie. Niektóre tematy wymagają poświęcenia większej ilości czasu niż zwykle i to jest totalnie normalne.
Są faktycznie osoby, które nie powinny brnąć w programowanie, bo stanowczo lepszym pomysłem jest, aby realizowali się oni w innej specjalizacji, jednak to wychodzi już na początku nauki. Dla mnie dobrym wyznacznikiem tego, czy nadajesz się do poznania języka, są pętle. Jeżeli więc udało Ci się przez nie przebrnąć, zrozumieć i rozwiązać nieco zadań, to znaczy, że nie powinieneś się poddawać na dalszym etapie rozwoju. Jeżeli tylko sam nie stwierdziłeś, że programowanie Cię jednak nie interesuje, to sky is the limit. Jesteś w stanie opanować również pozostałe zagadnienia, np. z Pythona. 

 

Zasada 3. Zrób z nauki nawyk

Systematyczność to podstawa. Jako mentor w pierwszej kolejności, wyznaczam z uczniem ilość godzin w tygodniu, jakie jest on w stanie poświęcić na naukę. Dodatkowo określamy, w jakich porach dnia najlepiej się mu pracuje i ma najwięcej wolnego czasu. Na podstawie tych informacji opracowujemy zakres materiału do przerobienia w danym tygodniu i efektywnie rozkładamy go na wyznaczone godziny pracy. Dzięki temu osoba nie musi jednorazowo poświęcać dużej ilości czasu na naukę, tylko skutecznie rozkłada materiał na wiele dni w tygodniu. Umożliwia to zbudowanie solidnego nawyku nauki – w pewnym momencie uczeń nawet nie myśli o tym, że w danym dniu musi coś pokodować czy rozwinąć wiedzę z danego zakresu. Traktuje to zupełnie naturalnie, jako swój rytuał w ciągu dnia. Dobrym pomysłem jest rownież codzienne doczytywnie różnych artykułów z branży i dzięki temu podnoszenie swojej programistycznej świadomości. Z tego również można zbudować przyjemny nawyk – czytając choćby regularnie przed snem.

 

Zasada 4. Nie ucz się na sucho

Gdy zabierasz się za naukę rzeczy typowo związanych z językiem czy frameworkiem, konieczne jest, abyś miał pod ręką jakieś IDE. Każdy poznany twór, od razu zapisuj w swoim edytorze kodu i sprawdzaj jego działanie. Jednym słowem – baw się kodem podczas nauki. Zapewniam Cię, że dzięki temu lepiej zapamiętasz wiele zagadnień, często napotkasz problemy, bo coś przeoczysz, przepisując kod i już spędzisz wiele cennych chwil na analizę programu i szukanie błędu.

 

Zasada 5. Ucz się pod okiem innych

Ucząc się programowania, jesteś niesamowicie mocno narażony na popełnianie typowych błędów dla początkujących. Niewątpliwie wydłuża to czas nauki, łatwiej o zniechęcenie i co gorsza wyrobienie w sobie złych nawyków programistycznych. Dlatego najlepszym rozwiązaniem będzie, abyś poznał kogoś, kto ma już obycie z programowaniem i mógłby być Twoją pomocą przy nauce. Nic tak nie usprawnia pracy, jak dogłębne code review Twojego kodu, wyhaczenie niedociągnięć, uzyskanie rad, co można by poprawić w stylu pisania aplikacji. Dodatkowo dostęp do doświadczonego programisty przydaje się, gdy utknąłeś na jakimś zadaniu. Zamiast szukać odpowiedzi po internecie i zadawać pytania na różnych forach, możesz bezpośrednio napisać do swojego nauczyciela i od razu otrzymać podpowiedź.

 

Zasada 6. Nie bój się algorytmiki

Algorytmika to temat, który skutecznie odstrasza początkujących. Myślę, że tego głównym powodem jest fakt, iż algorytmy od razu kojarzą się z matematyką i zaawansowanym rachunkiem. Jak się okazuje, aby zrozumieć dużą część algorytmów, wystarczy podstawowa znajomość zagadnień z matematyki ze szkoły średniej. Zapytasz w końcu, po co zaprzątać sobie głowę tym działem programowania, skoro na co dzień, w pracy dev-a, nie korzysta się z algorytmów prawie w ogóle? Odpowiedź jest prosta i powtarzam ją wielokrotnie swoim uczniom – rozwiązywanie problemów algorytmicznych skutecznie rozwija abstrakcyjne myślenie! Zdaj sobie bowiem sprawę, że poznanie dowolnego języka programowania, czy frameworka to złapanie obycia, z bądź co bądź, tylko i wyłącznie narzędziem pracy. Według mnie, największym wyzwaniem w nauce programowania jest nauczenie się myślenia jak programista. Oczywiście takiego abstrakcyjnego podejścia do problemu uczymy się, pisząc każdą kolejną linię kodu. Proces ten możemy znacznie usprawnić, próbując wyobrazić sobie działanie danego algorytmu (nawet tych najbardziej popularnych jak: algorytm na wyznaczanie NWD, sito Erastotenesa, sortowania itd.).

 

Zasada 7. Po poznaniu języka jasno sprecyzuj, czym chcesz się fachowo zająć.

Aby być cenionym na rynku programistą, nie możesz ograniczyć się tylko do poznania samego języka i spoczęciu na laurach. Obecnie wymaga się od specjalistów przekrojowej wiedzy domenowej odnośnie któregoś zakresu programowania. Po tym, jak spędzisz X czasu na nauce języka, wyrabianiu w sobie abstrakcyjnego podejścia do rozwiązywania problemu, będziesz musiał podjąć ważną decyzję, w którym kierunku branży IT, chciałbyś się rozwijać. Zaznaczam, że decyzja ta powinna zostać podjęta już na pewnym pułapie umiejętności. A to dlatego, iż totalnie początkujący programista zazwyczaj nie ma pojęcia, co  lubi najbardziej robić przy użyciu kodu. Czy jest to może analiza danych, rozwój aplikacji od strony backend-u, tudzież frontend-u, a może zupełnie coś innego, jak niskopoziomowe programowanie sprzętowe, praca z embedded systems itd. Ścieżek wyboru jest wiele. Dlatego tak ważny jest dogłębny research i rachunek sumienia. Bądź jednak świadomy tego, że wybierając daną ścieżkę rozwoju, nie zamykasz sobie drzwi na pracę przy innych technologiach. Często, nawet już doświadczeni programiści, mają możliwość wcale nie takiej trudnej migracji między różnymi domenami programowania. To, że w danym momencie zdecydujesz się na pracę i rozwój tylko i wyłącznie z technologiami backend-owymi, nie wyklucza Cię z możliwości rozwoju również w innych dziedzinach wiedzy. Dość trafny może być tutaj mój przykład – obecnie pracuję jako C++ Software Engineer przy technologii 5G. Choć praca ta jest związana mocno z telekomunikacją, to z dozą mojej ciekawości, pozwoliła mi się również rozwinąć z zakresu cyberbezpieczeństwa. 

 

Zasada 8. Buduj projekty i analizuj kod innych

I na koniec – jako zwieńczenie. Nie dopuść do wystąpienia u siebie syndromu wiecznego studenta, czy tzw. syndromu oszusta. Jeżeli posługujesz się językiem, na już chociaż podstawowym poziomie, nie bój się wziąć za pracę nad własnym większym projektem. Nic tak nie rozwija, jak tworzenie bardziej kompleksowych funkcjonalności w swoich projektach. Uczysz się wówczas, jak łączyć wszystkie poznane dotąd zagadnienia i tworzyć efektywny ekosystem. Oczywiście budowanie własnego projektu często będzie wymagało od Ciebie wyszukania pewnych rozwiązań w necie, douczenia się nowych aspektów programowania. Ale podkreślam – początkujący koderzy lubią szukać wymówek i odkładać zaprogramowanie czegoś większego na później. Nie postępuj w ten sposób! Praktykę traktuj jako możliwość doszlifowania i uzupełnienia swojej dotychczasowej wiedzy. Na pewno będą chwile, gdzie napotkasz trudne do przeskoczenia bariery. Wtedy może przydatny okazać się hint z punktu 5. – poproś kogoś bardziej doświadczonego o pomoc i wytłumaczenie, jak rozwikłać dany problem. 

Analiza czyjegoś kodu również może być idealnym sposobem na rozwój umiejętności. Zapoznajemy się wtedy z różnymi stylami programowania, uzupełniamy wiedzę o nowe praktyki. Gdzie szukać dobrze napisanych projektów, z których można czerpać inspirację? Najlepszym miejscem będzie GitHub lub nasz fanpage, na którego wrzucamy co jakiś czas realizacje z portfolio uczniów. 

 

Zasada 9. Nigdzie Ci się nie spieszy!

W dobie internetowych coach-ów programowania, bootcamp-ów oraz krótkich, bo zaledwie kilkumiesięcznych kursów programowania, łatwo wejść w przekonanie, że programowania można się nauczyć w 4 czy nawet 3 miesiące. To kompletna bzdura! Żaden kurs nie nauczy Cię programowania w tak krótkim czasie. Na to potrzeba solidnych wielu miesięcy ciężkiej pracy. Ze swojego doświadczenia, mogę Ci zdradzić, że średni czas, jaki mi zajmuje proces przebranżowienia totalnego laika programowania w Python Junior Dev-a, to okres od 9 do 12 miesięcy nauki. A tempo, z jakim pracujemy jest przecież ogromne! Tak więc, jeżeli nie chcesz się szybko zniechęcić, musisz zrozumieć, że w nauce nigdzie nie powinno Ci się spieszyć. Czas i tak mija. Dąż więc do tego, abyś za rok mógł stwierdzić, że dobrze wykorzystałeś swój ostatni okres rozwoju w obszarze programowania. Nie poddawaj się ze względu na to, że w danym momencie perspektywa osiągnięcia sukcesu może być dość odległa…

 

Na koniec ostatnia złota zasada…

 

Zasada 10. Pamiętaj o wszystkich wcześniejszych radach

Co tu dużo wyjaśniać – przestrzegaj wszystkich wymienionych zasad, a uda Ci się wznieść na szczyt programowania! Powodzenia 🙂 

 

Wszystkiego optymalnego

Devs-Mentoring.pl

Sprawdź również nasz system mentorowania i outsourcowania specjalistów
  • Wyznaczona ścieżka od A do Z w kierunku przebranżowienia
  • Indywidualnie dostosowany materiał pod ucznia
  • Code Review ze strony mentora
  • Budowa portfolio
  • Intensywna praca z materiałami szkoleniowymi
Zapytaj