Nauka programowania

Od czego zacząć Naukę Programowania? Poradnik Krok Po Kroku

11 kwietnia 2021

Bardzo często znajomi pytają mnie, od czego w ogóle zacząć naukę programowania. Jak zabrać się za to racjonalnie i nie znudzić się po dwóch dniach? Przedstawię Wam krótką, 5-krokową ścieżkę, która pokrótce opisze cały proces nauki, aż do momentu osiągania realnych, praktycznych umiejętności. Mniej więcej tak wyglądało to u mnie i gdybym miał zaczynać na nowo od dziś, z pewnością podążyłbym właśnie takim schematem.

1. Zastanów się, czy programowanie to coś, co może Cię zaciekawić

Zanim zaczniemy przeznaczać na naukę swój czas, warto się dobrze zastanowić, czy programowanie tak naprawdę do nas pasuje. Oprócz wielu zalet dotyczących chociażby kreatywnej pracy, czy wysokich zarobków, programowanie ma też kilka mniej słodkich stron, które dla wielu mogą okazać się zbyt gorzkie do przełknięcia.

Przede wszystkim, warto zdać sobie sprawę z tego, że tak naprawdę nie da się “nauczyć” programowania. To nie alfabet, czy tabliczka mnożenia do 100. Nie słyszałem o ani jednym programiście, który nie sięgałby raz na jakiś czas do dokumentacji, czy wyszukiwarki. Możemy nauczyć się wielu konceptów, specyficznego sposobu myślenia, czy nazw i zasad działania najważniejszych funkcji w danym języku. Prawda jest jednak taka, że chcąc pozostawać z wiedzą na bieżąco i wykonywać coraz to nowsze, bardziej złożone projekty – ciężko będzie nagle powiedzieć “to mi już wystarczy, już nie potrzebuję się więcej uczyć”. Oczywiście to nie tak, że zawodowi programiści przeznaczają całe wieczory na czytanie branżowych książek, czy zgłębianie kursów, ale rzeczywiście wielu z nich przeznacza bardzo dużą część wolnego czasu na aktualizacje swojej wiedzy.

Uwielbiam to, w jaki sposób praca programisty jest przedstawiana w filmach i serialach. Bardzo często widzimy tam sceny “maniaków komputerowych”, którzy w swoim ciemnym pomieszczeniu po prostu naciskają przyciski bez chwili namysłu. Oczywiście da się pracować wydajnie, szczególnie jeśli mamy już jakieś doświadczenie. W rzeczywistości jednak, jeśli pracujemy nad coraz to bardziej złożonymi projektami, z reguły będziemy przeznaczać znacznie więcej czasu na myślenie i testowanie rezultatów, niż na realne pisanie kodu. Programiści nieraz mierzą swoje rezultaty w “linijkach kodu”. Jest to co prawda dość zabawne, ale wyłącznie dla zobrazowania tej sytuacji napiszę, że podczas normalnego dnia pracy piszę takich linijek zapewne ponad tysiąc dziennie. Miałem jednak mnóstwo takich dni, w których napisałem takich linijek na przykład około 70, a całą resztę dnia przeznaczyłem na wymyślanie logiki i testowanie rezultatów (przy czym pewnie te 1000 linijek trafiło do kosza).

Można powiedzieć, że praca programisty polega przede wszystkim na rozwiązywaniu problemów. Wielu programistów zna też to uczucie pustki, towarzyszące im, gdy przez cały dzień, albo nawet kilka dni nie są w stanie rozwiązać konkretnego problemu. Nieraz programista spędzi kilkanaście godzin na przeszukiwaniu internetu i myśleniu nad tym, w jaki sposób będzie chciał coś zrobić, zanim w ogóle zacznie. Oczywiście wszystko zależy od typu takiej pracy, bo jeżeli realizujesz ciągle podobne, niezbyt złożone projekty – takie sytuacje będą raczej rzadkością – nie zmienia to jednak faktu, że sama praca jest wtedy znacznie mniej ciekawa i można się wypalić jeszcze łatwiej.

Poza tym warto mieć oczywiście na uwadze to, że praca programisty to praca mocno “siedząca” (choć niektórzy eksperymentują z biurkami, przy których się stoi). Sama w sobie potrafi dawać wiele satysfakcji i radości, ale nieraz wymaga sporo nauki i cierpliwości. Wielu programistów po kilku latach takiej pracy pomimo atrakcyjnych warunków finansowych i perspektywicznej pracy i tak postanawia zmienić branżę. To nie jest rzecz dla każdego.

Jeśli nadal masz wątpliwości i nie wiesz, czy chcesz zacząć – polecam dać temu szansę. Nawet nie pracując w zawodzie, dzięki umiejętności programowania będziesz mógł wykonywać mnóstwo ciekawych rzeczy, które pomogą Ci w na przykład automatyzacji Twojej pracy.

2. Wybierz technologię, która Cię zainteresuje

Doświadczony programista z reguły w kilka tygodni nauczy się nowego języka programowania lepiej niż ktoś, kto dopiero zaczyna kodować i przeznaczy na to na przykład pół roku. Oprócz cech typowych dla języka, innego nazewnictwa funkcji i tego typu nowinek, sposób myślenia pozostaje zwykle ten sam. To właśnie on jest w mojej opinii najtrudniejszą częścią nauki programowania, która przychodzi dopiero z praktyką.

Sam wybór języka programowania nie jest więc bardzo obligujący, bo zawsze można spróbować przejść na coś innego. Wielu programistów zna kilka języków i choć z reguły specjalizują się tylko w jednym, są w stanie pisać sensowny kod w każdym z nich.

Proponuję pierw zastanowić się nad tym, co w ogóle chcielibyście robić. Jeżeli sami nie wiecie co, rekomendowałbym przyjrzenie się na przykład językowi JavaScript, w którym za pomocą odpowiednich bibliotek i frameworków można tworzyć zarówno nowoczesne strony internetowe, jak i aplikacje mobilne.

Jeśli chcecie pracować głównie przy stronach internetowych, jeszcze przed zgłębieniem programowania warto byłoby nauczyć się podstaw HTML i CSS. Później możecie zainteresować się chociażby JavaScript, PHP, czy Pythonem. Proponuję wyszukać sobie w Google przykładowych projektów w tych językach i samemu zobaczyć, co mniej więcej da się w nich zrobić. Będąc przy szukaniu, od razu ważna rekomendacja: szukajcie w internecie po angielsku. To przyda Wam się szczególnie wtedy, gdy zaczniecie już pracować z kodem.

W przypadku gdy interesuje Was tworzenie gier, możecie zainteresować się na przykład C++, C#, czy Java.

Do aplikacji mobilnych ciekawe mogą być Javascript, Kotlin (Android), Java (Android), czy Swift (iOS).

Protip: odradzam też branie na samym początku się za najnowocześniejsze technologie lub za jakieś niszowe języki. Skupcie się na czymś popularnym, ponieważ duża ilość zasobów i pytań znacznie ułatwi Wam proces nauki.

3. Zobacz, w jaki sposób programuje się w wybranym przez Ciebie języku

Wiem, że kod z początku będzie wyglądał trochę niczym chiński alfabet i prawdopodobnie każdy język będzie wyglądał równie przerażająco. Proponuję jednak poszukać na YouTube różnych tutoriali dla początkujących i zobaczyć, co będzie wydawało się dla Was najbardziej przystępne. Dla mnie takim językiem było PHP, które nie wymagało instalacji zaawansowanych IDE, czy posiadania kompilatora. Ponadto pozwalało mi na łączenie mojego kodu w jedną całość z HTML i CSS, które już znałem no i przede wszystkim na tworzeniu moich ukochanych, tekstowych gier przeglądarkowych, którymi w tamtym czasie byłem bardzo zafascynowany.

Wśród języków przyjaznych dla początkujących wyróżniłbym między innymi JavaScript, Python i PHP.

4. Zaplanuj swoją naukę

Chcąc, czy nie – na początku trzeba nauczyć się trochę teorii. Odradzam jednak czytania jej jak fabularnej książki bez przerobienia przynajmniej kilku praktycznych przykładów dla każdego zagadnienia. Pamiętam, że dopóki nie zacząłem kodować, nie potrafiłem zrozumieć, do czego służą pętle, czy tablice. Dowiedz się absolutnych podstaw, popróbuj zastosować je w praktyce, ale przede wszystkim działaj.

Dobrym wyborem mogą być kursy wideo, które przeprowadzą Cię przez początkowe zmagania krok po kroku. Wiele z nich docelowo ma za zadanie realizację konkretnego projektu, co jest doskonałą okazją do nauki na praktycznym przykładzie. Przede wszystkim warto nie oglądać kursu jak film, tylko na bieżąco przerabiać każdy odcinek i odtwarzać kod w swoim edytorze lub IDE. Nie warto też bezmyślnie go przepisywać. Lepiej poświęcić trochę więcej czasu i dokładnie zastanowić się, dlaczego jest tak, a nie inaczej i spróbować w nim coś pozmieniać. Nawet jeżeli przypadkiem coś popsujesz, zawsze możesz wrócić do poprzedniego stanu tego kodu, więc nic nie powinno się stać (zainteresuj się przy okazji skrótem CTRL + Z i platformami takimi jak np. GitHub).

5. Rozwijaj swoje umiejętności praktyczne

Kursy, książki, czy dokumentacja to całkiem niezłe źródła teorii. Aby się jednak nauczyć praktyki, najlepiej możliwie jak najszybciej “rzucić się na głęboką wodę” poprzez rozpoczęcie własnego projektu. Jeśli nie jesteście jeszcze na tyle zaawansowani, świetnym pomysłem może być też pobranie jakiegoś open-source’owego projektu z na przykład GitHuba i stopniowe edytowanie go i rozszerzanie o nowe funkcjonalności. Dla przykładu, ja najwięcej nauczyłem się edytując jakiś silnik wcześniej wspomnianej gry przeglądarkowej. Z początku zmieniałem proste rzeczy związane z tekstem, wartości liczbowe, aż w końcu zacząłem na bazie jednych modułów, tworzyć drugie, które działały analogicznie. Choć sam projekt nadawał się wyłącznie do kosza, w rzeczywistości nauczył mnie więcej niż jakakolwiek teoria (która w niewielkiej ilości była jednak niezbędna, żeby zacząć coś robić). Jeśli miałem jakiś problem, po prostu szukałem odpowiedzi w internecie – w ten sposób zresztą poszerzam swoją wiedzę do dziś.