fbpx
Nauka programowania
8 kroków

Krok 2 – Nauka programowania

Tydzień temu w artykule Krok 1 – Wybór technologii i języka programowania omówiliśmy to, w jaki sposób zdecydować się na obszar i język programowania, w jakim chcielibyśmy się w przyszłości specjalizować. Dziś zajmiemy się kolejnym krokiem na naszej drodze do zostania programistą, czyli nauką programowania.

Ten artykuł jest długi, więc aby ułatwić Ci nawigację, przygotowałam spis treści:

Gdzie możemy nauczyć się programowania

Załóżmy, że wybraliśmy już obszar programowania i język, jakiego chcemy się uczyć na początku.

A więc co dalej?

Po wpisaniu w Google frazy “XYZ nauka” – gdzie za XYZ podstawiamy wybrany przez nas język programowania, na pierwszej stronie rekordów wyszukiwania znajdziemy głównie:

  • szkoły programowania (bootcampy)
  • kursy na Udemy
  • kursy na YouTube

Nieco dalej pokażą nam się również:

  • kursy na Coursea i edX
  • podręczniki do programowania

Omówmy więc po kolei czym charakteryzują się poszczególne metody nauki oraz jakie są ich wady i zalety.

Szkoły programowania (bootcampy)

Charakterystyka

Gotowe, teoretycznie przygotowane przez specjalistów, profesjonalne kursy programowania. Często reklamowane jako jedyne szkolenie, które wystarczy zrobić, aby rozpocząć pracę jako Młodszy Programista. Czasem oferują program “gwarancji zatrudnienia” (obejmujący tylko osoby, które zdały wewnętrzne egzaminy i napisały projekty).

Zalety

  • Dostajemy do ręki gotowy produkt: plan nauki, materiały edukacyjne, zadania domowe i konkretne projekty do wykonania.
  • “All in one” – dobre, rozbudowane bootcampy uczą nie tylko konkretnego języka, ale też całego zestawu narzędzi potrzebnych programiście: obsługi środowiska programistycznego, obsługi linii komend, gita, podstaw SQLa.
  • Nie ryzykujemy, że przez swój brak rozeznania w temacie pominiemy nauczenie się czegoś ważnego, lub zmarnujemy czas na naukę rzeczy niepotrzebnych, albo zbyt zaawansowanych jak na etap, na którym się znajdujemy.
  • Na zajęciach otrzymujemy wsparcie wykładowcy, po zajęciach czasem dostępne jest wsparcie “mentora”, czyli osoby, która powinna odpowiadać nam na pytania programistyczne i udzielać wsparcia. Dostęp do takiej pomocy oszczędza czas, który moglibyśmy stracić na samodzielnym rozwiązywaniu problemów.
  • Zajęcia mają określony z góry harmonogram, nie możemy ich dowolnie przekładać, dzięki temu łatwiej o motywację i utrzymanie odpowiedniego tempa nauki.
  • Dodatkową motywacją do nauki jest fakt wydania na kurs dużych pieniędzy.

Wady

  • W trakcie kursu jesteśmy prowadzeni za rękę; jeśli mamy problem, to trener lub mentor pomoże nam go rozwiązać. Może to wpływać rozleniwiająco i spowodować niewyrobienie sobie koniecznej u programisty samodzielności.
  • Bardzo trudno o programistę, który jednocześnie ma wiedzę wystarczającą do poprowadzenia bootcampu i potrafi dobrze ją przekazać. Instruktorzy prowadzący zajęcia często są więc “z łapanki” i jakość prowadzonych przez nich zajęć jest niska.
  • Musimy dostosować się do tempa grupy – oznacza to, że słabsze osoby mogą nie nadążać, a lepsze będą się nudzić.
  • Wysoka cena bootcampów nie zawsze idzie w parze z ich jakością. Konsekwencje wyboru złego bootcampu są więc dotkliwe finansowo.

Pozostałe cechy

  • Czas trwania: od 10 dni do kilku miesięcy.
  • Tryb nauki: stacjonarny (w siedzibie szkoły) lub online. Kursy prowadzone są po polsku.
  • Cena: od 4000 do 20000 zł.

Kursy na Udemy

Charakterystyka

Kursy online prowadzone na największej na świecie platformie e-learningowej. Zazwyczaj jeden kurs pokrywa jeden temat, a więc aby zdobyć wiedzę potrzebną Młodszemu Programiście musimy zrobić kilka kursów. Kursy prawie zawsze są w formie nagrań wideo, na których widzimy ekran prowadzącego i słyszymy jego głos. Dodatkowo często zawierają też quizy i materiały w formie prezentacji lub PDF, a także części poświęcone przygotowaniu własnych projektów.

Zalety

  • Ogromny wybór kursów online powoduje, że mamy dostęp do kursów wysokiej jakości. Przed zakupem możemy sprawdzić oceny i opinie na temat danego kursu.
  • Jeśli kurs nie spełni naszych oczekiwań, możemy w ciągu miesiąca go zwrócić i odzyskać pieniądze. Mamy więc możliwość przetestowania kilku różnych kursów i kupienia tego, który najbardziej nam odpowiada.
  • Uczymy się w tempie, jakie jest dla nas wygodne. Możemy dowolną ilość razy powtarzać każdą lekcję, możemy też je pomijać lub oglądać w przyspieszeniu, jeśli są dla nas łatwe. Nie musimy dostosowywać się do grupy.
  • Dobry stosunek ceny do jakości. Małe ryzyko finansowe.

Wady

  • Sami musimy ułożyć program nauki i istnieje ryzyko, że nie zrobimy tego optymalne i albo nie nauczymy się wszystkiego, czego powinniśmy, albo spędzimy zbyt dużo czasu na nauce niepotrzebnych nam na tym etapie rzeczy.
  • Brak zewnętrznego wsparcia. Jeśli jakaś lekcja będzie dla nas niezrozumiała to możemy uzyskać pomoc publikując pytanie w sekcji Q&A kursu (czasem na odpowiedź czeka się kilka dni lub dłużej, czasem nie dostajemy jej wcale). Nie mamy jednak wsparcia “całościowego”, trenera lub mentora, który zna się na programowaniu i na bieżąco rozwieje nasze wątpliwości i odpowie na wszystkie pytania.
  • Na Udemy każdy może opublikować kurs, więc możemy trafić na kurs o niskiej jakości. Można się jednak przed tym uchronić sprawdzając opinie i korzystając z możliwości zwrotu kursu, który nie spełnił naszych oczekiwań.

Pozostałe cechy

  • Czas trwania: zależy od nas, od tego jak szybko przyswajamy wiedzę i czy tylko kurs “oglądamy”, czy staramy się na bieżąco programować, rozwiązywać zadania i robić projekty.
  • Tryb nauki: online (po polsku lub angielsku).
  • Cena: zwykle od 35 do 70 zł za kurs.

Kursy na YouTube

Charakterystyka

Kursy dostępne za darmo w Internecie: na polskojęzycznym i anglojęzycznym YouTube. Tak samo jak w wypadku Udemy – samodzielnie musimy ułożyć sobie program nauki.

Zalety

  • Darmowy dostęp do ogromnej ilości kursów.
  • Możemy bez konieczności zapisywania się oraz żadnych konsekwencji przeglądać dostępne opcje tak długo, aż trafimy na coś, co nam odpowiada.

Wady

  • Ogromna ilość kursów niskiej jakości, które musimy odfiltrować. Ryzyko straty czasu jeśli zdecydujemy się na kiepski kurs.
  • Bardzo często kursy poruszają tylko podstawowe aspekty danego zagadnienia, bez zagłębiania się w bardziej zaawansowane tematy.
  • Wiele kursów nie jest ukończonych, autor rezygnuje po nagraniu kilku lekcji.
  • Brak quizów, zadań domowych i projektów do wykonania.

Pozostałe cechy

  • Czas trwania: podobnie jak w wypadku kursów na Udemy, zależy od nas i naszego tempa nauki. Dodatkowo musimy samodzielnie szukać metod weryfikowania zdobytej wiedzy żeby ocenić, czy udało nam się opanować materiał.
  • Tryb nauki: online (po polsku lub angielsku).
  • Cena: za darmo.

Coursea i edX

Charakterystyka

Obie platformy zawierają dużą ilość kursów online, które w dużej części są tworzone przez prestiżowe uczelnie techniczne z całego świata (np. Harvard lub MIT) lub wielkie firmy jak Microsoft i IBM.

Zalety

  • Dużo kursów dostępnych za darmo*.
  • Kursy prowadzone przez prestiżowe uczelnie i firmy, często na wysokim poziomie merytorycznym
  • Na obu platformach dostępne są “programy nauki” czyli cykle składające się zazwyczaj z 4-5 kursów, które pokrywają cały obszar danego zagadnienia, np. analizy danych w Pythonie. Taki program może być dobrą alternatywą dla bootcampu, bo w nim również otrzymujemy gotowy plan nauki.

Wady

  • Mniejsza ilość kursów na poziomie wprowadzającym niż na Udemy i YouTube.
  • Mało przyjazne wyszukiwarki – szukając kursu wprowadzającego do danego języka musimy odsiać dużą ilość kursów mało związanych z interesującym nas tematem.

Pozostałe cechy

  • Czas trwania: podobnie jak w wypadku Udemy i YouTube – zależy od nas.
  • Tryb nauki: online (tylko po angielsku).
  • Cena: od darmowych, do kilkuset dolarów za program zawierający kilka kursów.

*- aby kursy na Coursea były dostępne za darmo należy zdecydować się na tak zwany “audyt” kursu, a nie wykupienie pełnego dostępu. Audyt daje nam dostęp do wszystkich materiałów edukacyjnych, ale nie pozwala rozwiązywać testów wiedzy, ani uzyskać certyfikatu ukończenia kursu. Opcja ta nie jest dostępna dla wszystkich kursów, i jest mało widoczna. Na obrazku poniżej widzimy okienko, jakie wyświetla się po zapisie na kurs. Strzałką zaznaczyłam, gdzie należy kliknąć, aby uzyskać darmowy dostęp.

Na edX większość kursów dostępna za darmo (ale nie dotyczy to wszystkich programów nauki). Kursy są domyślnie darmowe, jednak jesteśmy zachęcani do wykupienia płatnego dostępu w celu uzyskania certyfikatu (więcej o certyfikatach w dalszej części tego artykułu):

Podręczniki

W tym punkcie chciałam wspomnieć o jeszcze jednej metodzie nauki, o którą często jestem pytana, i na którą decyduje się całkiem sporo ludzi – mam na myśli naukę z podręczników. Nie będę tu rozpisywała zalet i wad, ponieważ moja opinia na temat ich użyteczności jest jednoznaczna.

Uważam, że dla osoby początkującej nauka z podręcznika to bardzo zły pomysł. Dlaczego?

Ponieważ podręczniki są statyczne. Wszystko to, co w nich wyczytamy będzie dla nas suchą teorią tak długo, jak długo nie przećwiczymy tego programując. Jedynym sposobem, aby nauczyć się programować z podręcznika, jest robienie tego siedząc przy komputerze i próbując od razu zaprogramować to, o czym aktualnie czytamy. Jest to jednak dużo mniej wygodny sposób niż podążanie za kursem online, gdzie na jednym ekranie widzimy kod, który pisze i omawia prowadzący, a na drugim piszemy go sami i na bieżąco sprawdzamy czy wszystko działa nam tak, jak trzeba.

Niestety spora część osób, które próbują uczyć się z podręczników podchodzi do tego w inny sposób: najpierw mają zamiar przeczytać cały podręcznik, a dopiero potem planują programować.

Konsekwencją takiego podejścia zwykle jest rezygnacja z nauki, bo już po kilkunastu stronach podręcznika ciężko jest nadążyć za tym co się w nim dzieje, jeśli nie przećwiczyliśmy tego samodzielnie. Rozmawiałam z naprawdę wieloma osobami, od których słyszałam wypowiedzi w rodzaju:

Wiesz, już któryś miesiąc męczę ten podręcznik do Javy, ale ciężko mi idzie. Mało z tego rozumiem. Chyba się nie nadaję.

Moja opinia jest więc następująca: podręczniki to bardzo zły wybór na początek przygody z programowaniem. Podręczniki przydają się później, gdy już orientujemy się w danym języku i chcemy swoją wiedzę usystematyzować, wypełnić luki, wejść na wyższy poziom lub dogłębnie poznać jakieś zagadnienie.

Jak zdecydować, która metoda jest najlepsza dla nas

Przeanalizowaliśmy więc kilka różnych sposobów na naukę programowania. Nie istnieje jednak uniwersalna odpowiedź na pytanie, która z tych metod jest najlepsza.

Decyzję musimy więc podjąć samodzielnie, biorąc pod uwagę nasze możliwości i oczekiwania. Warto w tym celu odpowiedzieć sobie na kilka pytań:

  • ile czasu możemy poświęcić na naukę?
  • jak szybko chcemy się przebranżowić?
  • czy potrafimy uczyć się samodzielnie?
  • ile jesteśmy gotowi zapłacić za naukę?

Jeśli chcemy, aby ktoś poprowadził nas za rękę przez trudne początki programowania i mamy możliwość wydania kilku lub nawet kilkunastu tysięcy złotych, to bootcamp może być najlepszym rozwiązaniem. Pamiętajmy jednak, że nawet najdroższa szkoła programowania nie wtłoczy nam wiedzy do głowy siłą i nadal będziemy musieli solidnie przyłożyć się do nauki w domu.

Jeśli jesteśmy samodzielni, ale chcemy korzystać ze sprawdzonych źródeł wiedzy i nie tracić czasu na przebijanie się przez gąszcz materiałów kiepskiej jakości, a do tego możemy pozwolić sobie na wydatek rzędu kilkuset złotych (cena kilku kursów), to Udemy będzie dla nas najlepszym rozwiązaniem.

Jeśli jesteśmy zdeterminowani, samodzielni i dysponujemy dużą ilością wolnego czasu, to możemy nauczyć się programowania z YouTube i innych, dostępnych w Internecie darmowych materiałów.

Jak wybrać dobrą szkołę programowania

Pytanie o to jaką szkołę programowania polecam słyszę od Was bardzo często. Niestety, na chwilę obecną nie podejmuję się udzielić takiej odpowiedzi i to pomimo tego, że sama prowadziłam bootcampy, a z kilkoma szkołami nie zdecydowałam się podjąć współpracy, gdy zobaczyłam jak wygląda ich podejście do nauczania “od środka”.

Pierwszym powodem jest to, że opinie o szkołach programowania są skrajnie różne. Rozmawiałam z bardzo niezadowolonymi klientami szkół, o których miałam dobre zdanie, oraz z ludźmi, którzy wynieśli mnóstwo wiedzy i zdobyli pracę bo bootcampie szkoły, co do której wiedziałam, że w ogóle nie weryfikuje wiedzy zatrudnianych trenerów.

Drugim powodem jest to, ile bootcampy kosztują. Żeby polecić Wam kurs, za który zapłacicie kilka lub kilkanaście tysięcy złotych, być może zaciągając kredyt lub wydając ostatnie oszczędności – musiałabym być absolutnie przekonana, że ten kurs i ta szkoła zapewnia najwyższą jakość nauki. Obecnie nie mam takiej pewności co do żadnej z obecnych na rynku szkół.

O wyborze szkoły programowania mam zamiar za jakiś czas napisać osobny, obszerny artykuł.

Poniżej podaję jednak listę najważniejszych rzeczy, jakie warto sprawdzić na etapie weryfikowania, czy dany bootcamp jest wart Waszych pieniędzy.

  1. Kim są uczący w szkole trenerzy? Czy są praktykami, czy zajmują się tylko prowadzeniem szkoleń? Czy da się znaleźć w Internecie jakieś opinie na ich temat?
  2. Co dokładnie znajduje się w programie bootcampu? Czy jest to tylko nauka języka programowania, czy też dodatkowe elementy jak frameworki, git i SQL. Czy po skończeniu bootcampu będziemy mieć podstawy do dalszej nauki, czy będziemy gotowi żeby iść na rozmowę kwalifikacyjną?
  3. Jak wygląda harmonogram bootcampu? Czy szumnie ogłaszane 240h nauki, to tak naprawdę nie jest 100h kursu, 80h pracy własnej w domu i 60h robienia projektu (również w domu)?
  4. Jaka jest procedura reklamacji w danej szkole programowania. Co będziemy mogli zrobić, jeśli prowadzący zajęcia trener będzie niekompetentny lub mało pomocny?
  5. Na czym polega gwarancja zatrudnienia oferowana w danej szkole i jakie warunki będziemy musieli spełnić, aby ją otrzymać. I co w sytuacji, gdy pomimo gwarancji zatrudnienia nie dostaniemy pracy? Czy szkoła zwraca całość ceny kursu, czy tylko część?

Jak samodzielnie przygotować plan nauki

Jeśli uczymy się samodzielnie, lub chcemy rozszerzyć wiedzę zdobytą na bootcampie, to musimy przygotować harmonogram i plan nauki. Ale jak mamy to zrobić nie mając jeszcze pojęcia o programowaniu? Jak zdecydować co powinno znaleźć się w naszym planie, które technologie są ważne, a które mniej i na co powinniśmy poświęcić najwięcej czasu?

Aby stworzyć taki plan, musimy spisać wszystkie technologie, których znajomość jest niezbędna, aby móc zacząć pracę w interesującej nas dziedzinie programowania.

Jak to zrobić? Przeglądając ogłoszenia o pracę.

W tym celu należy zalogować się na jeden z serwisów oferujących pracę dla programistów np. Bulldogjob albo Justjoinit i przeanalizować oferty pracy, na jakie chcielibyśmy aplikować. Z ofert tych powinniśmy wypisać powtarzające się technologie i na tej podstawie ułożyć listę tematów, które będziemy musieli opanować.

Przykład 1 – dla osoby chcącej zostać Młodszym Programistą Pythona specjalizującym się w aplikacjach webowych będą to: Python, Django lub Flask, PostgreSQL, Git.

Przykład 2 – dla osoby chcącej pracować jako Młodszy Programista Front-End będzie to: HTML, CSS, JavaScript, React albo Angular, Git.

Pamiętajmy, aby tworząc listę potrzebnych nam technologii nie przesadzić! Jeśli postanowimy nauczyć się wszystkiego co przewinęło się przez interesujące nas ogłoszenia, to prawdopodobnie zadanie nas przerośnie i zniechęcimy się na długo przed ukończeniem nauki.

Warto też wiedzieć, że w zdecydowanej większości przypadków ogłoszenia o prace pisane są na wyrost – firmy umieszczają w nich opis kandydata idealnego, który zna wszystkie używane w danej firmie technologie. Nie oznacza to jednak, że nie będą skłonne zatrudnić osoby, która zna tylko te najważniejsze, a reszty gotowa jest się nauczyć.

Czy warto starać się zdobyć certyfikaty

Od wielu osób, które opowiadały mi o swojej nauce programowania usłyszałam bardzo podobne zdanie:

Wiesz, wahałem się/wahałam się czy wydawać tyle kasy na bootcamp, ale uznałem/uznałam, że warto, bo szkoła oferuje certyfikat ukończenia. To chyba będzie dobrze wyglądało w moim CV, nie?

Drugą, równie często spotykaną wypowiedzią było:

Ktoś: Robię kursy na Coursea (lub edX, lub jeszcze innej platformie).

Ja: O, to dobrze, fajnie, że za darmo.

Ktoś: No nie, bo jednak za te certyfikaty trzeba zabulić. Tak od 50 do 100 dolarów za kurs.

Zastanawiałam się dłuższą chwilę jak ująć to, co chcę powiedzieć w języku, którego wypada używać na blogu. Nie udało mi się wymyślić odpowiedniej formuły, więc po prostu napiszę to, co ciśnie mi się na myśl.

Moi drodzy! Błagam Was, zostawcie sobie te pieniądze w kieszeni i wydajcie na coś bardziej przydatnego. Albo zachomikujcie na czarną godzinę. Albo kupcie za nie drogiego szampana, którego otworzycie w dniu podpisania umowy o pracę!

Powiedzmy sobie jasno: certyfikaty ukończenia bootcampów i kursów internetowych nie mają żadnego znaczenia dla przyszłych pracodawców. Żadnego.

I piszę to jako autorka kursu internetowego, po ukończeniu którego dostaje się certyfikat.

Czy to znaczy, że nie polecam swojego własnego kursu? Nie.

Wyjaśnijmy więc sobie teraz o co z tymi certyfikatami chodzi

Problem z tego typu certyfikatami polega na tym, że może je dostać każdy kto zapłaci i bynajmniej nie oznacza to, że ta osoba posiadła jakąkolwiek wiedzę.

Szkoły programowania

Jeśli zapiszemy się na bootcamp w szkole programowania, to w większości przypadków, aby otrzymać certyfikat jego ukończenia nie musimy robić nic. Owszem, szkoły sprawdzają obecność na zajęciach i niektóre wymagają uzyskania frekwencji powyżej 50%, aby uzyskać certyfikat. Nikt jednak nie będzie wymagał od nas w tym celu udowodnienia, że opanowaliśmy materiał. Mówiąc inaczej: możemy na zajęciach patrzeć w sufit, przeglądać internet w telefonie albo drzemać, a certyfikat ukończenia i tak dostaniemy.

Dlaczego tak się dzieje? Ponieważ szkoła programowania jest po prostu firmą, a wy jesteście jej klientami. Z punktu widzenia biznesowego firma ta chce, aby klient był maksymalnie zadowolony i polecił ją znajomym. Czy tak się stanie, jeśli osobie niezaangażowanej w kurs odmówi się wydania certyfikatu? Raczej nie.

Zwróćmy też uwagę na słowo “ukończenia”. Certyfikat ukończenia kursu nie mówi, że czegoś się na nim nauczyliśmy. Certyfikat mówi tylko, że ukończyliśmy kurs.

Z tego mechanizmu doskonale zdają sobie sprawę pracodawcy i dlatego właśnie z ich punktu widzenia certyfikat ukończenia bootcampu nie będzie miał żadnego znaczenia. Będzie jedynie potwierdzał, że dana osoba zapiała się na bootcamp i czasem na nim pojawiała. A czy czegoś się na nim nauczyła, to zupełnie inna sprawa, którą taki pracodawca z pewnością będzie chciał zweryfikować samodzielnie.

Do tej wypowiedzi chciałam dodać trzy klauzule.

Pierwsza: nie sprawdziłam ofert i warunków uzyskania certyfikatów we wszystkich szkołach programowania na rynku. Wiem jednak, że tak to wygląda w znakomitej większości z nich, i że właśnie taka opinia o wartości certyfikatów panuje wśród pracodawców.

Druga: nie oznacza to, że uważam bootcampy za bezwartościowe. Dobry bootcamp może być świetnym sposobem na szybką naukę programowania. Uważam certyfikaty ukończenia bootcampów za bezwartościowe.

Trzecia: trochę inaczej wygląda sytuacja w momencie, gdy uczestniczymy w bootcampie z gwarancją pracy. O tym, jak ten zapis rozumieć i czy kryją się w nim jakieś pułapki będę pisała za jakiś czas w osobnym tekście. Natomiast w momencie, gdy szkoła programowania zobowiązuje się nam pomóc znaleźć pracę, jednocześnie nakłada na nas obowiązek zdania wewnętrznych egzaminów i złożenia projektu. Jest to logiczne, bo trudno znaleźć pracę komuś, kto niczego się nie nauczył.

Kursy programowania online

Jeszcze mniej wiarygodne są certyfikaty ukończenia kursów programowania online. Podam Wam przykład ze znanego mi podwórka, czyli kursów na Udemy:

Aby uzyskać certyfikat ukończenia kursu na Udemy, należy zaznaczyć “ptaszka” przy każdej lekcji, jaka wchodzi w skład kursu i voila! Mamy certyfikat.

10 minut klikania i mogę mieć certyfikat ukończenia kursu, który trwa 34 godziny.

A co jeśli kurs zawiera quizy, albo zadania z programowania? Nie szkodzi, mamy nieskończoną ilość prób, po nieudanej odpowiedzi zwykle pojawia się podpowiedź, możemy też zajrzeć do sekcji Q&A, w której często znajdują się dyskusje, a co za tym idzie, odpowiedzi na dane pytania.

Podobnie jest z kursami na innych platformach online. Tak długo, jak mamy możliwość oszukiwania podczas uzyskiwania certyfikatu, ten certyfikat nie będzie miał dla pracodawcy znaczenia.

Dla jasności: moja opinia na temat certyfikatów odnosi się tylko do certyfikatów ukończenia bootcampów oraz kursów online. W świecie IT istnieją liczące się certyfikaty, jak np. certyfikat CISCO, certyfikaty Linuxowe czy certyfikaty potwierdzające znajomość Javy. Uzyskuje się je poprzez zdanie egzaminu w siedzibie wydającej certyfikat organizacji lub u certyfikowanego partnera. Nie jest to łatwe. I nie wolno oszukiwać.

Podsumowując

Niezależnie od tego, jaką metodę nauki przyjmiemy, czy będzie to bootcamp, czy samodzielna nauka – etap nauki programowania będzie dla nas trudny.

Naprawdę mało jest na świecie osób, które bez żadnego wysiłku przyswoją obce dla nich koncepcje instrukcji warunkowych, funkcji i programowania obiektowego. Z mojej praktyki instruktora wynika, że właśnie te trzy etapy to najczęstsze momenty zwątpienia wśród uczących się.

Nie piszę tego, żeby Was straszyć. Przeciwnie. Uważam, że jeśli trafiliście na tego bloga i dobrnęliście do końca tego długiego artykułu, to znaczy, że macie dużą motywację do nauki. Uważam również, że zmotywowana osoba z tą nauką sobie poradzi.

Mówię Wam o tym, że będzie trudno po to, żebyście nie poczuli się zaskoczeni pierwszym kryzysem i pierwszą chwilą zwątpienia. Pierwszym momentem, gdy po prostu stwierdzicie, że nie rozumiecie co w kodzie się dzieje i macie tego wszystkiego dość. Chcę, żebyście wiedzieli, że taki moment nie oznacza porażki i że przechodził go prawie każdy programista.

Wyjdźcie wtedy z domu, idźcie na rower, prześpijcie się. Zróbcie dwa dni przerwy od nauki, ale potem do niej wróćcie. Gwarantuję, że za drugim podejściem zrozumiecie trochę więcej.

Krok po kroku, szybciej lub wolniej, jeśli się nie poddacie, to w końcu dojdziecie do celu.

To jest artykuł z serii “8 kroków by zostać programistą“. Poniżej znajdują się odnośniki do pozostałych artykułów z serii:

(Artykuły zaznaczone na szaro nie zostały jeszcze opublikowane.)

Jeśli nie chcesz ich przegapić – zapisz się na mój newsletter i o każdym nowym artykule poinformuję Cię mailowo.

Jeśli uważasz ten artykuł za wartościowy, to będzie super jeśli podzielisz się nim ze swoimi znajomymi!

komentarzy 11

  • Marcin

    Oj a ja uczę się obecnie głownie z książek (ebooków) i pomimo iż nie znalazłem pracy czy nie zdałem egzaminów sprawdzających moja wiedzę oceniam iż materiał który do tej pory przerobiłem rozumiem i potrafię zastosować. W zasadzie wady uczenia z książki (które przytoczyłaś) lub ebooka można by przypisać również do youtube. Reasumując wszędzie tam gdzie to od uczącego zależy czy podejmie aktywne działanie w kierunku nauki poprzez ćwiczenia.
    Osobiście uważam ( podobnie jak i autorka książka “Głowa do liczb”) że jeżeli wykonujemy samodzielnie ćwiczenia przytoczone w książce to aktywujemy nasze myślenie programistyczne i uczymy się skutecznie. To jest klucz do sukcesywnego uczenia się z książki. Wymaga to od nas jednak samodyscyplina i uczciwości wobec samego siebie: nie należy sięgać do rozwiązania od razu a jeżeli już to musimy zrobić to należy wrócić do ćwiczenia po odpoczynku od nauki i zrobić go do skutku samodzielnie. Samodzielna nauka kosztuje nas więcej czasu ale jest finansowo o wiele tańsza. U mnie osobiście podczas rozwiązania samodzielnego jakiegoś problemu pojawia się ta wewnętrzna moc i pewność siebie że dam sobie radę – nawet wtedy gdyby mądrzejsi koledzy z zespołu byli niedostępni.
    PS: W nauce Pythona korzystam nie z jednej a z kilku książek – każdy autor inaczej podchodzi do uczenia i to pomaga zrozumieć niezrozumiane 🙂

  • Wojtek

    Co do nauki z książek, to ja bym ich tak nie skreślał. Sam podstaw Javy nauczyłem się przed wszystkim z książki. Oczywiście samo czytanie to droga do nikąd. Ja przepisywałem KAŻDY przykład z książki i często się nim bawiłem, zmieniając coś i patrząc co się dzieje. Dodatkowo w książce były do każdego rozdziału i podrozdziału zadania, więc praktyka była uskuteczniana. Bo właśnie o praktykę chodzi najbardziej. Baz klepania kodu nikt się programowania nie nauczy.
    Dla mnie plusem książki na początku nauki było jeszcze jedno. Zanim sprawiłem sobie drugi ekran, przeskakiwanie między oknami było mordęgą. A książka leżała sobie obok otwarta tam gdzie chciałem 😉

  • Marta

    Hej Marcin i Wojtek!
    Odpiszę Wam zbiorczo, bo Wasze wypowiedzi w dużej mierze się pokrywają.
    Dzięki za pokazanie innego punktu widzenia na naukę z podręczników.
    Z tego co obaj piszecie, to zastosowaliście podejście, o którym napisałam w artykule: Jedynym sposobem, aby nauczyć się programować z podręcznika, jest robienie tego siedząc przy komputerze i próbując od razu zaprogramować to, o czym aktualnie czytamy.
    I za to szacunek 🙂 Mając tyle samozaparcia można nauczyć się programować w zasadzie z każdego źródła.
    No i niezłym argumentem za podręcznikiem jest brak drugiego ekranu – przeskakiwanie między oknami jest faktycznie męczące (choć można też spróbować podzielić ekran na pół – jeśli jest wystarczająco duży).

  • Michał

    Cześć,
    Co sądzisz o nauce z “korepetytorem” ? Powiedzmy, że wybrałem Javę, zrobiłem plan nauki (tutaj może, ktoś doradzi czy wstępnie dobry, opiszę go poniżej) i w momencie napotkania problemu płacę za lekcję online z osobą, która mi to wyjaśni.

    Plan kursy na Udemy – java, bazy SQL, spring, hibernate.

    • Marta

      Hej Michał!
      Szczerze mówiąc nie miałam okazji wyrobić sobie opinii o pracy z korepetytorem, bo sama z tego nie korzystałam ucząc się programowania, a uczniów na korepetycje do siebie nie przyjmuję. Wydaje mi się, że korzystanie z takiej opcji może być niezłym pomysłem, jeśli będziesz używał jej w sytuacjach, gdy utknąłeś w kodzie i nie masz pojęcia jak ruszyć dalej. Starałabym się jej jednak nie nadużywać i zawsze najpierw próbować samemu pokonać problem – bo w ten sposób najwięcej się nauczysz.
      No i pozostaje kwestia finansowa – podejrzewam, że stawki korepetytorów nie są niskie, więc trzeba dobrze skalkulować czy wydana w ten sposób kwota nie będzie zbliżona do ceny bootcampu – a jeśli tak, to czy nie lepiej iść na bootcamp i mieć instruktora dostęnego przez cały czas nauki.
      A jeśli chodzi o plan nauki Javy – wygląda ok na początek 🙂 Tylko nie zapomnij o gicie!

      Jeśli są tutaj osoby, które z takiego wsparcia korzystały, to bardzo proszę Was o podzielenie się wrażeniami i doświadczeniami z pracy z mentorem/korepetytorem. Fajnie też, gdybyście podali jakie płaciliście stawki za godzinę.

  • Michał

    Ja podczas nauki nowego języka korzystam też z https://www.codewars.com Zadania są ciekawe, uczą algorytmicznego myślenia, jest wiele poziomów więc można stopniowo podejmować się coraz trudniejszych zadań. Dodatkowo po rozwiązaniu (lub odpuszczeniu) zadania możemy obejrzeć inne rozwiązania i w jakiś sposób się zainspirować np. widząc, że kilka linii kodu w Pythonie można zmieścić w jednej linijce. Mi akurat działa to na ambicję i kolejne zadanie próbuję rozwiązać korzystając z nowo poznanych możliwości języka. No i jest jeszcze aspekt psychologiczny – za poprawne rozwiązanie wzrasta nam doświadczenie i awansujemy na kolejne poziomy co dodatkowo może motywować do zrobienia jeszcze jednego zadania.
    Oczywiście codewars poleciłbym jako metodę do ugruntowania wiedzy i nabrania płynności w posługiwaniu się językiem 🙂

    Jeśli idzie o mnie to najczęściej zaczynam naukę od obejrzenia jakiegoś tutorialu z podstaw na yt (warto poprosić o polecenie jakiegoś kanału na grupach facebookowych albo forach) i wykonywania tego samego co prowadzący. Jakoś łatwiej dociera do mnie wiedza gdy widzę jak powstaje kod i słucham wyjaśnień prowadzącego. Analizowanie całej strony kodu w książce na początku nauki może zniechęcić, ale posiłkuję się książką żeby dogłębniej poznać język, tym bardziej, że często książki pisane są przez prawdziwych guru danego języka. Gdy czytam o czymś co widziałem wcześniej na filmiku to pomaga mi to zrozumieć dane zagadnienie i poszerzyć wiedzę. Czytanie składnia do refleksji nad tym co właśnie przeczytaliśmy i nieraz czuję się jakby koła zębate wskoczyły na swoje miejsce.
    Można czytać przed spaniem, albo gdy nie mamy dostępu do komputera (lub chcemy od niego odpocząć), ale nie polecam nastawiać się na przeczytanie całej opasłej księgi od dechy do dechy bo można się zniechęcić.

    Następny krok po opanowaniu podstaw samego języka to stworzenie jakiegoś projektu. Ja akurat lubię korzystać z kursów na udemy/yt które polegają na stworzeniu jakiegoś projektu. Za pierwszym razem jesteśmy prowadzeni za rączkę przez autora, ale można za to możemy się nauczyć jakiejś metodyki tworzenia większych projektów od kogoś kto ma w tym doświadczenie. Wymyślenie sobie dużego projektu i rzucenie się na głęboką wodę samemu może być rozwijające, ale też może spowodować łapanie brzydkich wzorców (upychanie wszystkiego do jednej klasy, brak jakiejś logicznej i spójnej struktury plików w projekcie itp).
    Są też książki uczące frameworków poprzez rozwijanie projektu i dorzucanie nowych elementów (bazy danych, frontend, testy jednostkowe) w kolejnych rozdziałach. Autorami tych książek też są często programiści z ogromnym doświadczeniem popartym pracą u gigantów branży IT.

    Finalny krok to tworzenie samemu od zera wymyślonych przez siebie projektów.
    Ja zacząłem tworzyć platformę do dzielenia się przepisami kulinarnymi. Parsowałem strony z których biorę pomysły na dania i przepisy indeksowałem w Elasticsearchu. Później stworzyłem w Springu backend który pozwalał wyszukiwać przepisy i zwracał je w formie REST API. Następnie miał powstać frontend w Vue.js a w głowie miałem kolejne pomysły – baza relacyjna z użytkownikami i przepisami które lubią, możliwość dodawania swoich przepisów i dzielenia się z innymi, system ocen, integracja z mediami społecznościowymi itp.
    W międzyczasie wysyłałem masę CV, chodziłem na rozmowy i w końcu udało mi się dostać pierwszą pracę. Może kiedyś dokończę ten projekt, tym bardziej, że jestem bogatszy o doświadczenia nabyte w pracy.
    Taki własny projekt też jest bardzo przydatny podczas rozmowy rekrutacyjnej, bo praktycznie na każdej pytali mnie o własne projekty.

    Dla mnie takie podejście się sprawdziło, ale zajęło to trochę czasu i wymagało samozaparcia.
    Chętnie przeczytałbym co Ty sądzisz o moim podejściu 🙂

    • Marta

      Hej Michał!
      Bardzo podoba mi się Twoje podejście. Jest iteracyjne i rozsądne. Świetnym spostrzeżeniem jest to, że warto tworzyć pierwszy projekt w ramach kursu lub podręcznika, który przez projekt prowadzi, po to, żeby nie wyrobić sobie złych nawyków i nie nałapać złych wzorców. Nie dziwię się, że z takim podejściem udało Ci się już zdobyć pierwszą pracę.
      O tym jak ważne jest stworzenie własnego projektu mam zamiar mówić w kolejnym artykule z serii “8 kroków… ” i pozwolę sobie powołać w nim na Twój przykład. Mam nadzieję, że nie masz nic przeciwko 🙂
      Dzięki za komentarz, to super, że podzieliłeś się z innymi czytelnikami swoim doświadczeniem!

  • AroBo

    Hej Marta.
    Ja też już od jakiegoś czasu krążę po tych tematach i zastanawiam się nad bootcamp’em. Generalnie na początku chciałem posprawdzać czym są różne technologie i co tak naprawdę by mnie interesowało i sprawiało radość z pracy w danej technologii. I tak zacząłem korzystać z wiedzy Pana Mirosława Zelent, na Youtube, który zrobił fajne kursy na wejście do danej technologii – i dla mnie – tłumaczył to w bardzo fajny merytoryczny sposób, na ciekawych przykładach. Od razu je sobie modyfikowałem, wprowadzając własne dane, co sprawiało mi niemałą frajdę. I tak zobaczyłem C++, html i css (i dowiedziałem się że to nie języku programowania), JS, PHP, bazy danych MySQL, – oczywiście tylko podstawy, ale dało mi to wgląd, z czym się to je.

    Następnie trochę poszperałem na udemy – kurs z Javy, ale problem taki, że wiele kursów może i ocenianych wysoko, z czasem stają się nieaktualne, a sposób tłumaczenia niektórych naszych rodaków sprawiał, że cały temat się zaciemniał ;P albo że robi się to tak, ale już gdzieś znalazłem, że robi się to zupełnie inaczej, bo robiło się tak kiedyś.

    Fajnie, że trafiłem na Twój blog, bo daje też nowej motywacji do nauki i działania.
    Dzięki za rzeczowe informacje.

    • Marta

      Cześć AroBo 🙂
      Jeśli chodzi o bootcamp to niedługo planuję post na temat tego jak go dobrze wybrać. Może będzie dla Ciebie przydatny 🙂
      Podoba mi się Twoje podejście polegające na tym, że postanowiłeś popróbować różnych technologii żeby zobaczyć co Ci pasuje. To chyba najlepsza możliwa strategia, choć trochę bałabym się ją wszystkim zalecać, bo miałabym obawy, że osoba początkująca zostanie przytłoczona ilością nowych informacji na temat różnych języków. Nie miałeś z tym problemu?
      Zwróciło moją uwagę Twoje zdanie o “sposobie tłumaczenia rodaków” – uświadomiłeś mi, że słyszę negatywną opinię na ten temat już kolejny raz. Przy okazji mojego kursu na Udemy kilka osób pisało mi w wiadomościach, że “dobrze się wysławiam po polsku” co na początku trochę mnie zaskakiwało – no bo w końcu jestem Polką. Ale wygląda na to, że chyba faktycznie problem klarowności przekazu w naszym języku istnieje. Nie spotkałam się z nim, bo sama robię kursy tylko po angielsku, ale chyba eksperymentalnie kolejny spróbuję po polsku żeby porównać.
      No i cieszę się, że trafiłeś do mnie i oceniasz wysoko rzetelność informacji. Bardzo się staram, żeby pisać merytorycznie. Dzięki 🙂

      • Arobo

        Hej.
        Było tego trochę, ale dzięki temu już wiem co mnie bawi, a co kompletnie nie interesuje. Powolutku a do celu. Generalnie najbardziej mnie w tym takim uczeniu wkurza, że mam świadomość, że gdybym zajął się tym na maksa, a nie traciłbym czasu na pracę zawodową (tak, praca zawodowa, to strata czasu), to wiem, że ten rozwój byłby o wiele szybszy i skuteczniejszy. A tak kiedy uda się wykupić, 1-2 godziny dziennie to już jest coś.
        Takie doświadczenie mam właśnie ze swoich studiów, tego czego uczyłem się przez 3,5 lata na studiach – to po roku pracy wydaje mi się, że miałem to już opanowane.
        I takiego połączenia sobie życzę 😉

        A propos języka… zaczynam uczyć się z angielskich źródeł, bo zanim ktoś je przetłumaczy na polski to często są już nieaktualne.

        Pozdrawiam,

        • Marta

          Cześć 🙂
          Rozumiem frustrację, ja ucząc się programowania miałam sporo czasu (po powrocie z pracy miałam do dyspozycji zwykle cały wieczór, choć oczywiście cierpiało na tym życie towarzyskie i sport), ale teraz pisząc bloga też czasami muszę walczyć o tą 1 czy 2h dziennie. A to, jak wiesz, mało, jeśli człowiek jest w jakiś temat wkręcony.
          Z drugiej strony masz dobre podejście: “powolutku, a do celu” to zdecydowanie lepsze nastawienie niż “nauczę się wszystkiego w dwa miesiące, a za trzy będę już miał pracę” – bo to się jednak zwykle nie udaje.
          A co do pracy zawodowej, cóż, wszystko ma swoje dobre i złe strony. Wiem, że część moich czytelników nie ma aktualnie pracy i dla nich cały proces przebranżowienia się jest dużo bardziej stresujący, bo za coś jednak trzeba żyć. Oni mają więcej czasu w ciągu dnia, ale Tobie się aż tak nie śpieszy. Życzę więc, żeby tymi małymi krokami udało się dojść do celu. A zresztą nauka po 5-6 godzin dziennie zwykle jest mało skuteczna.
          Pozdrawiam 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

LinkedIn
Share