fbpx

Jak dzisiaj uczyłbym się programowania?

Jak dzisiaj uczyłbym się programowania?

Gdy ktoś pyta mnie “ile czasu potrzeba, żeby nauczyć się programowania?”, zawsze odpowiadam, że to zależy. Od tego, jakie mamy predyspozycje, od tego jak systematyczni jesteśmy i przede wszystkim – od tego w jaki sposób będziemy się uczyć i jaki plan nauki ułożymy. I chociaż nie powiem Ci, czy nauczysz się programowania w pół roku, dwa lata czy pięć, bo prawdopodobna jest każda z tych opcji, to z własnego doświadczenia wiem jedno – wiedząc co robić, kiedy i dlaczego, można tę drogę zdecydowanie skrócić. I w dzisiejszym filmie dam Ci bardzo konkretny przepis na to, jak to zrobić. Krok po kroku opowiem co sam bym zrobił, gdybym – posiadając całą dzisiejszą wiedzę i doświadczenie – miał jeszcze raz od zera nauczyć się programowania.

Trudne początki

Uważam, że dzielenie się taką wiedzą jest bardzo ważne, bo gdy przypominam sobie swoje początki z programowaniem, z jednej strony pamiętam sporą ekscytację i chęć nauki, ale z drugiej strony pamiętam też dużo stania w miejscu czy nawet kręcenia się w kółko. I to było bardzo frustrujące – chciałem się uczyć, ale nie wiedziałem jak. Ok, napisałem swój pierwszy program, zrobiłem parę stron internetowych i mega mi się to podobało i chciałem więcej, ale nie wiedziałem jakie kolejne kroki wykonać. Brałem do ręki kurs programowania w CD-Action – bardzo popularnym na przełomie lat dziewięćdziesiątych i dwutysięcznych magazynie o grach komputerowych – ale po pierwsze najczęściej taki kurs był prowadzony w niezbyt interesujący sposób, a po drugie często po 3-4 częściach kurs nagle się urywał i w efekcie człowiek nigdy nie miał okazji wyjść poza absolutne podstawy. A przypominam, mówimy tu o trochę innych czasach, ponad dwadzieścia lat temu, kiedy dostęp do internetu nie był tak powszechny jak dzisiaj, a materiały w nim zgromadzone były jedynie ułamkiem tego, co mamy teraz. Wtedy wciąż żyliśmy mocno analogowo i ucząc się programowania, musieliśmy polegać przede wszystkim na źródłach drukowanych takich jak książki czy kursy programowania w czasopismach komputerowych. Nie było platform z kursami takich jak Udemy czy Pluralsight, nie było kanału Jak nauczyć się programowania, nie było nawet YouTube’a ani żadnego innego podobnego serwisu. Trudniej było dotrzeć do innych, bardziej doświadczonych osób, więc nauka programowania polegała przede wszystkim na szukaniu własnej drogi, próbowaniu tego, co sami uznaliśmy za słuszne i pokonywaniu kolejnych etapów metodą prób i błędów. I chociaż mówi się, że człowiek uczy się na błędach, ja zawsze wychodzę z założenia, że jeżeli tylko jest to możliwe, to zdecydowanie lepiej tych błędów w ogóle nie popełniać.

Korzystaj z doświadczeń innych!

Bo powiedzmy sobie szczerze – która opcja jest lepsza? Opcja nr 1, w której próbujemy nauczyć się programowania praktycznie na oślep, bez ładu i składu, bez konkretnego planu, gdzie robimy to, co wydaje nam się właściwe, ale w praktyce non stop napotykamy przeszkody, wielokrotnie dochodzimy do ściany, kręcimy się w kółko albo mamy długie przestoje, podczas których zastanawiamy się, co robić dalej, aż wreszcie po pięciu latach jesteśmy na etapie, kiedy czujemy się na tyle mocni, że wreszcie po raz pierwszy wysyłamy CV i aplikujemy na młodszego programistę. I opcja nr 2, w której korzystamy z faktu, że przed nami podobną drogę przeszły już tysiące innych osób i na bazie ich doświadczeń opracowujemy właściwą strategię i plan nauki, unikając tym samym najbardziej oczywistych błędów i dochodząc do etapu wysłania CV w ciągu kilku lub kilkunastu miesięcy.

Zrozum czy jest programowanie

Od czego więc bym zaczął, gdybym dzisiaj chciał nauczyć się od programowania od zera? Przede wszystkim od zrozumienia, czym w ogóle jest programowanie i czego się spodziewać w związku z jego nauką. I tutaj poleciłbym mój trwający niecałe półtorej godziny film “Jak nauczyć się programowania i zostać programistą?”, w którym odpowiadam na wiele pytań stawianych przez osoby rozpoczynające swoją przygodę z programowaniem. Następnie poznałbym podstawy programowania i tutaj polecam kurs CS50 z Harvardu dostępny na platformie edX. CS50 to kurs o absolutnie kultowym statusie, w mojej opinii będący jedną z najlepszych opcji, gdy myślimy o wprowadzeniu do programowania. Potwierdza to ilość uczestników – do tej pory do CS50 zapisało się ponad 3 i pół miliona osób. Tak, 3 i pół miliona. Jest kilka powodów, które sprawiają, że CS50 to kurs naprawdę wyjątkowy – po pierwsze jest to niesamowity prowadzący. David J Malan potrafi nie tylko z ogromną pasją opowiadać o programowaniu, ale przede wszystkim ma unikatowy dar tłumaczenia każdego zagadnienia w bardzo prosty, obrazowy sposób, zrozumiały nawet dla osób, które nigdy wcześniej nie miały żadnego doświadczenia z programowaniem. Po drugie, kurs jest bardzo przekrojowy i w każdym tygodniu uczysz się czegoś nowego – dowiadujesz się, jak działa komputer, czym są algorytmy, poznajesz podstawowe struktury danych, zasady działania baz danych, a także oczywiście uczysz się pisać kod. I to jest zaleta kursu numer trzy – bardzo fajny balans pomiędzy teorią a praktyką. Z jednej strony podczas wykładów otrzymujesz ogromną dawkę teoretycznych podstaw, z drugiej strony każdy tydzień kończy się praktycznymi zadaniami do wykonania. I wreszcie zaleta numer cztery – program kursu nie ogranicza się tylko do jednego języka programowania, a w jego trakcie poznajesz między innymi języki C, Python i JavaScript.

Poznaj podstawy kilku języków

I to jest kolejna rzecz, którą poleciłbym każdemu, kto jest na początku swojej przygody z programowaniem – na tym etapie warto poznać podstawy kilku różnych języków. Chodzi tutaj o wyrobienie w sobie podejścia, że programowanie to przede wszystkim rozwiązywanie problemów, a logika zgodnie z którą rozwiązujemy problemy jest niezależna od wybranego języka. Różnić się może składnia języka czyli sposób w jaki zapisujemy kod, ale elementy, z których budujemy nasze rozwiązanie są zawsze takie same – to instrukcje do wykonania, instrukcje warunkowe czyli sprawdzenie czy coś jest prawdą lub nie oraz pętle, które oznaczają, że pewien fragment kodu powinniśmy wykonać wielokrotnie. Na tych fundamentalnych zasadach opiera się całe programowanie, bez względu na to czy piszemy kod w C, Javie czy Pythonie. W praktyce do różnych zastosowań używa się różnych języków, bo są pewne problemy, które lepiej rozwiązać w Javie i są inne, do których lepszy będzie Python. Przyzwyczajając się od samego początku tylko do jednego języka, możemy mieć później opory przed spróbowaniem czegoś innego, zwłaszcza jeżeli będziemy chcieli przejść od języka, nazwijmy to prostszego do trudniejszego. Te określenia prostszy i trudniejszy wziąłbym w cudzysłów, bo ocena trudności to po pierwsze mocno subiektywna rzecz a po drugie to czy coś jest łatwe czy trudne w dużym stopniu zależy od rozwiązywanego problemu, ale myślę, że co do jednego możemy się zgodzić, panuje raczej powszechna opinia, że Python to język bardzo przyjazny dla początkujących. Ma prostą, czytelną składnię, a bogata biblioteka przeróżnych narzędzi sprawia, że to co w wielu innych językach wymaga napisania masy kodu, w Pythonie często można zrobić w dosłownie kilku liniach. To sprawia, że szybko możemy osiągać satysfakcjonujące rezultaty i tym samym chętniej uczymy się dalej. Ale właśnie, gdy po kilku miesiącach kodowania w Pythonie, mamy napisać kod w Javie czy C#, okazuje się, że czujemy się zagubieni – nagle mamy jakieś nawiasy – raz zwykłe, raz klamrowe, linie kończymy średnikami, a do tego wszędzie musimy tworzyć klasy i deklarować czy zmienna jest liczbą, tekstem czy listą. A gdybyśmy od początku zapoznali się w kilkoma różnymi językami, byłoby dużo, dużo łatwiej. Do tego pamiętajmy, że programowanie to przede wszystkim praktyka i im więcej kodu napiszemy, im więcej razy przećwiczymy jakieś rozwiązanie, tym więcej się nauczymy. I dlatego uważam, że podstawowe koncepty, z jakimi spotykamy się w programowaniu, na tym wczesnym etapie, gdy zaczynamy, warto przećwiczyć w kilku różnych językach również po to, żeby lepiej je zrozumieć i utrwalić. Dlatego mocno polecam tutaj kilka filmów dla początkujących, które znajdziecie na kanale – Java – podstawy w 2h, Python – podstawy w 2h i Podstawy JavaScript w 60 minut. Do tego obejrzyjcie Python – 5 projektów w 2h i najpierw zróbcie wszystkie projekty z tego filmu w Pythonie a potem spróbujcie napisać takie same programy ale wykorzystując inny język, na przykład Javę.

Pracuj z Roadmapą programisty

Zakładając, że jesteśmy na etapie, gdzie poznaliśmy podstawy programowania oraz napisaliśmy trochę kodu w kilku różnych językach, powinniśmy mieć już mniej więcej pojęcie, czym faktycznie jest programowanie, jakie są możliwości różnych języków, na czym polega rozwiązywanie problemów, pisanie kodu oraz tworzenie prostych projektów. I to jest właściwy moment, żeby zastanowić się, co jeszcze jest nam potrzebne, żeby faktycznie stać się programistą, poznać tematy i zagadnienia, które należy w tym celu opanować oraz ułożyć sensowny plan nauki. I tutaj polecam mojego ebooka Roadmapa programisty, który jest dokładnie tym, co sam chciałbym przeczytać, gdybym dzisiaj zaczynał uczyć się programowania. Roadmapa programisty rozwiązuje ten odwieczny problem pod tytułem “czego, kiedy i dlaczego się uczyć”. Zamiast kręcić się w kółko i zastanawiać się, jaki temat i w jakim stopniu poznać, otrzymujesz ponad sto stron bardzo skondensowanej wiedzy. Krok po kroku prowadzę Cię przez kolejne tematy, takie jak znajomość systemów operacyjnych, obsługa konsoli systemowej, algorytmy, programowanie obiektowe, bazy danych SQL, podstawy sieci komputerowych, Git, REST API, testowanie aplikacji, dobre praktyki w programowaniu, wzorce projektowe, frameworki czy zarządzanie projektami. Tak, jest tego tego trochę, ale są to rzeczy, które po prostu trzeba znać. I wiem, że dzisiaj popularna jest opinia, że kiedyś rozpocząć karierę w IT było dużo łatwiej, że trzeba było umieć dużo mniej, a na stanowisko juniora wystarczały same podstawy, a dzisiaj ten zakres wiedzy jest dużo, dużo szerszy. Cóż, ja zawsze będę powtarzać, że próg wejścia, jeżeli myśleć będziemy w kategoriach czasu, który musimy poświęcić na naukę, jest cały czas praktycznie taki sam. Ok, kiedyś faktycznie nie trzeba było znać tylu technologii co dzisiaj, ale po pierwsze inne były możliwości ówczesnych technologii i narzędzi, a po drugie dzisiaj jest zupełnie inny dostęp do wiedzy. Mamy YouTube’a, mamy platformy z kursami online i wreszcie – mamy Roadmapę programisty, w której opisuję każdy ważny dla programisty temat, tłumaczę dlaczego jest istotny i wskazuję na czym w jego ramach się skupić.

Zainwestuj w kursy online

Dwukrotnie już dzisiaj wspomniałem o kursach online i to jest kolejna rzecz, którą bym zrobił ucząc się programowania od zera – zainwestowałbym czas i pieniądze w dobre kursy. Nie w kilkutygodniowy, stacjonarny bootcamp za piętnaście tysięcy złotych, ale w porządne kursy online, realizując je w takim przedziale czasu, który będzie dla mnie odpowiedni i wydając kilkukrotnie mniej pieniędzy. O bootcampach – zwłaszcza tych, których twórcy obiecują, że zostaniesz programistą w pięć tygodni – wypowiadałem się kilka razy na kanale, między innymi w filmie Szkoły programowania i bootcampy – dlaczego nie warto? oraz we wspomnianym na początku filmie “Jak nauczyć się programowania i zostać programistą”, także tam odsyłam po szersze uzasadnienie. Generalnie nie jest tak, że jakoś bardzo stanowczo odradzam tę formę nauki i nie mówię “pod żadnym pozorem nie idź na bootcamp”, bo jeżeli ktoś ma już jakieś podstawy, wie, czego się spodziewać po bootcampie i zdaje sobie sprawę, co mu taki bootcamp da a czego nie i podejmuje świadomą decyzję, to jasne, czemu nie. Ważne, żeby wiedzieć, co robimy, żeby wiedzieć, co faktycznie z danego bootcampu wyniesiemy, a nie tylko łapać się na marketingowe hasła typu od zera do programisty w dwa miesiące albo na absurdalne i najczęściej nie mające żadnego pokrycia obietnice gwarancji pracy po ukończeniu kursu. Uważam też, że w zdecydowanej większości przypadków można wybrać lepszą, atrakcyjniejszą z ekonomicznego punktu widzenia i przede wszystkim efektywniejszą drogę.

Nie zaniedbuj wiedzy informatycznej

Wykorzystajmy to, co dają nam dzisiejsze czasy, a dają nam one dostęp do wiedzy zarezerwowanej dotąd dla studentów najlepszych uczelni na świecie. Dzisiaj nie musimy już studiować na Harvardzie, MIT czy Oxfordzie, żeby uczestniczyć w wykładach, które są tam prowadzone. Online możemy realizować dokładnie te same ścieżki, które dostępne są dla studentów tych uczelni. Wspominałem już o CS50 – to jedna z możliwości, ale wcale nie jedyna. Wystarczy zapoznać się z tym co oferują serwisy takie jak edX, Coursera oraz inne, o których opowiadałem w filmie NAUKA PROGRAMOWANIA – gdzie i jak szukać najlepszych kursów?. Część materiałów jest płatna, niektóre z kursów mogą kosztować nawet kilkaset dolarów, ale znajdziemy również bardzo dużo wiedzy dostępnej całkowicie za darmo. Tutaj polecam też przejrzeć repozytorium o nazwie computer-science dostępne na GitHubie, w którym znajdziesz listę kursów z różnych uczelni dotyczących różnych aspektów informatyki. A każdy programista – o czym wielokrotnie mówiłem na kanale i co mocno podkreślam w Roadmapie programisty – powinien posiadać ogólną wiedzę informatyczną. Gdy studiujemy informatykę to mamy szansę zdobyć tę wiedzę na studiach, pytanie oczywiście na ile się przykładamy do nauki i jak dany przedmiot jest prowadzony, bo z tym też bywa różnie – wtedy takie kursy z Harvardu czy MIT mogą być świetną okazją do powtórzenia materiału albo wręcz nauczenia się go od nowa. Gdy nie studiowaliśmy informatyki, dobrze byłoby tę wiedzę nadrobić. Po pierwsze takie teoretyczne podstawy warto znać, a po drugie jest to wiedza, która mocno nas odróżnia od innych samouków, od całej masy osób, które ukończyły bootcampy i przeróżne szkolenia, ale nie wiedzą czym jest system binarny, a na wspomnienie takich pojęć jak TCP, SSH czy ping robią tylko wielkie oczy. Więcej na temat studiów, na temat tego czy są niezbędne czy nie – spoiler: nie są, ale sporo ułatwiają – opowiadałem w filmie “Jak nauczyć się programowania i zostać programistą”, także tam odsyłam po szczegółowe wyjaśnienie. Poza wiedzą z zakresu informatyki, oczywiście potrzebujemy wiedzy stricte programistycznej. I tutaj warto rozejrzeć się za dobrymi kursami online, przeglądając zasoby takich serwisów jak Udemy czy Pluralsight. Bardzo lubię zwłaszcza ten drugi serwis, z tego względu, że potrafi on dobrać zestaw kursów pod naszym kątem. W praktyce wygląda to tak, że wybieramy ścieżkę, która nas interesuje – na przykład web developer – robimy krótki test wiedzy, a na podstawie wyniku serwis określa nasz poziom i przedstawia nam listę rekomendowanych kursów. Zdradzę też, że już w przyszłym tygodniu, 21 kwietnia swoją premierę będzie miał mój autorski portal z kursami, nad którym pracowałem od ponad pół roku. Nie zdradzam jeszcze adresu, ale jak tylko będzie dostępny, zedytuję opis tego filmu i dodam link do serwisu. Także jeżeli oglądasz ten film po 21 kwietnia 2022 roku, link już tam jest.

Koniecznie naucz się Gita

Kolejna rzecz, której nauczyłbym się jak najszybciej, gdybym dzisiaj zaczynał swoją przygodę z programowaniem to Git. To po prostu niezbędne, uniwersalne narzędzie, z którego będziemy korzystać bez względu na to, czym w programowaniu się zajmujemy i w jakim języku piszemy kod. Wyniki corocznej ankiety Stack Overflow są tutaj jednoznaczne i nie pozostawiają żadnych złudzeń – z Gita korzysta 94% programistów na całym świecie. Nie ma drugiego narzędzia, które byłoby tak powszechnie używane. Znajomość Gita ułatwia codzienną pracę, pozwala na trzymanie porządku w naszych projektach, dzięki Gitowi nie musimy też stresować się, że stracimy efekty naszej pracy, gdy padnie nam dysk albo coś złego stanie się z naszym komputerem, bo wystarczy skorzystać z serwisu takiego jak GitHub, żeby wszystko co robimy, przechowywać w chmurze. Dzięki Gitowi i GitHubowi dużo łatwiej jest też realizować projekty z innymi osobami. I jeszcze krótkie wyjaśnienie dla tych, którym nazwa Git jeszcze niewiele mówi – Git to tak zwany system kontroli wersji, po angielsku Version Control System, w skrócie VCS. System kontroli wersji to narzędzie, które pozwala nam na archiwizowanie zmian w kodzie i wracanie do nich w razie potrzeby. Bardzo fajne wprowadzenie do tego tematu zrobiłem w filmie Git i GitHub w 60 minut, który polecam, a dużo, dużo więcej znajdziecie we wspomnianym kursie Git od podstaw, który w przyszłym tygodniu będzie miał swoją premierę. Także zapiszcie się do newslettera na gitodpodstaw.pl i nastawcie przypomnienie na 21 kwietnia na godzinę 15:00. Wtedy na kanale pojawi się film, w którym zdradzę wszystkiego szczegóły dotyczące kursu oraz platformy, na której kurs będzie dostępny.

Pisz jak najwięcej kodu

Powiedziałem, że Git pozwala na trzymanie porządku w projektach i to jest następna rzecz, na której bym się skupił – na napisaniu jak największej ilości kodu i zrealizowaniu jak największej ilości projektów. To był dla mnie najpoważniejszy problem, gdy zaczynałem naukę programowania – chciałem się uczyć, chciałem pisać programy, ale nie wiedziałem, co pisać. Opowiadałem tę historię w filmie “Jaki język programowania wybrać na początek?” – miałem 12 albo 13 lat, napisałem program do obliczania średniej w szkole i nie wiedziałem co dalej. Kompletnie nie miałem pojęcia, do czego jeszcze mogę wykorzystać programowanie i dopiero kilka lat później pojawiła się konkretna potrzeba – opracowania systemu zarządzania treścią dla magazynu muzycznego, który współtworzyłem. Dzisiaj podszedłbym do tego zupełnie inaczej – szukałbym inspiracji wszędzie. Na pierwszym etapie starałbym się napisać jak najwięcej prostych programów wykorzystujących podstawową wiedzę dotyczącą programowania – mogą to być aplikacje typu ToDo List, konwerter jednostek, quiz, tego typu projekty, które możecie zobaczyć na przykład w filmie “Python – 5 projektów w 2h”. I warto te same pomysły wykorzystywać wielokrotnie, wraz z poznawaniem kolejnych tematów. Biorąc na tapet wspomnianą ToDo listę – w pierwszej, najprostszej wersji możemy po prostu pobierać od użytkownika zadania do wykonania i dodawać je do listy w pamięci aplikacji. W kolejnej wersji możemy zapisywać te zadania do pliku. W jeszcze kolejnej – plik możemy zamienić na bazę danych. W jeszcze kolejnej – zamiast pobierać zadania z poziomu konsoli, możemy dorobić do tego interfejs graficzny albo stworzyć do tego REST API. Jeżeli mówimy o bazie danych, raz możemy skorzystać z bazy relacyjnej takiej jak na przykład MySQL albo PostgreSQL, a innym razem możemy użyć na przykład MongoDB. Możemy zainstalować bazę na własnym komputerze, możemy skorzystać z bazy w chmurze albo możemy uruchomić bazę w dockerowym kontenerze, co zrobiliśmy w poprzednim filmie “Tworzymy aplikację typu CRUD”, do którego odsyłam po zastrzyk inspiracji. Pamiętajmy, że nawet prosty pomysł możemy w programowaniu ograć na wiele różnych sposobów, a im więcej tych sposobów wypróbujemy, im więcej kodu napiszemy, tym szybsze będą nasze postępy w nauce. Oczywiście wraz ze zdobywanym doświadczeniem, nasze projekty powinny stawać się coraz bardziej ambitne i rozbudowane. I spokojnie, nie musimy się tutaj silić na oryginalność – możemy czerpać z tego, co nas otacza – możemy na przykład spróbować stworzyć klon znanego serwisu czy aplikacji. Próba stworzenia własnego Facebooka czy Instagrama – nawet jeżeli zaimplementujemy jedną dziesiątą czy jedną setną ich funkcjonalności – z pewnością bardzo wiele nas nauczy. Kilkadziesiąt pomysłów na projekty – podzielonych pod kątem trudności – zebrałem też we wspomnianym ebooku Roadmapa programisty. Projekty te – dopasowane do Twojego aktualnego stanu wiedzy – mogą służyć jako swego rodzaju checkpointy wyznaczające kolejne cele na drodze do zostania programistą.

Jaki język programowania wybrać?

Pozostaje jeszcze ważne pytanie – w jakim języku realizować te projekty? Jaki język programowania wybrać? Bo na samym początku to wiadomo – tak jak mówiłem, warto poznać kilka różnych języków, pobawić się nimi, poeksperymentować, zobaczyć różnice między nimi – ale w pewnym momencie na coś trzeba się zdecydować. Na to pytanie jednoznacznej odpowiedzi nie ma – wszystko zależy od tego, jaki język Ci się podoba i czym chcesz zajmować się w programowaniu. Inny stack technologiczny czyli po polsku zestaw narzędzi i technologii wybierzesz idąc w stronę backendu, inny jeżeli Twoim celem jest frontend i jeszcze inny, gdy zdecydujesz, że chcesz tworzyć aplikacje mobillne lub gry komputerowe. Dlatego też tak ważny jest według mnie ten początkowy etap, gdy próbujesz kilku różnych języków, poznajesz do czego każdy z nich służy, gdzie i w jaki sposób się go wykorzystuje. Wtedy po kilku tygodniach czy miesiącach takiej zabawy, eksperymentowania i próbowania, powinieneś lub powinnaś mieć w głowie w miarę jasny obraz tego, na czym chcesz się skupić. Ale tutaj też spokojnie i bez stresu – to nie jest wybór na całe życie. Nie działa to w ten sposób, że jeżeli stwierdzisz, że od tej pory mocniej przyciśniesz Javę, wszystkie inne drogi automatycznie się zamkną, a wręcz przeciwnie. Zmiana jest łatwa, bo kiedy nauczysz się jednego języka, z każdym kolejnym będzie dużo szybciej. Tak jak mówiłem, programista to nie jest człowiek, który myśli przez pryzmat jednego konkretnego języka, a człowiek, który umie rozwiązywać problemy przy pomocy kodu. I pewnie, w jednym języku będzie czuł się bardziej, a w innym mniej swobodnie, ale gdy będzie potrzeba, by tego innego języka się nauczyć, to po prostu to zrobi. Bo oczywiście, składnia będzie nieco inna, inny będzie zestaw bibliotek, frameworków i narzędzi powiązanych z tym językiem, ale podstawowe zasady zawsze, niezależnie od wybranego języka będą takie same. Nie ma znaczenia czy takie koncepty jak komunikacja z bazą danych, REST API czy programowanie obiektowe poznasz pisząc aplikacje w Javie czy Pythonie. To jest wiedza uniwersalna, niezależna od języka, w którym piszemy kod. Dlatego naprawdę, spokojnie i bez stresu z tym wyborem języka. Najważniejsze to po prostu nauczyć się programowania. Czy zrobisz to tworząc projekty w Javie, Pythonie, C#, JavaScript, PHP, Kotlinie czy Ruby – powtórzę to po raz kolejny – tak naprawdę nie ma żadnego znaczenia. To co ma ogromne, fundamentalne znaczenie i chcę to podkreślić raz jeszcze, żeby wybrzmiało z właściwą mocą, to to, żeby niezależnie od wybranego języka, realizować jak najwięcej projektów. Pisz jak najwięcej kodu, poznawaj jak najwięcej niezbędnych programiście technologii i zagadnień i staraj się to wszystko łączyć w całość. I właśnie, to też jest coś, o czym piszę w Roadmapie programisty – żeby każdą rzecz, o której przeczytasz, starać się jak najszybciej wykorzystać w praktyce. Załóżmy, że piszemy już proste programy i zaczęliśmy uczyć się o bazach danych. Nie chodzi o to, żeby teraz przez następne trzy miesiące zgłębiać wszystkie niuanse dotyczące baz i języka SQL. Zamiast tego, zrób najprostszą możliwą rzecz – połącz się z bazą ze swojej aplikacji i coś z niej pobierz albo dodaj. Wróć do aplikacji, wprowadź do niej jakieś zmiany i spróbuj zrobić z bazą coś jeszcze, coś więcej. Dodawaj małe zmiany za każdym razem, gdy nauczysz się czegoś nowego. Obrazuję to zawsze w następujący sposób – jeżeli chcesz nauczyć się technologii A, B i C, nie ucz się najpierw od deski do deski technologii A, potem od deski do deski technologii B i na koniec od deski do technologii technologii C. Tak to w programowaniu nie działa. Wszystko, czego się uczysz musisz od razu wykorzystywać w praktyce. Także naucz się trochę technologii A, trochę technologii B, trochę technologii C i to każde “trochę” z każdej technologii postaraj się wykorzystać w swoim projekcie i połączyć w działającą całość. I jak już będzie to działać, to wtedy wróć do technologii A, naucz się jej trochę więcej, poznaj trochę więcej technologii B, trochę więcej technologii C, a potem zapętl ten cykl. I zapamiętaj, że prawdziwe postępy w programowaniu robisz nie wtedy kiedy czytasz książkę albo oglądasz kurs, tylko wtedy kiedy tę wiedzę wykorzystujesz w praktyce.

Przeczytaj kilka książek

I jeszcze na koniec – gdybym zaczynał naukę programowania dzisiaj, to po poznaniu tych absolutnych podstaw programowania czyli po przerobieniu kursu CS50, poeksperymentowaniu z różnymi językami i wybraniu drogi na kolejne miesiące, oprócz jak największej ilości praktyki, pisania kodu i tworzenia kolejnych projektów, zrobiłbym jeszcze jedną rzecz. A mianowicie, przeczytałbym kilka bardzo ważnych dla rozwoju programisty książek. Taki absolutny top, któremu zresztą poświęciłem pierwszy film na tym kanale trzy i pół roku temu, to Pragmatyczny programista, Czysty kod oraz 5 dysfunkcji pracy zespołowej. Te trzy książki pozwolą Ci się rozwinąć w kilku różnych aspektach – nauczysz się szeregu dobrych praktyk, o których każdy programista powinien pamiętać, dowiesz się jak pisać przejrzysty i czytelny kod, a także jak pracować z innymi osobami i jak rozwiązywać problemy w zespole. Do tej listy warto dołożyć jeszcze pozycję o nazwie Algorytmy. Ilustrowany przewodnik, która w wyjątkowo prosty sposób wprowadza czytelnika do tematu algorytmów. Wiedza zawarta w tych książkach jest naprawdę ponadczasowa i uniwersalna, także uważam, że każdy programista na pewnym etapie powinien je przeczytać. A moim zdaniem im wcześniej to zrobisz, tym lepiej.

Cały plan w pigułce

Podsumowując – gdybym dzisiaj zaczynał naukę programowania, zacząłbym od poznania podstaw programowania, a zrobiłbym to kończąc kurs CS50 oraz oglądając filmy z playlisty Programowanie od A do Z dostępnej na moim kanale – link tradycyjnie podaję w opisie filmu. Szczególną uwagę zwróciłbym tutaj na filmy “Jak nauczyć się programowania i zostać programistą?” oraz na trzy filmy wprowadzające do języków Java, Python i JavaScript – Java – podstawy w 2h, Python – podstawy w 2h i Podstawy JavaScript w 60 minut. Następnie pobawiłbym się różnymi językami, poeksperymentował z nimi, spróbował poznać podstawy każdego z tych języków. Dzięki temu zobaczyłbym jak te same koncepty realizujemy w różnych językach, dzięki czemu po pierwsze bym je sobie utrwalił, a po drugie nauczyłbym się, że język to tylko narzędzie, że programowanie oparte jest zawsze na takich samych zasadach, niezależnie od tego, jaki język wybierzemy i wyrobiłbym w sobie przekonanie, że nie warto przywiązywać się tylko do jednego języka, bo różne problemy wymagają od nas wykorzystania różnych języków. Kupiłbym też mojego ebooka Roadmapa programisty, żeby wiedzieć, jakie dalsze kroki wykonać, jakie koncepty i zagadnienia poznać oraz kiedy i w jakim celu to zrobić. Dzięki Roadmapie miałbym też od razu listę projektów do stworzenia, więc w ten sposób – realizując coraz to trudniejsze i bardziej rozbudowane projekty – mógłbym śledzić swój rozwój. Wiedząc już, w którą stronę chcę iść – czy w stronę backendu, frontendu, aplikacji mobilnych, game developmentu czy jakiejkolwiek innej gałęzi programowania, wybrałbym język, na którym skupiłbym się przez kolejne miesiące. Żeby ułatwić sobie proces nauki poszukałbym dobrych kursów online – darmowych jak i płatnych. Skupiłbym się też na zdobyciu wiedzy dotyczącej szeroko pojętej informatyki, bo to jest coś, o czym wiele osób uczących się programowania na własną rękę zapomina, a jest to wiedzą, którą każdy programista – co najmniej na podstawowym poziomie – powinien posiadać. Nauczyłbym się też Gita, bez którego trudno sobie wyobrazić dzisiaj pracę i tutaj wybrałbym mój kurs Git od podstaw, którego premiera już za tydzień. Także ustawcie sobie przypomnienie na 21 kwietnia na godzinę 15, wtedy pojawi się odcinek, w którym zdradzę wszystkie szczegóły dotyczące kursu, w tym platformę, na której kurs będzie dostępny. Zachęcam też do zapisania się do newslettera na stronie gitodpodstaw.pl, wtedy nic na pewno Was nie ominie, bo również mailowo poinformuję o wszystkich szczegółach. A do tego całego planu nauki, o którym opowiadałem, dołożyłbym lekturę kilku najważniejszych książek dla każdego programisty zaczynając od kultowego Pragmatycznego programisty.

Cześć!

Nazywam się Kamil Brzeziński. Z branżą IT jestem zawodowo związany od kilkunastu lat, a od ponad sześciu swoją wiedzą i doświadczeniem dzielę się na kanale Jak nauczyć się programowania.

Jeżeli:

✓ chcesz zostać programistą i wejść do branży IT

✓ jesteś początkującym programistą, ale brakuje Ci pomysłów na rozwój

✓ myślisz o zdobyciu pierwszej pracy jako programista

To jesteś we właściwym miejscu.

ROADMAPA PROGRAMISTY

Gdy zaczynamy przygodę z programowaniem problemem nie jest dostęp do wiedzy. Internet jest pełen kursów, poradników i tutoriali. Problemem jest to, że nie wiemy jak z tej wiedzy skorzystać. Jak z tej masy materiałów wybrać to, co faktycznie istotne? Skąd wiedzieć, czego się uczyć, kiedy i dlaczego? Jak się w tym wszystkim nie pogubić?

Odpowiedzią na ten powtarzający się wśród początkujących programistów problem jest Roadmapa programisty.

Zajrzyj do środka:

Fragment nr 1 (Git)

Fragment nr 2 (REST API)

Ostatnie artykuły

Jak się uczyć programowania – nauka od podstaw czy projekty z tutoriali?

Jak się uczyć programowania – nauka od podstaw czy projekty z tutoriali?

Pierwsze podejście to “top-down” – bierzemy jakiś tutorial, przechodzimy go krok po kroku i w ten sposób bardzo szybko realizujemy konkretny projekt. Druga opcja to podejście “bottom-up”, w którym każdy krok w świecie programowania stawiamy bardzo dokładnie, kompleksowo ucząc się teorii i mozolnie dokładając kolejne klocki w naszej edukacji. Oba podejścia mają swoje dobre i złe strony, i wcale nie jest tak łatwo zdecydować się na któreś z nich. A może da się oba te podejścia połączyć?

czytaj dalej