Materiały do nauki programowania
Po podjęciu decyzji o nauce programowania jednym z największych problemów staje się skąd wziąć materiały do nauki poszczególnych technologii. Nawet mając już większą ilość doświadczenia w IT, odpowiedzenie na to pytanie nie jest wcale takie łatwe. Internet to ogromne źródło wiedzy, jednak należy umieć odpowiednio przefiltrować treści.
Spis treści
Samodzielna nauka programowania
Samodzielna nauka programowania to bardzo dobry pomysł, ponieważ pozwoli Ci przekonać się, jak radzisz sobie z rozwiązywaniem problemów na poziomie: “nie rozumiem jak to działa”. Praca programisty polega na nieustannej nauce i codziennym rozwiązywaniu problemów, dlatego samodzielna nauka to najlepsza próbka.
W innym moim artykule opisałem jak przebranżowić się na programistę, natomiast w tym artykule skupię się na tym skąd wziąć materiał do nauki programowania.
Źródło wiedzy - kursy wideo
Myślę, że dobrym wyborem będzie wykupienie dostępu do jakiejś platformy zawierającej kursy programowania w postaci filmików. Ma to kilka ważnych plusów.
Po pierwsze jest to praktycznie najtańsze źródło solidnej wiedzy, na pewno dużo tańsze niż książki, lub szkoły programowania. Możesz uczyć się kiedy masz na to ochotę, a materiał którego nie zrozumiesz wiele razy cofać.
Po drugie filmy ułożone przeważnie podzielone są na poziomy zaaawansowania, i są ułożone hierarhicznie w odpowiedniej kolejności. Jest to szczególnie ważne dla osób początkujących, ponieważ Twoja nauka będzie przebiegać etapowo tak jak powinna.
Platforma Pluralsight (wideo)
Moją ulubioną platformą do nauki jest https://www.pluralsight.com. Korzystałem z tej platformy zawsze - zarówno wtedy gdy zaczynałem i korzystam z niej teraz. Mam 8 lat doświadczenia jako programista i właściwie zawsze gdy uczę się czegoś nowego, wchodzę na Plurala.
Dostęp do platformy jest płatny i kosztuje około 100zł miesięcznie. Nie jest to zbyt duża cena, w porównaniu do np. szkół programowania lub książek.
Co zawiera pluralsight?
Jest to bogata w treści platforma zawierająca lekcje w postaci filmów wideo. Są one podzielona na 3 kategorie:
- początkujący
- średnozaawansowany
- zaawansowany
Dzięki temu podziałowi z łatwością znajdziesz treści dopasowane do Twojego poziomu wiedzy. Filmy są w języku angielskim i mają bardzo wysoką jakość. Można je spowolnić oraz włączyć napisy. Większość lekcji posiada notatki i ćwiczenia w różnych formatach, które można pobrać i zapisać na dysku.
Zaletą plurala jest także to, że filmiki są ułożone w odpowiedniej kolejności i zorganizowane w kursy. Dzięki temu zaczynając kurs JavaScript, React czy Java nie zabłądzisz w trakcie jego trwania. Będziesz płynnie przeskakiwał z lekcji do lekcji.
Ścieżki rozwoju Pluralsight
Nie wiem czy jeszcze to zauważyłeś (zalezy to od Twojego poziomu zaawansowania) ale często jeden kurs z 20 filmikami to zbyt mało. W programowaniu zwykle potrzebujesz wiekszego zestawu narzędzi. Na Plularsight są dostępne także ścieżki rozwoju, które grupują kursy i podpowiadają w jakiej kolejności je realizować.
Przykładowe dostępne ścieżki rozwoju to:
- .NET Microservices (9 kursów - 20h filmów)
- Android Development (5 kursów - 17h filmów)
- Web applications with React (13kursów - 33h filmów)
- JavaScript Core (10 kursów - 16h filmów)
- Angular (18 kursów - 64h filmów)
Wszystkich ścieżek rozwoju jest tam z 20-30 także nie jestem ich w stanie wszystkich wypisać.
Jakie języki są na Pluralsight
Na Pluralu znajdziesz wszystkie najnowsze języki, zarówno jeżeli chodzi o front-end (JavaScript, Angular, React, Vue.js) oraz backend (.NET, C#, Java, C++, Android) a także chmury (Microsoft Azure, AWS).
Warto podkreślić, że nie jest to platforma tylko dla programistów, są tam też całe ścieżki rozwoju dla testerów a także analityków IT.
Platforma Udemy (wideo)
Udemy to platforma udostępniająca wiele kursów wideo, nie tylko z branży IT. Wielu moich znajomych z niej korzysta. Jest dostepna pod adresem: https://www.udemy.com.
Z jednej strony wiem, że jest bardziej uboga niż Pluralsight, jednak posiada też pewne różnice:
- są dostępne kursy w języku Polskim
- można kupować kursy pojedynczo
Niestety, pojedyncze kupowanie filmików wychodzi raczej drożej, niż wykupienie miesięcznego dostępu. Cena jednego kursu to około 40-80zł, za podobną cenę można obejrzeć 10 kursów na Pluralu. Nigdy nie korzystałem z udemy, więc nie jestem w stanie podać większej ilości informacji.
Źródło wiedzy - książki
Mam dla Ciebie złą wiadomość. Sam prowadzę bloga i o wiele bardziej preferuje czytanie zamiast oglądania filmów wideo, jednak książki to nie jest coś, co poleciłbym do nauki programowania. Zdarzyło mi się przeczytać kilka książek IT i nauka nigdy nie była wygodna.
Oto największe minusy książek:
- dość wysokie ceny (jedna książka to ekwiwalent miesięcznego dostępu do Pluralsighta)
- bardzo, bardzo, bardzo szybko się dezaktualizują
- jeżeli są tłumaczone na polski to często jest to tragedia (hello word = cześć świat)
- fragmenty kodu nieczytelne, niemożliwe do skopiowania
Największą wadą książek jest niewątpliwie to, że szybko się dezaktualizują. Książka z 2019 roku może być niezbyt przydatna w 2020 roku, ponieważ pojawia się nowa wersja .NET Cora lub nowa wersja Angulara. Później ciężko je odsprzedać i właściwie niewiadomo co z nimi zrobić.
Tłumaczenia książek są tak fatalne, że ciężko w to uwierzyć nie będąc z branży IT i nie czując żargonu. Polskie filmiki nie mają tego problemu, bo nagrywa je Polak programista. Książka natomiast, jest pisana przez anglojęzycznego programistę a tłumaczona przez niezbyt techniczną osobę.
Helion.pl (książki)
Na helionie można spotkać dużo fajnych książek programistycznych. Mają najlepszą ofertę, jeżeli chodzi o książki po polsku. Jeżeli nie zniechęca Cię to co napisałem o książkach, celowałbym właśnie w Helion.
Plusem niewątpliwie jest to, że książki mają dość tanie, więc kupno 2-3 pozycji nie powinno nikogo zaboleć.
O’Reilly.com (książki i wideo)
O’Reilly to duża platforma zawierająca bardzo dużo książek o różnej tematyce. Od pewnego czasu dostępne są tam także filmy.
Oferta książek jest bardzo bogata, jednak nie tak duża jak na Helion.pl. Są tam dostepne pozycje anglojęzyczne. Platforma słynie raczej z dostępu do książek o tematyce finansowej, dlatego w branży IT nie jest jakoś szczególnie mocno doceniana (chociaż książek nie brakuje!).
Ja używałem OReilly za darmo, ponieważ dostęp zapewniał mi pracodawca. Zdarzyło mi się przeczytać kilka pozycji oraz oglądnąć jakiś kurs wideo.
Największą wadą jest bardzo wysoka cena w granicach 200zł miesięcznie.
Mentoring, nauczyciel
W programowaniu jest jak w każdej innej nauce ścisłej. Potrzebujesz pomocy doświadczonej osoby, która będzie prowadzić Cię za rękę i sprawdzać Twoje rozwiązania. Bez mentora, oczywiście też dasz radę, jednak zajmie Ci to dłużej.
Najprostsze sposoby na mentoring:
- studia informatyczne (dość długie rozwiązanie)
- szkoły programowania (dość drogie rozwiązanie)
- znajomy programista (najlepsza opcja)
- korepetycje z programowania
- fora internetowe (stackoverflow.com)
Moja dziewczyna przebranżowiła się na programistkę, zajęło jej to około pół roku. Nie uczyłem jej, jednak nakierowywałem ją za co musi się wziąć w następnej kolejności. Gdy utknęła tłumaczyłem jej rozwiązanie. Często robiłem jej code-review i mówiłem, co jest źle.
Po 1.5roku pracy mogę powiedzieć, że jest mocnym regularem w technologii, którą się zajmuje. Pomoc znajomego programisty była w jej przypadku prawdziwym dopalaczem w nauce programowania.
Stackoverflow.com (forum)
Stackoverflow można porównać do forum. Obecnie stało się jednak tak popularne, że zaczyna przypominać platformę społecznościową.
Niezależnie czego się uczysz i z jakiego źródła, stackoverflow powinien być Twoim podstawowym miejscem rozwiązywania problemów programistycznych. Jeżeli odpowiednio zadasz pytanie, społeczność stacka da Ci pomocną dłoń:
- podpowie jak rozwiązać problem programistyczny
- wytłumaczy skąd bierze się błąd, którego nie umiesz naprawić
- sprawdzi czy Twoje rozwiązanie jest poprawne (code review)
- zaproponuje lepsze rozwiązanie
Jak żyć w zgodzie ze społecznością Stackoverflow
Na Stacku panują pewne zasady, musisz się ich trzymać, aby czuć się tam komfortowo:
- Spróbuj przeszukać Stacka używając wyszukiwarki, prawdopodobnie ktoś przed Tobą miał podobny problem
- Do każdego pytania dołącz fragment kodu
- Bądź miły
Jeżeli zadasz pytanie “jak zrobić coś.. w języku..” i na tym post się skończy, dostaniesz dużo minusów i odesłanie do regulaminu. Użytkownicy Stacka bardzo nie lubią wyręczać kogoś, oraz nie lubią sytuacji gdy nie widać żadnego wkładu od użytkownika. Musisz pokazać, że próbowałeś rozwiązac problem i do jakiego etapu doszedłeś.
Problemy programistyczne
Jak wiele razy staram się podkreślać, nauka określonego języka to jedno, a nauka programowania to drugie. Programowanie polega na rozwiązywaniu problemów, a nie na nauce nowych języków. Stąd bardzo ważne jest ćwiczenie algorytmiki i podejmowanie programistycznych wyzwań.
Jest to także powód, dla którego gorąco polecam samodzielną naukę, zamiast zapisywania się do szkół programowania.
Matura z informatyki (algorytmy, problem solving)
Matura z informatyki to dość niedoceniona perełka. Naprawdę mało kto zagląda do arkuszy maturalnych, a są po prostu ekstra!
Na stronie https://cke.gov.pl/arkusze/egzamin-maturalny są dostępne arkusze maturalne ze wszystkich lat. Rozwiązując je można nabrać solidnej podstawy jeżeli chodzi o programowanie. Celuj w drugą część arkusza, jest tam zawsze jedno zadanie programistyczne, jedno z baz danych i jedno z arkusza kalkulacyjnego.
Matura z informatyki skupia się na dobrym zrozumieniu:
- zmiennych
- tablic
- pętli
- funkcji
- podstawowych algorytmów (sortowanie, wyszukiwanie, na liczbach, na tekstach, numeryczne)
Jeżeli przerobisz wszystkie zadania i będziesz je rozumiał to będziesz naprawdę dobry. Nie chciałbym kogoś urazić ani rozpętać burzy.. Uważam, że osoba, która jest w stanie napisać rozszerzoną maturę z informatyki w okolicach 80%, rozkłada na łopaki osobę po kilkumiesięcznym kursie Reacta.
Chodzi tutaj o praktykę i bardzo dobre zrozumienie podstaw, na których później opiera się już wszystko. Niewątpliwym plusem matur jest dołączony klucz odpowiedzi.
Zadania online (algorytmy, problem solving)
W internecie dostępnych jest naprawdę dużo stron, na których można znaleźć zadania programistyczne. Oto niektóre strony, które znam:
- https://projecteuler.net/ - duży zbiór zadań
- https://www.spoj.com/ - duży zbiór zadań
- https://app.codility.com/programmers/lessons - duży zbiór zadań i edytor kodu online
Stroną ProjectEuler męczył nas prowadzący na studiach. SPOJ jest dość kultowy i chyba każdy programista go zna.
Codility to natomiast standard jeżeli chodzi o proramistyczne rozmowy rekrutacyjne. Na czym to polega? Dostajesz e-mailem linka do zadania na Codility, i masz 60-120minut na jego rozwiązanie. Osobiście uczestniczyłem w 3 takich rekrutacjach w ciągu mojej kariery IT. Warto popróbować!
Inne źródła (Blogi, YouTube)
Ostatnia kategorią źródeł wiedzy, z których możesz uczyć się programowania jest otwarty, nieskończony internet. Blogi internetowe (takie jak mój) czy kanały na YouTube mogą dostarczyć Ci wiedzy na określone tematy.
Niestety, miejsca takie jak mój blog polecałbym Ci raczej do kawki, a nie jako źródło uczenia się programowania. Dotyczy to także innych stron i kanałów.
To co przekreśla takie miejsca to strzępkowa wiedza. Jakiś artykuł może być dobrze napisany, jednak jest to mały wycinek całej wiedzy jaką musisz opanować. Ucząc się programowania potrzebujesz ustandaryzowanej wiedzy ułożonej w odpowiedniej kolejności (dział po dziale).
Co zrobić, jak żyć
Podsumowanie tego artykułu będzie dość proste. Jestem programistą z 8 letnim doświadczeniem w IT. Gdybym mógł sobie doradzić jak uczyć się programowania od zera zrobiłbym to następująco:
- Wybrałbym źródło wiedzy (szkoła programowania lub Pluralsight.com). Szkołę programowania raczej bym odrzucił, bo uważam, że lepiej uczyć się samemu. Napisałem tez na ten temat artykuł: szkoły programowania - czy warto.
- Pytałbym znajomego programisty lub na stackoverflow.com o to, czego nie rozumiem, w jaką stronę iść dalej, i czy moje rozwiązania są poprawne.
- Ćwiczyłbym problem solving rozwiązując na zmianę stare matury z informatyki i zadania z Codility.