Programowanie – jak zacząć?

Programowanie – jak zacząć

Często pojawiającym się pytaniem na grupach dotyczących programowania jest to, jak i od czego zacząć. Jak zacząć się uczyć? Jak zacząć planować karierę? Jednym słowem – jak zacząć programować? Wiele osób pyta i oczekuje instrukcji, ścieżki, którą łatwo będzie podążać. Niektórzy zakopują się po uszy w opiniach o kursach programowania dostępnych w sieci i tych stacjonarnych, spędzając tygodnie (albo i dłużej, olaboga!) szukając tego jedynego. Tego, po którego ukończeniu będą mogli nazywać się programistami.

Dlatego też dzisiaj skupimy się na tym, jak zacząć programować. I na tym, że żeby zacząć… trzeba zacząć! (O czym zresztą pokrótce rozmawiałam również z Żanetą w trakcie naszego wywiadu).

Dlaczego chcesz programować?

Wychodzę z założenia, że robiąc cokolwiek w życiu – musimy mieć jakiś cel. Musi nam się chcieć. Inaczej naprawdę łatwo się wypalić… Dlatego też, zanim przejdę do sedna tego, jak zostać programistką, zastanówmy się, dlaczego w ogóle chcesz programować?


…bo jest to dobrze płatny zawód! Tak, zdecydowanie branża programistyczna jest jedną z lepiej płatnych! Jeśli wysokość wynagrodzenia w przyszłości jest dla Ciebie wystarczającym motywatorem, to jesteśmy w domu! Pamiętaj tylko, że w chwili, kiedy zaczniesz pracować jako programistka, klepanie kodu stanie się Twoim chlebem powszednim i dość szybko może zbrzydnąć, jeśli się tego nie lubi. Nie chcesz w końcu do końca życia chodzić do biura i narzekać pod nosem, że nienawidzisz swojej pracy, prawda?


…bo interesują mnie komputery! To jest świetny punkt zaczepienia – jeśli wiesz już, co konkretnie Cię interesuje, łatwiej Ci będzie wypracować swoją ścieżkę nauki i przygotowań. Nazywając kolejno, co dokładnie Cię interesuje, nakreślasz powoli, czego mogłabyś się uczyć i w jakim kierunku szukać informacji.


…bo chcę być jak <TU IMIĘ>! Jeśli masz swojego idola bądź idolkę – osobę, której śladami chciałabyś podążać – to trzymaj się tego! W końcu Twoja ciężka praca zaowocuje, a Ty nie tylko będziesz tak jak <TWÓJ IDOL>, ale nawet lepsza! Pamiętaj tylko, że taka osoba miała już pewien headstart – jej kariera, czy zainteresowania zaczęły kiełkować wcześniej, w związku z tym miała też więcej czasu, żeby opanować przeróżne niuanse. Daj sobie czas, a również dojdziesz do tego poziomu!

…bo chcę zrobić <COŚ>! Grę? Stronę internetową? Własny system operacyjny? Aplikację na Androida? Możliwości jest wiele – powiedz, co chciałabyś robić w przyszłości i… postaw sobie za cel nauczenie się tego!

Dość kołczingu, Cieplik. Powiedz, jak zacząć programować?

Laska z filmu “Chłopaki nie płaczą” wcale nie mówił od czapy, kiedy tłumaczył, że “najpierw trzeba odpowiedzieć sobie na jedno ważne pytanie: co lubisz w życiu robić, a potem zacząć to robić”. Dlatego też ważne jest, żebyś znała swoją motywację i wiedziała, dlaczego chcesz programować. Dzięki temu łatwiej będzie Ci podjąć decyzję o tym, jak zacząć. 
Jest wiele rzeczy, którymi możesz się zajmować, jako programistka. Najprostszy podział obejmuje:

  • Frontend – czyli tworzenie “tego, co widać” – okienek w aplikacji, stron internetowych, interakcji użytkownika z aplikacją (jak np. klikanie w przyciski czy formularze). Frontend developerzy zwykle pracują z wykorzystaniem HTMLa, CSSa, JavaScriptu (w tym też TypeScript), a także korzystają z technologii takich jak Angular czy React.
  • Backend – czyli odpowiadanie za “silnik” aplikacji, to, czego użytkownik nie widzi. Może to być integracja aplikacji z bazą danych, czy przetwarzanie danych w taki czy inny sposób, wykonywanie obliczeń itd. Najczęściej używanymi językami są python, PHP, Java, C++, GO, a nawet JavaScript (node.js).
  • Full Stack – czyli tworzenie aplikacji “od początku, do końca”. Programiści “full stack” odpowiadają za aplikację i jej część logiczną, jak również wygląd. To takie połączenie frontendu z backendem!
  • Mobile development – czyli pisanie aplikacji mobilnych. Podobnie jak frontend, programiści aplikacji mobilnych zajmują się w dużej mierze pracą nad wyglądem i obsługą interakcji użytkownika z aplikacją. Technologie, które mogą się przydać, obejmują: C#, Swift, JavaScript i inne.
  • Tworzenie gier komputerowych – nic dodać, nic ująć. C++ przoduje wśród programistów gier.
  • Analiza danych – czyli praca z naprawdę ogromną liczbą danych, sieci neuronowe i sztuczna inteligencja (rzeczy takie, jak rozpoznawanie twarzy, analiza rynku i sytuacji na giełdzie itd.). Do tego przyda Ci się python i R.
  • Site Reliability Engineering (w innych kręgach zwane również DevOps) – czyli obsługa i usprawnienie procesu testowania, budowy i deploymentu aplikacji oraz dbałość o niezawodność aplikacji. W tym wypadku przyda Ci się na pewno python i Bash, jak również wiele narzędzi, takich jak debuggery, czy dobra znajomość systemów operacyjnych.

Nie wiesz, czym chciałabyś się zajmować jako programistka? Może być tak, że nie wiesz jeszcze dokładnie, czym chciałabyś się zajmować. Ciężko jest więc podjąć samodzielnie decyzję o tym, od jakiego języka zacząć. Gdzie jednak nie spytasz, to dostajesz inne odpowiedzi (każdy będzie Cię zaganiał do swojego podwórka i przekonywał do swoich racji). Jak więc podjąć decyzję?


Możesz kierować się głosem większości. Na Grupie Super Programistek przeprowadziłyśmy ostatnio krótką ankietę, w której wiele dziewczyn wskazało python, jako język programowania, od którego zaczęły swoją przygodę. Następny w kolejce był JavaScript! 


W ankiecie StackOverflow (przeprowadzonej na “trochę” większej grupie programistów – bo aż 65 000 osób!), jako najpopularniejszy język wskazano JavaScript, choć był on dopiero 19. na liście najlepiej płatnych języków programowania (zwróć uwagę, że niektóre technologie wskazane na liście najlepiej płatnych języków są dość stare i trudne w nauce – np. perl, czy assembly – specjalistów w tych dziedzinach jest obecnie po prostu znacznie mniej, stąd ich stawki są wygórowane. Pozwolę sobie jednak trochę odciągnąć Cię od wizji zostania programistką COBOL czy fortrana – przynajmniej nie jako swojego pierwszego języka do nauki!).


Warto również sprawdzić, na co obecnie jest największe zapotrzebowanie na rynku pracy. Przejrzyj oferty z serwisów takich jak JustJoinIT, by wyrobić sobie zdanie na ten temat. Jeśli kręci Cię wizja pracy w start upie w niewielkim domku z “owocowymi czwartkami” – sprawdź, jakich specjalistów firmy tego typu szukają! Jeśli widzisz siebie raczej w dużej korporacji i bardziej poważnym biurze (pierwszy do głowy przychodzi Microsoft), to skieruj swoje zainteresowania w stronę bardziej “dojrzalszych” technologii, takich jak Java.

A Ty, Cieplik, od jakiego języka polecasz zacząć naukę programowania?
Sama pierwszą linijkę kodu napisałam (olaboga!) ponad 20 lat temu. Było to w pierwszej klasie podstawówki i w języku LOGO (może kojarzysz żółwika?). Później uczyłam się Pascala, HTMLa, CSSa i PHP, Delphi, Ocamla, Javy… Tak naprawdę wszystkiego po kolei. I gdybym wiedziała wtedy, to co wiem teraz (i gdyby ten język już wtedy był dostępny) – zaczęłabym naukę od GO.

Dlaczego? Głównie z tego powodu, że jest to bardzo prosty język pod względem składni, który poniekąd zbliżony jest do C. Wymaga od programisty myślenia o takich rzeczach jak użycie pamięci i koszt wykonywanych operacji (m.in. dlatego, że nie dostarcza wbudowanych “magicznych rozwiązań”, które ukrywają koszt, a zatem czas działania programu), jednocześnie będąc całkiem bezpiecznym językiem, w którym pisze się sprawnie, a bariera wejścia jest bardzo niska. Dzięki temu nauczysz się o przeróżnych pojęciach wspólnych dla wszystkich (imperatywnych) języków programowania i z łatwością będziesz mogła “przesiąść” się na coś innego w przyszłości, jeśli zajdzie taka potrzeba. Go jest również uważany za jeden z lepiej płatnych języków programowania, a do tego jest bardzo szeroko wykorzystywany przez programistów backendowych w dużych firmach programistycznych.

Wiem już, co chcę robić. Jak mogę się tego nauczyć?

Nauka programowania to proces, który tak naprawdę nigdy się nie kończy. Jeśli nie jesteś jeszcze na 100% pewna, że chcesz zostać programistką, zamiast inwestować grube $$$ w płatne kursy i bootcampy – spróbuj nauczyć się niektórych rzeczy samodzielnie!
Możesz zacząć od darmowych kursów online i tutoriali. Najłatwiej będzie szukać informacji o “<język programowania> online course free” lub wybierając coś z poniższej listy:

  • learnpython.org – interaktywny tutorial do nauki pythona (a także innych języków programowania). Naukę możesz zacząć w przeglądarce!
  • Code Academy – darmowe kursy online różnych języków programowania. 
  • EDX – platforma online, na której znajdziesz kursy organizowane przez uczelnie takie jak Harvard czy MIT. Udział w kursach jest zupełnie bezpłatny, chociaż za dopłatą możesz otrzymać dyplom uczelniany! Tutaj znajdziesz nie tylko kursy z danego języka programowania, ale też bardziej rozbudowane kursy o algorytmach, strukturach danych itd.
  • MIT Open Courseware – platforma e-learningowa tworzona przez uczelnię MIT.
  • W3Schools – seria interaktywnych kursów online z naciskiem na technologie webowe.
  • Khan Academy (dostępne również w języku polskim!), to organizacja non-profit, na której stronie znajdziesz lekcje z wielu dziedzin nauki, w tym matematyki i informatyki. Strona kierowana jest głównie do uczniów w wieku szkolnym.
  • Learning Lab (github) – znajdziesz tu darmowe tutoriale i kursy wprowadzające do różnych języków programowania i konkretnych technologii. Duży bonus za to, że wykonując instrukcje z kursu jednocześnie zaczynasz budować swoje portfolio programistyczne na githubie!

Zwróć też uwagę, że niektóre technologie i języki są bardziej popularne i łatwiejsze do nauki, niż inne. Jeśli jednak chcesz programować gry, to nie masz wyjścia i niezależnie od tego, że wokół Ciebie będzie wylew kursów i materiałów do nauki pythona, to jednak warto spędzić trochę więcej czasu i znaleźć wartościowe materiały do nauki C++. W końcu mówimy o Twoich marzeniach, nie?


Co potem? Szkoła? Studia? Bootcamp? Samodzielna nauka?
Jak już mówiłam – programować możesz nauczyć się, samodzielnie dobierając sobie ścieżkę nauki i realizując kolejne projekty. Udział w zorganizowanym kursie, bootcampie, czy pójście na studia informatyczne da Ci jednak inną perspektywę oraz pozwoli usystematyzować wiedzę i uzupełnić braki, z których mogłaś nie zdawać sobie sprawy. 


Jako osoba, która spędziła 5 lat studiując na wydziale MIM Uniwersytetu Warszawskiego, powiem Ci, że studia, to w sumie fajna sprawa! Program studiów jest szeroki – Twoja wiedza i umiejętności po studiach są więc bardziej uniwersalne. Z drugiej strony – 3 (licencjat) bądź 5 (licencjat + magister) lat studiów, to całkiem dużo czasu. 


Być może bootcamp (z reguły kilka intensywnych tygodni / miesięcy nauki) będzie dla Ciebie lepszym rozwiązaniem? Bootcampy to intensywne kursy przygotowujące Cię do pracy z konkretnymi technologiami. Wiedza podana jest w sposób usystematyzowany, choć jest bardzo ukierunkowana (w porównaniu do studiów). Wybierając bootcamp pamiętaj, żeby zapoznać się z opiniami uczestników, by wybrać odpowiadające Ci miejsce.


Możesz również kontynuować samodzielną naukę, jeśli powyższe opcje Ci nie odpowiadają. W takim wypadku polecam jednak znaleźć sobie mentora (bądź mentorkę) – osobę, która ma już doświadczenie w branży (najlepiej w pracy z wybranymi przez Ciebie technologiami) i chętnie się z nim podzieli oraz pomoże Ci zbudować Twoją ścieżkę nauki. W Sklepie Super Programistek znajdziesz też ofertę konsultacji, na których możemy pogadać o takich sprawach!

No i najważniejsze: po prostu zacznij.

Jesteś dość dobra, by spróbować, a im dłużej naukę programowania będziesz odwlekać w czasie, tym trudniej będzie Ci zacząć. Nie potrzebujesz wiele: dostęp do internetu i komputer (choć wcale niekoniecznie ten najnowszej generacji) są wszystkim, co Ci potrzebne. Tuż obok motywacji i zapału!


Nie szukaj więcej wymówek. Nie porównuj się do swoich znajomych, którzy już progrmują – oni mogli zacząć wcześniej, gdzie indziej, chcieli robić, coś innego… Podążanie ich ścieżką i próba ich “dogonienia” może działać zniechęcająco. Znajdź więc swoją własną ścieżkę, a łatwiej będzie Ci osiągnąć swój cel.


W 2014 roku organizacja IDC opublikowała raport, w którym oszacowano, że na świecie jest ponad 18 milionów programistów (z czego 7.5 miliona to osoby zajmujące się tym jedynie hobbystycznie). Dzisiaj ta liczba może być znacznie większa. I założę się o dychę, że wielu z nich było bądź nadal jest w tym samym punkcie, w którym Ty jesteś dzisiaj. To jednak również znaczy, że nie jesteś sama, a dodatkowo – że zrobienie tych pierwszych kroków jest jak najbardziej możliwe i na wyciągnięcie ręki. Również Twojej! A ja będę trzymać za Ciebie kciuki!