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 鈥瀞i艂膮 rzeczy鈥 zdob臋dziemy. Poznamy pewne 鈥瀟ajniki鈥, 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 鈥瀢 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 鈥瀏ruba鈥 (prosz臋 nie myli膰 z 鈥瀘pas艂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 鈥瀢 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 馃殌.