W dzisiejszym wpisie podzielę się moimi doświadczeniami związanymi z początkami nauki programowania. Z góry uprzedzam, że nie piszę tego z perspektywy dewelopera, który od kilku lat świetnie sobie radzi na rynku pracy. Nadal jestem początkująca, cały czas się uczę, ale mam już jakąś wiedzę i myślę, że kilka moich rad może przydać się osobom, które myślą o postawieniu pierwszych kroków w świecie programowania.
Od czego zacząć?
Jest wiele języków programowania i łatwo się w nich pogubić nie mając pojęcia o branży. Można podejść do kwestii wyboru języka bardzo poważnie, analizując stopień zaawansowania i popularność poszczególnych języków (tutaj przydatna infografika) albo, trochę mniej poważnie, porównać języki do bohaterów Władcy Pierścieni jak w tej infografice .
Mimo wszystko, polecam zacząć od HTMLa i CSSa, żeby w ogóle sprawdzić, czy podoba nam się wypisywanie kolejnych linijek kodu. Pamiętajmy przy tym, że HTML ani CSS nie są językami programowania, tylko językami znaczników, ponieważ w ich składni nie spotkamy wyrażeń obliczeniowych czy warunkowych. Niemniej jednak, dają one pojęcie o tym, jak wygląda tworzenie czegoś za pomocą kodu. Można od razu zobaczyć rezultat swoich działań, a to bardzo ważne na początku nauki. Moje pierwsze podejście do programowania to był SQL. Bardzo zapaliłam się do nauki, zrobiłam dwa czy trzy kursy w internecie, ale niestety, zupełnie nie miałam jak tej wiedzy wykorzystać w praktyce. Ani nie widziałam tych wszystkich wirtualnych tabelek, z których wywoływałam dane. I tak mój zapał do SQLa szybko przygasł, więc na początek polecam coś, co daje wizualne efekty, bo jednak w większości jesteśmy wzrokowcami.
Jakie kursy na początek?
Bardzo polecam kurs na stronie Codecademy, na początek Learn HTML & CSS, a później Learn JavaScript. Można tu w interaktywnym interfejsie wpisywać kod, widać również, jaki rezultat daje nasz kod w przeglądarce. Instrukcje są jasne, jest dużo ćwiczeń, mamy też dostęp do forum, gdzie można zajrzeć w razie problemów, a wersji pro także pomoc mentorów, którzy sprawdzają kod na żywo (wersja pro jest płatna).
Podobnie działa kurs na stronie Free Code Camp, także zaczynami od HTMLa i CSSa, a późnie JavaScript. Po przejściu wszystkich stopni kursu możemy pro bono brać udział w realnym projekcie. Niestety, nie udało mi się dojść do tego etapu, więc nie wiem, jak to wygląda w rzeczywistości.
Jakie materiały teoretyczne?
Jeśli bardziej szukacie teorii, warto rozejrzeć się na Coursera albo edx. Na tych platformach można znaleźć kursy z przeróżnych dziedzin, także w tematyce nauki programowania. Ruszają w różnym czasie, dlatego nie podaję linków do żadnych konkretnych. Kursy na obu tych stronach działają na zasadzie wykładów i zadań do nich. Żeby dostać certyfikat, należy zrobić na czas wszystkie zadania. Niestety, quizy kończące poszczególne moduły są tutaj w formie pytań i odpowiedzi, więc nie będziecie pisać realnego kodu. Dlatego odradzam te strony na sam początek, bo warto naprawdę pisać kod, a nie tylko o nim czytać. Tylko tak przekonacie się, czy dobrze się w tym czujecie.
Czy matematyka jest potrzebna do nauki?
Nie. Krótka odpowiedź. Nie chodzi tu o to, że neguję znajomość matematyki, ale żeby zacząć bawić się w HTMLu, czy JavaScripcie, matematyka zupełnie nie jest potrzebna. Wiem, że to odwieczny problem humanistów, czyli podejście pod tytułem “ale ja nigdy nie miałam zaawansowanej matematyki, jak ja dam radę z tym programowaniem”. Odpowiedź jest naprawdę prosta: po prostu dasz, spróbuj. Zresztą, nie ukrywajmy, nie chcemy tutaj tworzyć algorytmów czy teorii, które zmienią bieg ludzkości, chodzi nam o zakodowanie strony internetowej. Może i teoria zmieniająca bieg ludzkości byłaby bardziej ambitnym celem, ale jednak zostałabym przy tych bardziej przyziemnych pragnieniach. Pojawia się wiele opinii ostatnimi czasy, że kodowanie stanie się bardzo popularną pracą dla osób bez wykształcenia ścisłego, bo zapotrzebowanie jest duże, a języka można nauczyć się stosunkowo szybko. Oczywiście nie na zaawansowanym poziomie, ale na pewno na wystarczającym, by utrzymywać istniejące strony, czy kodować nowe w prosty sposób. Odsyłam do bardzo ciekawego artykułu w tym temacie
Czy trzeba znać się na komputerach?
I tak, i nie. Nie trzeba znać zaawansowanych funkcji, konfiguracji systemu czy środowiska, ale oczywiście trzeba płynnie poruszać się po systemie operacyjnym. Czyli umieć tworzyć katalogi, instalować programy, zapisywać pliki. Na szczęście, żyjemy w czasach zupełnej komputeryzacji, więc myślę, że zapisanie pliku na dysku, to umiejętność, którą dzisiaj posiada już każdy. Większym problemem były dla mnie początki pracy z systemem kontroli wersji, gdzie uczyłam się korzystać z konsoli Linuxa, ale to na pewno nie jest zmartwieniem, gdy stawiacie pierwsze kroki. Zresztą jak już się o czymś poczyta, okazuje się, że nie jest to wcale takie trudne. Mnie bardzo pomogły materiały z kursu programowania Coders Lab, który robię (o tym będzie osobny wpis), bo wszystko było opisane krok po kroku.
Czy trzeba znać angielski?
Tak. Tak. Tak. Bez angielskiego ani rusz. Większość materiałów do nauki jest w języku angielskim. Poza tym, języki programowania wykorzystują angielski w swoich poleceniach. Gdy wiemy, że po angielsku obramowanie to border, nie musimy uczyć się na pamięć, że obramowanie w CSS styluje się za pomocą słowa border, także to duże ułatwienie. Angielski nie musi być na poziomie super-hiper zaawansowanym, ważne, żebyśmy rozumieli instrukcje w kursach czy polecenia wywoływane w kodzie. Na pewno nie polecam uczyć się intensywnie angielskiego jednocześnie z uczeniem się programowania od zera. Warto najpierw skupić się na angielskim, i jak już poczujemy się w nim pewnie, ruszać w stronę programowania.
Do czego można porównać naukę programowania?
Do nauki języka obcego. Mamy słówka, mamy wyrażenia, które składają się w całość i coś tworzą. Z tym, że jest to twór o wiele bardziej namacalny, niż zdanie wypowiedzane w języku. Dlatego moim zdaniem łatwo jest się uczyć języków programowania filologom. Jednak lata studiów, podczas których uczyło się języków, dużo dają. Oczywiście nie znaczy to, że osoby, które nie skończyły filologii, sobie nie poradzą. Nauka programowania w dużej mierze polega na wyćwiczeniu umiejętności budowania kodu. Czyli uczymy się najwięcej, ćwicząc. A jak wiemy – praktyka czyni mistrza. Osoba, która nigdy nie biegała, nie będzie w stanie przebiec 10 kilometrów od razu, ale jak zacznie od 1 kilometra i będzie sukcesywnie dystans zwiększać, uda jej się dojść do 10. I tak samo jest z programowaniem. Dlatego tak ważna jest praktyka, robienie wszystkich zadań z kursów, ćwiczenie samemu, próby kodowania jakichś prostych stron. Ja, jak już trochę poznałam podstawy, otwierałam sobie ulubione blogi i starałam się odtworzyć szablon czy układ, który tam widziałam. Oczywiście, było to bardzo nieumiejętne i teraz w życiu bym nikomu tych kodów nie pokazała, ale to było świetne ćwiczenie na początek. Dlatego możesz przerobić tylko jeden kurs i dużo z tego wyciągnąć, bo udało ci się zrobić wszystkie ćwiczenia, a potem na ich podstawie pobawić się samemu, a możesz przerobić dziesięć kursów i nie wiedzieć nic, bo nie chciało ci się robić zadań. To dokładnie tak samo jak chodzenie na zajęcia z języka kilka lat, cały czas na poziom podstawowy, bo nigdy nie chce nam się usiąść w domu i powtórzyć materiału z lekcji. Powtórzę się po raz kolejny – praktyka, praktyka i jeszcze raz praktyka.
Jakie książki na początek?
Żadne. Naprawdę. Wiem, że to dla humanisty tragedia. Jak to tak uczyć się bez książek? Przecież tam jest wiedza! Nie przeczę, jest, i to bardzo dużo. Za dużo, jak na początek. Łączy się to, z tym, co pisałam powyżej – liczy się przede wszystkim praktyka. Możemy przeczytać 100 stron o kodowaniu, a nie będziemy umieli zakodować nawet linijki. Sama się złapałam na tym na początku, zaczęłam czytać książkę o JavaScripcie, wydawało mi się, że rozumiem wszystkie przykłady, takie były ładne i przejrzyste, ale jak zamknęłam książkę, żadnego z nich nie byłam w stanie odtworzyć. Także na początek radzę skupić się na kursach, które są dostępne w internecie, a lektury zostawić na później. Jak tylko ogarniemy podstawy, będą świetnym sposobem na pozyskiwanie nowej wiedzy.
Jestem ciekawa, czy udało wam się dobrnąć do końca wpisu, bo wyszedł dość długi. Mam nadzieję, że powyższe informacje pomogą osobom, które chcą zacząć swoją przygodę z programowaniem.
Do kodu!
Przyznam szczerze, że ten temat jest mi obcy, jednak dzięki Twoim wskazówkom udało mi się lepiej zrozumieć istotę programowania. Pozdrawiam 🙂
Bardzo przystępnie to opisałaś. Świetne jest porównanie nauki programowania do języka obcego i uwaga, że bez angielskiego ani rusz. W pełni zgadzam się też ze stwierdzeniem, że naukę programowania warto zacząć od praktyki, a nie od specjalistycznych lektur – ich poziom skomplikowania jest tak wysoki, że łatwo się odbić od tego specjalistycznego języka i nigdy do tego już nie wrócić… Ja mam to szczęście, że zaczęłam blogować jeszcze w czasach, kiedy wszystko kodowało się ręcznie i nawet bolda trzeba było za każdym razem zapisywać ręcznie. Chcąc nie chcąc, nauczyłam się więc podstaw HTML i jakoś liznęłam CSS, ale te bardziej skomplikowane języki to dla mnie czarna magia 🙂
Też właśnie zaczynam od HTML i CSS. Może trochę odrobine PHP, w takim stopniu, aby nie musieć się prosić , kiedy mam jakis pomysł do wdrożenia na blogu. Ale nadal jeszcze sporo mi brakuje:) I tak- praktyka, praktyka i praktyka- w moim przypadku działa, bo co z tego jak kumam teorię, ale nie umiem jej wdrożyć 🙂
Bardzo ciekawy temat :). HTML-a troszkę znam, bo muszę, prowadzę przecież bloga, portal i sklep internetowy. Za inne języki chciałabym się kiedyś zabrać, o ile czas pozwoli :).
Obrazowo i optymistycznie dla humanisty, nie ukrywam, że temat programowania jeszcze przede mną i na tle innych przydatnych umiejętności nie jest na pierwszym miejscu, ale wiem, że przyjdzie lada moment czas na naukę. Muszę znaleźć jakieś zajęcia programowania dla dzieci, żeby moja córka uczyła się od najmłodszych lat, to będę się uczyć od niej 🙂
Polecam spróbować, naprawdę wciąga 🙂
Czarną magię też można rozgryźć krok po kroku 😉
To jest właśnie najbardziej złudne przy czytaniu książek specjalistycznych. Niby wszystko wiemy, teoria super, ale gorzej z praktyką. Daj znać, jak Ci idzie nauka 🙂
Zachęcam bardzo do zabrania się 🙂 Jak znasz trochę HTML, to łatwo Ci pójdą podstawy CSS i JavaScript.
Jest mnóstwo kursów dla dzieci, nie tylko w online, ale na przykład również “konferencje” jak devoxx4kids (http://www.devoxx4kids.pl/), więc zachęcaj córkę mocno 🙂 Na pewno przyda się taka wiedza!
Zaczęłam od kursów z html-u na eduwebie i ćwiczę na niewielkich zleceniach, a niedługo zamierzam zrobić jeszcze bootcampa, żeby usystematyzować wiedzę i skorzystać z porad innych użytkowników i ekspertów. Widziałam na fejsie migawki z poprzednich edycji i wygląda to obiecująco.
Też zaczynałam blogować w czasach, kiedy podstawy html przydawały się na co dzień. I na tych podstawach teraz się opieram i ruszam dalej. Jeżyki obce znam, w końcu jestem filologiem, a to przecież tylko kolejny język. No i 30 minut dziennie muszę znaleźć!
Czy Kotlin będzie dobrym wyborem do nauki programowania nie znając Javy?
Ja niestety na Javie się zupełnie nie znam, bo zajmuję się JavaScriptem, więc nie znam odpowiedzi na pytanie. W sprawie Javy odsyłam na bloga Kobiety do kodu > http://kobietydokodu.pl/ 🙂
Java mnie mało interesuję, Kotlin ponoć ma być dużo prostszy od niej, zwięźlejszy i nowocześniejszy. Wspiera go Google/JetBrains i może być stosowany wszędzie jako taka lepsza Java pod JVM.
Bardzo cieszę się, że trafiłam na Twój blog. Właśnie siedzę na HTML i CSS. Rewelacyjnie motywujesz do nauki, dzięki! 🙂 Serdecznie pozdrawiam, humanistka z Poznania 😉
To super! Powodzenia w nauce 🙂
Dzięki za naprowadzenie. Jestem totalnym humanistą i wydawało mi się, że programowania nigdy nie ogarnę, że to sama matematyka. Teraz mam już jasność i spróbuję.
Nie do końca to matematyka! Także warto próbować, nie ma co się uprzedzać 😉 W razie pytań albo problemów, pisz śmiało 🙂
Zaczynam dopiero czytać Twój blog, ale już mi się podoba! Póki co mało “dziwnego” nazewnictwa, które powoduje zazwyczaj krok w tył 😉 Jeśli to jest tak jak z nauką języka obcego to…ta “cała mgła” zaczyna się rozrzedzać 🙂 Dzięki!
Cieszę się, że się podoba 🙂 To w takim razie powodzenia w zgłębianiu tematu!