Jak nauczyć się programowania od zera?

Wiele osób pyta, jak nauczyć się programowania od zera. Z tego wpisu dowiesz się, jak to zrobić. Programuję od 20 lat. Dzielę się doświadczeniami moimi oraz osób, którym pomagałem w rozwijaniu się w ten dziedzinie zawodowej.

Cześć! Zanim zaczniesz czytać artykuł zapraszam Cię na newsletter programistyczny. Dzięki niemu już ponad 1 000 osób takich jak Ty oszczędza setki złotych na materiałach do nauki programowania!

Bardzo dużo osób pyta, jak zacząć programować od zera. Codziennie czytam komentarze tego typu. Na przykład, ktoś pracuje w zupełnie innej branży i chce zostać testerem oprogramowania. Albo już robi coś w informatyce, ale teraz by chciał wskoczyć poziom wyżej i zacząć programować. Te wszystkie osoby łączy chęć rozpoczęcia swojej przygody z programowaniem. Jednak ta dziedzina jest tak rozległa, że nie wiedzą jak zacząć. A każdy mówi co innego.

Z tego wpisu dowiesz się, jak nauczyć się programować od zera. Dostaniesz też kilka podpowiedzi, które mogą Ci pomóc w tym procesie. A więc zaczynamy:

Aby nauczyć się programować należy wykonać następujące kroki:

1. Rozeznaj się

Obecnie programowanie jest bardzo rozległą dziedziną. Dlatego dobrze zorientować się w jakich kierunkach można iść. Ponieważ znając je, możesz wybrać odpowiedni dla Ciebie. Pozwala to też dobrać technologie, których powinieneś/aś się nauczyć.

Na początek mogę powiedzieć o programistach stron internetowych. Są to osoby, które korzystają na przykład z WordPressa, albo innego systemu zarządzania treściami (CMS) i dzięki swoim umiejętnościom programistycznym dopasowują jego działanie do potrzeb klienta. Aby to zrobić osoby takie powinny znać głównie JavaScript, HTML i CSS.

Programista stron internetowych – to jest chyba najbardziej rozpowszechnione rozumienie programisty wśród społeczeństwa.

Ale programowanie to nie tylko strony w WordPressie. To znacznie więcej. Programowanie dzieli się na kilka księstw. Najpierw podam trzy przykłady księstw frontendu. Frontend to programowanie czegoś, co, w uproszczeniu, widzi klient / użytkownik tj. interfejsu:

Programowanie aplikacji internetowych – budowanie biznesowych aplikacji internetowych (jak np. Twojego banku, albo porównywarki filmów). Są to specyficzne aplikacje spełniające wymagania określonej grupy użytkowników. Nie służą głównie do zarządzania treścią (jak WordPress) ale zarządzania procesami (a więc tym, żeby ludzie mogli, w skrócie, zrealizować jakieś zadania). Do JavaScriptu, HTML i CSS te osoby muszę znać dodatkowe technologie w zależności od projektu np. SCSS, TypeScript i któryś z frameworków np. Ember, Angular, Vue albo React. (Framework to szkielet budowy aplikacji, z gotowymi funkcjonalnościami).

Programowanie aplikacji desktopowych – podobnie jak wyżej, tylko, że dotyczy budowania aplikacji, które są instalowane na przykład na systemie Windows. Ta grupa różni się od pierwszej głównie tym, że używa innych technologii. Na przykład programowanie aplikacji na system Windows odbywa się na przykład w języku C# z użyciem .NET Framework-a.

Programowanie aplikacji mobilnych – polega na budowaniu aplikacji instalowanych na urządzeniach mobilnych. Głównie na urządzeniach z systemem operacyjnym Android i iOS (iPhone, iPad). Programowanie na Androida odbywa się głownie w Javie, a na iOS w języku Swift. Na każdy z systemów są osobne frameworki. Są też takie, które pozwalają pisać na oba systemy jednocześnie.

To były księstwa frontendu. Przejdźmy teraz do księstw backendu. Backend to, w uproszczeniu, programowanie czegoś, czego nie widzi klient / użytkownik, a co jest niezbędne do działania systemu:

Programowanie baz danych – bazy danych to np. MySQL, MSSQL. Baza danych to, w skrócie, taki bardziej zaawansowany arkusz kalkulacyjny. Baza danych przechowuje jednak więcej danych i pozwala programistycznie dodawać te dane, zmieniać i zapisywać. Dodatkowo można programować różne reguły obsługi tych danych. Np. kiedy odrzucać dane jako niekompletne, jak zbierać dane z kilku tabel naraz itd. Systemy bazodanowe korzystają ze swoich odmian języka SQL (np. T-SQL dla MSSQL), które pozwalają wykonywać różne operacje na danych. Istnieją też bazy danych, które nie korzystają z języka SQL. Skrywają się pod mistyczną nazwą NoSQL.

Programowanie backendowe – programista backendowy przetwarza dane między bazą danych a frontendem, albo między różnymi systemami, które mają współpracować. Właściwie prawie każdy język programowania może być używany do backendu. Ale z powodu specyficznych wymagań wobec backendu stosuje się inne języki niż do frontendu.  Na przykład: PHP, Ruby, Python, Java, ale też czasem JavaScipt.

Programiści dzielą się na frontendowców i backendowców. Ale są też programiści fullstackowi. Programista fullstack to ktoś, kto zna technologie frontendowe i backendowe. Może zająć się wszystkim co jest potrzebne do napisania aplikacji: bazą, backendem i interfejsem.

Czytaj podobne  Świat zmieniają ludzie, którym się nie chce

Jednak to nie są jeszcze wszystkie księstwa i często pomija się też te inne. Otóż mamy np. mnóstwo coraz bardziej zaawansowanych urządzeń, sensorów, które dostarczają dane do systemów informatycznych. One też muszą być oprogramowane. Jest to  programowanie wbudowane. Programowanie wbudowane odbywa się głównie w C i C++, ponieważ te języki pozwalają korzystać z niższego poziomu abstrakcji i oszczędzać zasoby drobnych urządzeń.

Kolejna rozwijająca się dziedzina programowania to analityka danych. Programiści analityki danych korzystają z bogatych zasobów danych w firmach i opracowują na ich podstawie wyniki, z których można wyciągać biznesowe wnioski. Programiści tacy korzystają z różnych języków, w tym z Pythona i R (tak to nazwa języka, po prostu litera R).

Kolejna dziedzina programowania: legacy. Programiści legacy znają technologie, które są używane, ale nie są popularne w nowych projektach. Utrzymują systemy, które muszą działać, a były napisane lata temu.

Jest wiele takich księstw programistycznych, których tutaj nie będę już rozpisywał, ale które można znaleźć.

To koniec tego punktu. Jakie to wszystko ma znaczenie? Gdy wiesz, która dziedzina Cię interesuje, możesz dobrać technologie, których powinieneś/aś się nauczyć. A to już jest łatwiej, bo nie uczysz się 200 technologii, ale kilku potrzebnych w danej dziedzinie.

Powiedzmy, że wiesz już jaka dziedzina Cię interesuje, co dalej?

2. Wybierz technologie

Aby pójść dalej musisz dokonać wyboru, jakich technologii powinieneś/aś się uczyć. Szczerze mówiąc trudno tu liczyć na dobrą poradę. Obojętnie, czy kogoś zapytasz, albo pójdziesz na studia czy bootcamp. Ponieważ w każdej z tych sytuacji możesz skończyć w sytuacji, gdy uczysz się tego co jest: a) modne, b) popularne, c) co zna osoba, która Cię uczy, d) co używa osoba, która Cię uczy. A to nie zawsze jest dobry wybór. Ale mam dla Ciebie dobrą wiadomość. Można to zrobić lepiej i zrobić to dobrze.

Poczytaj z jakich technologii korzystają firmy pracujące w dziedzinie programowania, która Cię interesuje. Poszukaj ogłoszeń o pracę i zobacz jakie technologie pojawiają się najczęściej. Nie zrażaj się tym, że w ogłoszeniu jest 20 technologii. To jest fikcja, ludzie wpisują tam rzeczy, które później nie są potrzebne.

Gdy to zrobisz powinieneś/aś skończyć się z 3-4 technologiami. To kluczowy zestaw do nauki. Np. dla programowania aplikacji webowych takim zestawem jest HTML, CSS i JavaScript. Gdy będziesz mieć tę listę 3-4 technologii możesz skupić się tylko na niej.

Często czytam jak ludzie piszą, że znają trochę tego i tamtego, kilkanaście technologii, ale dalej nie wiedzą jak zostać programistą, są zagubieni. No faktycznie, programowanie to baaardzo rozległa dziedzina, nie możesz nauczyć się wszystkiego. Musisz wybrać dziedzinę i trzymać się jej. W ten sposób zwiększasz swoje szanse na powodzenie.

3. Wybierz metodę nauki

To jest bardzo ważny punkt i zaraz napiszę dlaczego. Każdy ma swoją opinię jak programista powinien się uczyć. Jeśli przeglądałeś/aś fora to znajdziesz mnóstwo wypowiedzi na ten temat. Jeden radzi kursy wideo z YouTube’a. Inny poradzi jakąś książkę, jeszcze ktoś powie, że bootcamp jest najlepszy. Prawdziwy programista uczy się z dokumentacji. Dużo programistów niestety mówi też, że studia są niepotrzebne, nad czym ubolewam osobiście.

Nie wiesz w końcu co jest najlepsze. I masz prawo nie wiedzieć. Ponieważ każdy mówi co innego. Ja osobiście bym mógł polecić Ci ebooki i kursy wideo. Prowadzę newsletter, gdzie takie materiały promuję, gdy można je zdobyć po taniości. Ale to by była ściema i nieuczciwość.

Tak naprawdę nie ma znaczenia jak będziesz się uczyć. Ważne jest tylko to, czy będziesz się uczyć. A pamiętasz jak uczyłeś/aś się w szkole, to jak to wyglądało? Czy nauczyciel skakał z tematu na temat bez żadnego związku? Czy kazał czytać ten artykuł, zaraz potem obejrzeć ten filmik 3-minutowy, a za chwilę jeszcze iść na jakiś kurs dodatkowy? No nie. A w szkole uczyłeś/aś się jednak rzeczy trudnych. Które nie zawsze Cię tak bardzo interesowały. I jednak coś tam się zapamiętało.

To dlatego, że nauka w szkole odbywa się systematycznie i metodycznie. Krok po kroku. To jest system, który został wypracowany przez setki lat. Jeśli uważasz, że nie jest skuteczny, to zapytaj się: czy wiesz co to pantofelek? No wiesz. A kogo obchodzi pantofelek? Ten system jest aż tak dobry!

Ciebie obchodzi nauka programowania. Najlepsze co możesz dla siebie zrobić, to wybrać systematyczną i metodyczną metodę nauki. Teraz odpowiedzmy sobie szczerze, co jest najbardziej metodyczną i systematyczną metodą nauki? W pierwszej kolejności są to studia. Kadra szkół wyższych ma metodykę i systematykę w małym palcu. Będzie ciężko, ale się nauczysz.

Czytaj podobne  10 fiszek do nauki programowania w Pythonie

Kolejny sposób: książki i ebooki. Przy odrobinie staranności możesz wybrać książkę, która prowadzi krok po kroku po zagadnieniach. Od łatwych do trudnych. Od A do Z. Jednak trzeba lubić czytać.

Kurs wideo albo online – jeśli autor przygotował go metodycznie, oraz omawia zagadnienie od początku do końca – również pomoże Ci w nauce. Szczególnie gdy lubisz uczyć się z nagrań.

Bootcamp – intensywny trening programowania. Też możesz z niego dużo wynieść. Bardzo fajna opcja jeśli lubisz uczyć się w grupie z innymi.

Jedyne przed czym przestrzegam to wybierać niemetodyczne, niesystematyczne i niekompletne materiały. Wyobraź sobie, że zrobiłeś/aś 50% materiału z kursu z YouTube’a (bo za darmo). Ale nie ma ciągu dalszego. Więc szukasz innego kurs. Ale w innym kursie jest trochę czegoś co już znasz. Trochę czego nie znasz. I w ogóle wszystko jest inaczej omawiane. To jest totalnie zniechęcające! Dlatego na początek: materiały od A do Z.

Tuż przed końcem tego punkt chcę zwrócić uwagę na jeden niezmiernie ważny aspekt. Często czytam rady dla początkujących wskazujące materiały w języku angielskim. Nie korzystaj z takich materiałów. Ci ludzie nie wiedzą co robią. Gdy jesteś początkujący/a – nie utrudniaj sobie życia. Jeśli są materiały po polsku, ucz się po polsku. Dlaczego miałbyś/abyś uczyć się języka programowania w języku obcym? Przecież to nonsens. Równie dobrze można by kupić francuski podręcznik do nauki języka chińskiego. Da się. Ale po co?

4. Postaw sobie cel

Stawianie celów bywa pomijane w planowaniu swojej kariery zawodowej. Ludzie zaczynają uczyć się z jakiegoś kursu, później przestają, później pójdą na jakiś bootcamp i tak leci czas. Po paru miesiącach nie pamiętasz już czego się nauczyłeś/aś wcześniej. Niby się uczyłeś/aś, ale co konkretnie osiągnąłeś/aś?

Aby ułatwić sobie naukę fajnie jest postawić sobie jakiś cel. Możesz na przykład poprzysiąc, że przeczytasz 800-stronnicową książkę w ciągu miesiąca. Albo, że skończysz studia podyplomowe, albo zdobędziesz pracę juniora w ciągu 6 miesięcy.

Wszystko lepiej się układa, gdy postawisz sobie cel. Jakoś tak jesteśmy zbudowani. Cele ułatwiają życie. Nauka nie jest łatwa. Programowanie nie jest łatwe. Nauka programowania już w ogóle. Dlatego cel jest tak ważny. A satysfakcja z osiągnięcia celu dalej motywację do dalszej pracy.

5. Ucz się systematycznie

Gdy już masz cel następnym krokiem jest zaplanowanie sobie czasu na naukę. Codziennie chociaż godzina. Ale zawsze ta godzina. I nie żeby obejrzeć kolejny tutorial albo przeczytać artykuł, ale żeby się konkretnie czegoś nauczyć.

Czy można to zrobić łatwiej? Do nauki programowania jest potrzebna koncentracja. Duuużo koncentracji. Wypróbuj to. Ogłoś wszystkim jeszcze dzisiaj: o godzinie 18 przez godzinę będę uczyć się programowania i proszę mi nie przeszkadzać. Wyłącz komórkę, wyloguj się z Facebooka. Oddaj dzieci teściowej, psa sąsiadom.

Zobacz ile się nauczysz! Musisz się trochę odciąć od świata, żeby ogarnąć o co chodzi w programowaniu.

6. Programuj samemu

Na LinkedIn-ie śledzę świetną początkującą programistkę. Przyjęła ona fajną metodę nauki praktycznej. Codziennie stawia sobie za zadanie zrobienie czegoś. Np. jednego dnia: prosty kalkulator. Następnego dnia: prosta strona z okładkami filmów. Robi animowanego GIF-a z tego co zrobiła i wrzuca na LinkedIn-a. Pisze też, czego tego dnia się nauczyła. Uwielbiam ją śledzić, bo robi całkiem ciekawe rzeczy. A ponadto jej metoda jest tym, co sam kiedyś robiłem. Co robił każdy dobry programista, którego znam. Wymyślanie sobie samemu zadań i ich programowanie. Tak właśnie zostajesz programistą/ką.

Łatwiej pod tym względem jest na studiach, w pracy, na bootcampie, czy mając podręcznik z zadaniami. Ponieważ sam/a nie musisz nic wymyślać. To też dobra metoda. Ale czasem takie zadania są nudne, nie pozwalają wykroczyć poza swoje granice. A jak samemu coś wymyślisz? Wtedy trafisz na różne problemy, które wskażą Ci, czego jeszcze w praktyce musisz się douczyć.

7. Pytaj o pomoc innych

Gdy już mowa o problemach. Na początku bardzo trudno jest sformułować, z czym tak naprawdę masz problem. Na przykład, gdy pojawia się jakiś błąd. Jak ubrać problem w słowa? Jak zapytać się o to? Czasem nawet trudno ułożyć poprawnie zapytanie dla wyszukiwarki DuckDuckGo. Kiedyś sytuacja była łatwiejsza. Ponieważ był StackOverflow, grupy, fora, gdzie można było zadać każde pytanie. Można było liczyć na pomoc innych.

Teraz możesz spotkać się z sytuacją, gdy ktoś odpisze “poszukaj w internecie”, albo “było”, albo “znowu”. To jest frustrujące! Niestety. Internet jest pełen odpowiedzi. Ale czego bardziej doświadczeni programiści nie rozumieją, że początkującym trudno jest czasem nawet nazwać swój problem. A przecież oni mieli tak samo! Zapewniam Cię!

Czytaj podobne  [KONKURS] Do wygrania kursy programistyczne

Zachęcam bardzo do tego, żebyś pytał/a. Poszukaj jakiegoś miejsca w sieci dla programistów, albo mentora. I pytaj pytaj pytaj. Faktycznie czasem spotkasz się z niechęcią. Ale niech Cię to nie zraża. A jeśli tak, poszukaj innego, przyjaźniejszego miejsca.

Czym więcej będziesz pytać, tym łatwiej będzie Ci formułować z czym tak naprawdę jest problem. Z czasem Twoje pytania będą coraz lepsze, coraz szybciej dostaniesz odpowiedź. A czasem, gdy poprawnie sformułujesz problem, rozwiązanie znajdzie się samo.

8. Znajdź pracę szybko

Często czytam, że ludzie czekają ze zdobyciem pracy, aż nauczą się jeszcze czegoś tam. I tak mija pół roku. Otóż programowanie to taka dziedzina, że musisz ciągle odświeżać wiedzę. Powiedzmy, że nauczysz się 3-4 technologii które potrzebujesz. Zaczynasz szukać pracę i wpadasz w tarapaty. Pracy można szukać nawet kilka miesięcy! A Ty w tym czasie zapomnisz czego się nauczyłeś/aś.

Dlatego moja rada jest taka, abyś zaczął/ęła szukać pracę tak w połowie nauki. Z kilku względów. Po pierwsze na stanowiska stażysty/juniora każdy pracodawca zakłada, że nie umiesz prawie nic. Po drugie, procesy rekrutacyjne trwają. Zanim dopracujesz CV, zanim douczysz się gotowców na pytania testowe minie czas. Zanim nauczysz się w ogóle rozmawiać podczas rekrutacji bez tremy itd. Samo zdobywanie pracy to też coś czego trzeba się nauczyć.

Także już tak w połowie nauki programowania zacznij szukać i wysyłać CV, prowadzić rozmowy, wdrażaj się już w to. Wtedy gotowość “technologiczna” zbiegnie się z gotowością “rekrutacyjną” i nie będzie niepotrzebnych przestojów.

9. Proś o trudniejsze zadania

Teraz już masz pracę. Ale największa pułapka programowania przed Tobą. Skoro już masz pracę, to możesz sobie odpuścić naukę i po prostu wykonywać podstawione przed Tobą zadania.

Wcale tak nie jest! Miej świadomość, że przeważnie stażystom/juniorom nie daje się trudnych zadań, tylko zadania bardzo proste. Zauważysz, że zajmują Ci coraz mniej czasu, robią się nawet nudne. Jeśli z tym nic nie zrobisz to tracisz czas. Możesz uczyć się kolejnych rzeczy. A nie robić w kółko to samo.

Poza tym pracodawca też widzi, jak stażysta/junior stoi w miejscu i nie podejmuje działań by się rozwijać. Jestem pracodawcą, to widać. A nikt nie chce mieć wiecznego stażysty/juniora.

Więc jeśli widzisz, że coś Ci idzie lepiej, to poproś przełożonego o kolejne zadania. On powinien wiedzieć, żeby dać Ci coś trochę trudniejszego. A jeśli masz wolny czas, bo tak dobrze Ci idzie, to idź po kolejne zadania. To jest bardzo ważne, żeby ciągle uczyć się w pracy, rozwijać.

Jako stażysta/junior musisz się jeszcze bardzo bardzo dużo nauczyć. Na pewno nie chcesz być jednym z tych, którzy piszą w internecie, że im staż/stanowisko juniora nic nie dało, nie nauczyli się niczego. Nie nauczyli się, bo im się nie chciało iść dalej. Marnowali swój czas i pracodawcy.

10. Ucz się nowych technologii

Programowanie to fajna dziedzina, która ciągle się zmienia. To co dzisiaj umiesz, za rok będzie już lekko nieaktualne. Za 5 lat będzie niepotrzebne. Jak już zdobędziesz pracę i trochę ochłoniesz, zacznij uczyć się czegoś nowego. Rozszerz swoje kompetencje. Nie stój z rozwojem za długo w miejscu. Jeśli na przykład zrezygnowałeś/aś ze studiów, może warto wrócić na zaoczne. Pójść na bootcamp, przeczytać jakąś książkę, kurs obejrzeć. Cokolwiek, co sprawi, że będziesz w swoim tempie na bieżąco z technologiami.

To wszystko co jest potrzebne, żeby nauczyć się programowania od zera. To był długi artykuł i podziwiam, że doczytałeś/aś do końca. Podejrzewam, że 99% ludzi tego nie zrobiło. Wygląda na to, że Ci zależy. Zależy to 99% sukcesu. A w związku z tym życzę Ci powodzenia. Programowanie jest świetne i daje wiele satysfakcji zawodowej. Nie zrażaj się i powoli do przodu 🙂

Zachęcam Cię też do zapisania się na mój newsletter programistyczny. Wysyłam w nim informacje, gdy znajdę dobry kurs albo ebook programistyczny w niskiej cenie. Zapisało się już  ponad 1000 osób. Ludzie oszczędzają tysiące złotych na materiałach do nauki. Link znajdziesz tutaj: newsletter programistyczny.

Przeczytaj też

Najtrudniejsze zadanie dla programistów, które wyd... Co jest najtrudniejszym zadaniem programistycznym, które dla innych wydaje się proste? Przeczytaj i dowiedz się, dlaczego uważam, że to jest programow...
Praca na stojąco, a programowanie. Test za 65 zł Czy wyobrażasz sobie całodzienny standup? Dowiedz się, dlaczego warto pracować na stojąco, oraz jakie dało mi to wyniki. Ostatnio gdy byłem na ...
12 książek/ebooków dla Junior Developerów uczących... Początkujący programiści pytają się często, jakie książki przeczytać, aby poznać kulturę programowania. W tym wpisie dowiesz się, jakie są moje propoz...
Współpraca grafika (UX designera) i programisty Sprawdź, czy kilka pikseli różnicy wpływa na estetykę designu, oraz czy UX to detale, czy ogólny wygląd. Ostatnio na grupie dla grafików trafił...
Świat zmieniają ludzie, którym się nie chce Pracownik, który nie chce wykonywać pracy. To nie jest dobry pracownik. Jednak to samo nastawienie napędza rozwój technologiczny od dziesięcioleci. ...
Napisano w Programowanie