Jak się uczyć programowania 💻

Spróbujmy w realistyczny sposób naświetlić początek drogi prowadzącej do Programisty. Drogi długiej, wyboistej, z milionem rozdroży… Innymi słowy arcyciekawej i pełnej wyzwań! Ruszajmy!

Kto może nauczyć się programować?

Każdy! Każdy komu to się spodoba, oczywiście. Nie ma sensu brnąc w coś, co jest dla nas udręką bez końca. Jednak warto spróbować, choćby po to by zweryfikować wiele mitów związanych z programowaniem. Może te przeszkody wcale nie są warte uwagi?

Fakty i mity

Programowanie bazuje na wielu dziedzinach, takich jak matematyka czy logika. Napisanie niektórych programów wymaga zaawansowania na danym polu, jednak lwia część programistów (szczególnie na początku) nie musi zbytnio się w nie zagłębiać.

Trzeba umieć matematykę

Noo, trzeba. Dodawać, odejmować, dzielić czy mnożyć. Na poziomie szkoły podstawowej 😉 Jeśli zajdzie taka potrzeba, albo gdy zapragniesz pracować przy specyficznych projektach, to można powiedzieć że i biologia by się przydała, i chemia i fizyka… Ale można się tego nauczyć, jak już będziesz tego potrzebować.

Trzeba znać angielski

Można zacząć uczyć się bez znajomości angielskiego, ale trzeba przyznać – to jest świat napisany po angielsku. Prędzej czy później możesz wiele stracić bez tego języka. Plus jest taki że podobnie jak z matematyką – to nie musi być perfekcyjny, ani nawet zaawansowany poziom. Można spokojnie rozwijać angielski w trakcie.

Trzeba logicznie myśleć

O tak, bardzo się to przydaje. Szukanie prostych rozwiązań to ważna część programowania. Tak jak parkowanie auta blisko sklepu, żeby nie targać zakupów przez cały parking 😉 Czyli – do nauczenia!

Trzeba znać się na komputerach

I w ogóle instalować programy i nie używać myszki. Jasna sprawa, można i tak. Programowanie opiera się głównie o komputery, wiec ich znajomość, a właściwie wiedza jak to jest że działają i to jak działa Internet, to złoto. Jednak przy okazji nauki języka programowania tę wiedzę w pewnej mierze „siłą rzeczy” zdobędziemy. Poznamy pewne „tajniki”, otworzy się wiele drzwi, przez co rzeczy które wydają się nam teraz zagadką, staną się jasne jak słońce.

Trzeba się ciągle uczyć

Jest obecnie naprawdę mało dziedzin w których nie trzeba. Informatyka rozwija się szczególnie dynamicznie a języki programowania ewoluują cały czas. Nie jest to jednak tempo, któremu nie da się dotrzymać kroku po prostu programując „w ciągu dnia”, w pracy. Uważam nawet że to jest akurat plus, wyrywający z codziennej rutyny.

Czy da się nauczyć programowania?

TAK, ALE 😉 Nauka programowania to długi proces. Trzeba mieć tego świadomość. Tylko tyle i aż tyle. Nie różni się on pod tym względem z opanowaniem gry na instrumencie czy prowadzeniem wyścigówki. Jeśli dopiero zaczynasz przygodę z programowaniem, nie da się tego zrobić w miesiąc czy dwa, jak niektórzy obiecują (zdobyć super płatną pracę też obiecują ;)). A już na pewno nie oglądając kilkugodzinny kurs za kilkadziesiąt czy nawet kilkaset złotych. Trzeba – uwaga – dużo ćwiczyć. W odróżnieniu jednak od instrumentów czy samochodów, na naukę programowania nie musisz wydawać ani grosza, ani nigdzie jeździć na lekcje. Zakładam że jakiś komputer w domu masz i jeśli jesteś w stanie czytać na nim ten artykuł, to jesteś też w stanie programować. Zatem jak to ugryźć?

Małe ale regularne kroczki 👟

Skoro droga do celu jest długa, można podzielić ją na kilka etapów. Idąc dalej, można te etapy dzielić na jeszcze mniejsze części. Tym sposobem temat na kilka długich miesięcy, aby był zjadliwy, można rozbić na setki małych, lekkostrawnych porcji. Uczysz się lub pracujesz i nie masz kilku godzin dziennie na ciężką naukę? Zasadniczo nie jesteś w stanie pocisnąć tematu na maksa? Nie ma problemu – zamiast godzin możesz uczyć się minuty dziennie a efekty i tak będą. Później, ale będą, i to jest najważniejsze. Od dużych skoków ważniejsze są małe, regularne kroczki. A przy okazji sprawdzisz, czy to temat dla Ciebie, nie inwestując zbyt wiele swojego cennego czasu.

Jak małe powinny być te kroczki? Aby pokazać skalę, posłużę się analogią z czytaniem książki która ma 400 stron i jest „gruba” (proszę nie mylić z „opasłym tomiskiem”, bo takie zaczyna się od 800 stron 😉 ). Jaki wyznaczymy sobie dzienny cel? Zaraz pomyślimy o tym, że miesiąc wydaje się dobrą jednostką czasu i nie brzmi głupio w tym wyzwaniu – powiedzieć komuś że „w tym miesiącu przeczytałem X”, zabrzmi spoko. To nam daje 13 stron dziennie. Niedużo, prawda? Niby tak, ale jednego dnia zapomnimy o książce i kolejnego, żeby nadrobić, trzeba przeczytać 26 stron. Nie daj Boże zapomnimy dwa razy, to już jest 39 stron. A czas ucieka! 13 stron to może być pół godziny czytania. Znaleźć każdego dnia pół godziny to czasem nie lada wyzwanie. Czemu więc nie czytać dziennie po 4 strony? Albo 2? Brzmi śmiesznie, ale fakt jest taki że te dwie strony przeczytamy w pięć minut, więc trudno tego nie wcisnąć w ciągu dnia. Często też przeczytamy więcej, bo nas wciągnie lub po prostu jednak mamy czas. Pół roku brzmi gorzej niż miesiąc, ale jak to mówią, lepiej czytać dwie książki w ciągu roku niż zacząć jedną i nie skończyć nigdy 😉 A nikomu nic do tego jak długo czytamy.

Samotność w dolinie rozpaczy ⛰

Ucząc się w niewielkich porcjach można długo czekać na spektakularne efekty (a przecież takich oczekujemy, prawda?). Stan ten można porównać do widoku w dolinie, gdzie wysokie góry zasłaniają nam cel podróży. Możemy wędrować tą doliną całymi dniami, ale dopóki nie dotrzemy do jej końca, dopóty nie ujrzymy celu – naszych efektów. Jest to całkowicie normalny stan. Nie świadczy o tym, że nie robimy postępów.

Wspomnianą doliną będziemy zapewne szli samotnie, tylko czasem spotykając innych awanturników 😉 Będą szybsi, wygadani, rzucający mądrymi słowami. To również normalne. Jeden przechodzi ten szlak szybciej, inny wolniej. Jeden będzie twierdził że został programistą w miesiąc i zarabia 15 tysięcy, inny że jest po bootcampie i pracuje już dla Googla. Nie porównuj się, szkoda na to energii.

Miej to na uwadze, a będziesz spokojniejszy na szlaku do programisty.

Narzędzia do nauki

Kalendarz

No tego to się nikt nie spodziewał, i to jeszcze na pierwszym miejscu. A prawda jest taka, że trzeba się podstępem do tej nauki zachęcić i te 5 minut dziennie wyznaczyć, zanim wejdzie nam to w krew. Pierwszym krokiem może być więc ustawienie przypomnienia w kalendarzu np. na telefonie, np. na każdy dzień roboczy o godzinie 7 rano. Godzina oczywiście dowolna, jak nam pasuje, trzeba jednak przyznać że rano możemy lepiej chłonąć wiedzę, tak razem z poranną herbatką.

freeCodeCamp

Jest wiele stron z kursami, ale https://www.freecodecamp.org/ trzeba przyznać że robią to dobrze, od A do Z i do tego w zjadliwym formacie. No i za darmo, a to jest uczciwa cena 😉 Nie będą Ci tam przeszkadzać nawet żadne reklamy. Naprawdę robią to po to, aby pomóc Ci nauczyć się programowania. Oferują naukę technologii „internetowych”, czyli tworzenia stron/aplikacji internetowych. Według mnie to dobry start, nawet jeśli pójdziesz potem w aplikacje mobilne czy coś zupełnie innego. Natrafisz tam m.in. na język JavaScript, obecny praktycznie na każdej stronie w Internecie.

YouTube

Tutaj, również bez opłat, znajdziemy tony materiałów jak zrobić coś krok po kroku. Będą to krótkie porady jak i wielogodzinne kursy (również od freeCodeCamp). Jest wiele kanałów po polsku, więc na start można przyswoić to w takiej formie. Ale pamiętaj, od samego oglądania efektów nie będzie 😉

Dokumentacja

Każdy język programowania czy rozwiązania w nim stworzone są opisane w dokumentacji. To jest najwyższe źródło prawdy, bo pokazuje (zwykle) zamysł autorów. Pozwala nam to czerpać u źródła i nie powielać błędów. Umieściłem jednak ten punkt dopiero na końcu, bo (zwykle) jest to wiedza w mało zjadliwym formacie. Na początku przygody może odrzucać, przez swoje wysokie skondensowanie i cierpki, encyklopedyczny język. Jednak na pewnym poziomie zaawansowania staje się pierwszym miejscem do którego się udajemy.

Zagrożenia w nauce

Jak na każdej drodze, i na tej czają się zagrożenia. Będą nimi pewne ułatwienia i skróty, których ostatnio jest jak grzybów po deszczu. Lecz uwierz mi, czym dalej w las, tym bardziej będą one kulą u nogi. Dlatego rzućmy na nie okiem aby wiedzieć kiedy warto z nich skorzystać, a kiedy nie.

ChatGPT 🤖

Na początek najmocniejsza karta w talii. Duże modele językowe, tzw. sztuczna inteligencja. Możemy zadać im dowolne pytanie i uzyskać odpowiedź.

Z jednej strony AI może być świetnym kompanem do nauki, np. może zagrać rolę nauczyciela i ćwiczyć z nami naszą znajomość programowania. Może podpowiadać nam, czego się uczyć, skoro już wiemy to i tamto. Może znaleźć luki w naszej wiedzy. Podać nam różne definicje. Wygenerować zadania. To jest dobre i to nas rozwinie.

Z drugiej strony, możemy opisać jej jakiś problem a ona spróbuje podać nam odpowiedź. Jeśli nie mając wiedzy jak coś działa, poprosimy ją o rozwiązanie, to tak jakbyśmy spisywali pracę domową od kolegi. To jest złe, bo nauczymy się kopiować a nie tworzyć. Naszym zadaniem jest myśleć i tworzyć. I tak jak przy ściąganiu od kolegi, nie wiemy nawet czy odpowiedź kolegi jest prawidłowa. To kolejne, ogromne zagrożenie.

StackOverflow

Forum https://stackoverflow.com to „prekursor” ChatGPT 😉 Najpopularniejsza strona internetowa do wymiany pytań i odpowiedzi na informatyczne problemy.

Z jednej strony możemy poznać drogę do rozwiązania problemu, którego sami jeszcze nie potrafimy ugryźć. Możemy poznać też podejście innych osób. Możemy też zostać doedukowani odnośnikiem do oficjalnej dokumentacji 😉 Tak czy siak, jest to kolejne, świetne źródło informacji. Można powiedzieć że sprawdzonych informacji.

Z drugiej strony wiele osób uprawia tzw. programowanie kopiuj-wklej. Tak jak w ChatGPT, proszą o gotowe rozwiązania i kopiują je do swoich programów. I znów, jeśli nie wiesz jak coś działa…

Efekt Dunninga-Krugera

To sytuacja, gdy natrafiamy na pewien błąd poznawczy – wiedząc mało, twierdzimy że wiemy dużo. Tak może być i na początku programowania. Po napisaniu naszej pierwszej funkcji stwierdzimy że nic już nas nie zaskoczy i stajemy się zbyt pewni siebie. To nic złego, ale mamy w naturze w tym momencie osiąść na laurach. A nie jest to dobry moment. Powinniśmy zrobić odwrotnie i kuć żelazo póki gorące. Gdy poczujesz że wiesz wszystko, spróbuj np. napisać tutorial. Dorzuć jakiś nowy warunek. Zmierz się z czymś trudniejszym 💪.

Bibliografia

Małe kroki oraz dolina rozpaczy została zaczerpnięta z książki „Atomowe nawyki” (James Clear, wydawnictwo Galaktyka, 2019). Polecam całą książkę, może okazać się bardzo pomocna w osiąganiu celów 🚀.