Jak zacząć programować? – 5 kroków jak zacząć, by nie przestać

Niedawno miałam okazję występować na Geek Girls Carrots Poznań. Cel prezentacji prosty – opowiedzieć swoją przygodę z programowaniem, odpowiedzieć na pytanie jak wybrać język programowania i wreszcie jak zacząć programować (niekoniecznie) w 30 dni 😉 Do tego nie zanudzić publiczność i zmieścić się w 20 min (chyba dało radę). Jednak w mojej prezentacji zabrakło jednak ważnego punktu – tego, który następuje przed wyborem języka.

Jak zdecydować czego się uczyć?

Nie przyszedł mi do głowy, mimo, że od pewnego czasu niemal w każdym tygodniu na flynerdowej skrzynce ląduje wiadomość, którą mogłabym streścić do dwóch pytań:

  • „jak zacząć programować?” (zupełnie od zera)
  • „czego powinnam się teraz nauczyć?” (już mam początki za sobą)

Za każdym mailem, za każdą wiadomością stoi osoba, która prawdopodobnie spodziewa się jednej uniwersalnej odpowiedzi prowadzącej do celu. Niektóre osoby przedstawiają mi swoją historię, co je pasjonuje, co do tej pory zrobiły (dzięki czemu mam jakiś pogląd i mogę chociaż trochę podpowiedzieć), ale w większości wiadomość wygląda tak:

Chcę nauczyć się programować, ale nie wiem jak.
Czy chcesz mi pomóc, może coś doradzić?

Za każdym razem staram się odpowiedziecieć. Jednak nie mając zbyt wielu informacji o drugiej osobie odpowiedzi i porady te wyglądają podobnie. Czas zebrać je w jednym miejscu 😉

Jak zacząć programować w 5 krokach

Prawda jest taka, że „jak zacząć?” to nie jest pierwsze pytanie, które musisz sobie postawić zanim faktycznie zaczniesz programować. I mam tu na myśli programowanie jako karierę zawodową, a nie jako hobby (hobbistyczna zabawa jest dobra każda, która sprawia Ci przyjemność).

Najlepiej weź kartkę, zeszyt, albo utwórz nowy plik i zanotuj przemyślenia – będziesz do nich jeszcze wracać.

1. Wskaż swój cel

Postaraj się ustalić swoje cele długoterminowe.

Ouh, brzmi strasznie?

Niestety, nie radosna motywacja, a konkretnie postawione cele sprawią, że weźmiesz się do roboty 😉 Im jaśniej nakreślisz sobie swój cel, tym łatwiej będzie Ci zrozumieć czego potrzebujesz się nauczyć.

Podejdź do tego skrupulatnie i myśl o konkretach, staraj się nazywać to o czym myślisz, a nie tylko widzieć w wyobraźni.

– łączyć studia i pracę
– założyć rodzinę
– więcej podróżować
– wieźć szczęśliwe życie

Nadal brak konkretów? No dobrze, spróbujmy jeszcze raz.

Ogólny zarys celu długoterminowego jest lepszy niż brak go w ogóle, ale postaraj sobie odpowiedzieć na pytanie: czego tak naprawdę oczekujesz od swojej przyszłości?.

Przykładowo możesz zrobić to np. w ten sposób:

  • Jak będzie wyglądał Twój idealny dzień pracy?
  • Chcesz pracować w małym zespole, dla znanej marki, a może masz pomysł na własny biznes?
  • Wolisz pracę w biurze, w domu, czy może w modelu: work & travel?
  • Praca na pełen czy część etatu?
  • Gdzie się widzisz za 5 lat, a gdzie za 3 lata? Jakie zmiany mogą nastąpić w ciągu 1 roku? Może jest coś, co chcesz zmienić jeszcze w tym miesiącu?

Ostatnie pytanie jest klasykiem rekrutacji – gdzie się Pan/i widzi za X lat? Na szczęście dzisiaj nikt nie będzie go oceniał. Odpowiedź na to pytanie jest tylko dla Ciebie. Odwróć swoją oś czasu i podziel sobie swój długoterminowy cel na mniejsze punkty, które pomogą Ci go zdobyć.

To nie jest checklista, bo życie jeszcze nie raz zweryfikuje Twoje plany. Może już za rok okaże się, że inne wydarzenia zmieniły cel długoterminowy. Nie zakładaj, że jest to jakiś 100% plan 5-letni, którego musisz się trzymać. Wszystki te punkty i wiele innych, które wymyślisz pozwolą Ci zrozumieć – jak Ty chcesz, by Twoje życie wyglądało, a nie jak przypadkowo się toczy.

Możesz sobie te notatki zachować, stworzyc z nich tablicę, zrobić kolekcję na pintereście czy wykorzystać w dowolny sposób. Jeśli udało Ci się wypisać konkrety, to masz okazję się ich twardo trzymać każdego dnia, a możesz potraktować je tylko jako wskazówki.

2. Czy programowanie pomoże Ci osiągnąć Twój cel długoterminowy?

Aktualnie trwa boom na naukę programowanie – dla wielu osób to pomysł na siebie, który okaże się słomianym zapałem. Programowanie nie jest łatwe (nie jest też bardzo trudne i nie osiągalne), dlatego na pewno warto przemyśleć, dlaczego w ogóle chcemy zacząć programować.

Za nami ustalenie priorytetów. Może Twoim celem długoterminowym jest połączenie pracy z domu, tak by mieć więcej czasu dla rodziny? Może chcesz podróżować po świecie, albo założyć własną firmę?

Spróbuj odpowiedzieć sobie na pytanie: czy i jak programowanie pomoże Ci spełnić Twoje cele? Nie ważne jakie one są. Nie uczysz się programowania tylko po to by zostać programistą. Oczywiście, często chcesz zostać programistą / programistką, ale chcesz tego z jakiegoś powodu. Na programowaniu dla samego programowania się nie kończy.

Weźmy kilka przykładów:

Magda jest samotną matką przed trzydziestką. Obecnie pracuje w marketingu, jednak praca okazała się bardziej stresująca niż na zdjęciach kolorowych, kreatywnych zespołów. Chciała by się przeprowadzić do większego mieszkania, ale niestety obecne zarobki, mimo branych nadgodzin wciąż przeznacza na spłacanie kredytu studenckiego. Dodajmy jeszcze, że jej tytuł magistra europeistyki nie jest zbyt przydatny na rynku pracy. Jednak Anna ma plan – nauka pogramowania poszerzy jej obecne kompetencje, pozwoli uzyskać wyższe wynagrodzenie, a jednocześnie da jej na większą elastyczność i więcej czasu z dzieckiem.

Magda uczy się programowania z kilku powodów:

  • jest zmęczona obecną pracą
  • chce spłacić kredyt studencki
  • chce spędzać więcej czasu z dzieckiem i poprawić swoją jakość życia

Iza prowadzi własną firmę. Odkąd pamięta chciała projektować ubrania, dlatego stworzyła swój brand, a jej firma, chociaż nieduża, zatrudnia już kilka osób. Jej pracownia i butik cieszą się coraz większym uznaniem, dlatego założyła też sklep online, by trafić do szerszego grona odbiorców. Niestety, skorzystała z usług niesolidnego podwykonawcy i cały czas ma problemy z własną stroną www. Problemy te wiążą się z szukaniem nowych podwykonawców do każdorazowego łatania dziury (jej stresem, stratą czasu i pieniędzy). Dagmara chce nauczyć się programować, aby poznać swoją domenę od podszewki i świadomiej wybierać kontrahentów.

Iza uczy się programowania, gdyż:

  • chce rozumieć swój sklep internetowy od strony front-end i back-endowej
  • wie, że nauczenie się programowania pozwoli jej lepiej dobierać współpracowników

Teraz Ty odpowiedz sobie na pytanie jakie masz powody, by zacząć programować, czy nauka programowania poprawi coś w Twoim życiu 😉

jak zacząć programować

3. Dowiedz się, czego musisz się nauczyć, aby programowanie rzeczywiście spełniło Twoje oczekiwania

Możliwe, że już masz za sobą pierwsze potyczki z kodem. Możliwe, że uczysz się programowania już od jakiegoś czasu i masz względne pojęcie co w programowaniu lubisz najbardziej, a Ci przeszkadza. Pierwsze wrażenie, może jednak okazać się mylne. Możesz rozpocząć naukę HTML, CSS i JavaScriptu, tylko po to, aby odkryć, że jednak chcesz tworzyć aplikacje mobilne czy programować w Pythonie.

To zupełnie normalne, że wraz z poznawaniem technologii będziesz odkrywać inne obszary IT, w których możesz się rozwijać. Teraz najważniejsze dowiedzieć się co z programowaniem możesz robić, co lubisz i doskonalić to!

Najlepszym sposobem na odpowiedzenie sobie na pytanie „jak zacząć programować?” jest przygotowanie listy potencjalnych opcji ścieżki kariery i zgłębienie tematu.

Tym razem też staraj się podejść do tego precyzyjnie. Pomyśl o różnych stanowiskach związanych z programowaniem, ale też technologiach wykorzystywanych w pracy programisty np.

  • Front-end czy Back-end development (może Full-stack)
  • aplikacje mobilne: Android czy iOS?
  • Testowanie (QA)?
  • Analiza i obróbka danych, a może tworzenie baz danych?
  • Angular czy React? (front)
  • Django czy Rails (back)
  • WordPress + WooCommerce czy Magento

Zawężenie opcji nie jest takie trudne. Poszukaj osoby na wybranych stanowiskach i porozmawiaj z nimi. Skorzystaj z ich doświadczenia, by dowiedzieć się jak wyglądają ich codzienne obowiązki i jaka wiedza na tym stanowisku jest przydatna (to też odpowie Ci na pytanie jak zacząć programować, od jakiego języka, jakie zadania). Skonfrontuj to ze swoimi wyobrażeniami i zobacz czy Cię wciągnie.

Oczywiście precyzja z jaką możesz wybierać w technologiach zależy jak dobrze orientujesz się w temacie IT. Nie przejmuj się, jeśli jesteś zupełnie na początku. Jest wiele sposobów, by coś wybrać jako ścieżkę kariery na początek.

  • Wykorzystaj ogólne portale z ofertami pracy np. Pracuj.pl, MonsterPolska czy Glassdoor, aby znaleźć potencjalnych pracodawców, aby zidentyfikować nazwy stanowisk, ścieżki kariery czy ogólnie firmy, w których chcesz zacząć pracować
  • Za pomocą LinkedIn znajdziesz osoby, które już pracują w branży IT, w tym na stanowisku, do którego dążysz (chociaż może jeszcze o tym nie wiesz) – przejrzyj ich doświadczenie zawodowe
  • Dołącz do programistycznych grup na facebooku i tam zadaj pytanie o szczegóły związane z obowiązkami w pracy, może poznasz swojego mentora!
  • Idź na wydarzenie tematyczne, darmowe warsztaty, poznaj ludzi osobiście. Networking może okazać bardzo przydatny – złap później kontakt też na Linkedin

Dopisz nazwy swoich potencjalnych stanowisk. Ciekawe źródła możesz zachować za pomocą aplikacji typu Pinterest czy Pocket.

Jeżeli chcesz pracować jako freelancer czy założyć własny biznes, spróbuj znaleźć osoby w branży, które mają w Twoim odczuciu pracę idealną (np. kogoś, kto łączy zlecenia jako WordPress Developer, a jednocześnie podróźuje po świecie czy pracuje jako Ruby On Rails Developer i ma spokojne życie rodzinne).

Tylko jak takie osoby poznać?
Najlepiej na żywo, w trakcie meetupów i konferencji, sesji networkingowych. Wśród poznanych osób możesz znaleźć przyszłych współpracowników czy właśnie swoją inspirację. Osoby „z Internetu” też nie są zupełnie niedostępne, a tym bardziej nie są anonimowe. Możesz kogoś poznać przez wywiad czy artykuł. Często osoby aktywne w social mediach spotkasz na wydarzeniach branżowych. Odważ się na rozmowę twarzą w twarz na tematy, co do których masz wątpliwości.

4. Wskaż umiejętności i doświadczenie jakie potrzebujesz

Znasz już potencjalne ścieżki kariery. Masz też zasób słownictwa branżowego, słów kluczy, które pozwolą Ci przefiltrować nagłówki ofert pracy. Przyjrzyj się im i znajdź umiejętności, które są wymagane, aby pracować na wybranym stanowisku czy w twojej idealnej firmie. Na tej podstawie jesteś wstanie dokładnie określić czego chcesz się nauczyć na start.

Wyszukać konkretne oferty pracy. Proponuję portale związane z branżą IT, ponieważ na nich zazwyczaj stanowiska są lepiej technicznie opisane:

  • Just Join IT
  • No Fluffy Jobs
  • Bulldog Jobs
  • Indeed
  • Stackoverflow Jobs
  • Github Jobs
  • Authentic Jobs

Zwróć uwagę szczególnie na wymagania staży, stanowisk juniorskich. Sporo ofert, będzie miało tytuły po angielsku, ale możesz też spotkać się z określeniem polskim „młodszy specjalista” + nazwa technologii / języka programowania. Wymagania staraj się wypisywać z „górką” – płace w IT z roku na rok rosną, ale wymagania również. Na razie nie skupiaj się na konkretnym mieście, ale na samych wymaganych umiejętnościach.

Przygotuj sobie arkusz kalkulacyjny, w którym zanotujesz powtarzające się umiejętności i obowiązki na wybranym stanowisku.

Oto przykładowy arkusz dla początkującego programisty Pythona:
jak zacząć programować w Pythonie

(otwórz w nowej karcie, aby powięszyć)

5. Zdobądź kompetencje!

Masz listę umiejętności i obowiązków, które wiążą się z twoim wymarzonym stanowiskiem. Zacznij działać!

Znajdź kompetencje, które już masz – warto je zanotować. Za jakiś czas zaczniesz się skupiać tylko na aspektach technicznych, zapominając o cennych doświadczeniach, umiejętnościach, które możesz przenieść na nowe obszary. Nawet bez doświadczenia komercyjnego masz atuty, które można wyeksponować w CV czy na LinkedIn – pomyśl o projektach studenckich czy wolontariacie.

Wybierz umiejętności, które się najczęściej powtarzają.

Postaraj się zidentyfikować te najłatwiejsze i przechodź do coraz trudniejszych. Niektóre umiejętności na poziomie postawowym jesteś w stanie opanować w kilka dni, a przy kolejnej okazji do nich wrócić. Na przykład opanowanie podstaw SQL zajmie Ci jedno popołudnie, a później podczas nauki back-endu (np. PHP, Pythona, Ruby czy Javy) trafisz na połączenie z bazą danych i na pewno łatwiej do tematu podejdziesz mając już ogólne pojęcie o temacie.

Weź też pod uwagę kolejkę priorytetów. Znajomość HTML i CSS jest podstawą ścieżki Front-End Developer. Jeśli jednak chcesz rozwijać się jako Back-end developer, HTML i CSS nie muszą być Ci konieczne na start. Wystarczy znajomość tych technologii na poziomie postawienia prostego kodu pozwalającego na wyświetlenie wyników operacji na back-endzie. Za to warto już na wczesnym etapie nauki poznać system kontroli wersji Git.

Dla przykładu tworzenia aplikacji w Pythonie możesz uczyć się tak:

HTML/CSS podstawy → Python → Django

ale nauka Python nie wymaga znajomości HTML’a, więc dobra, a może nawet lepsza będzie kolejność:

Python → HTML/CSS podstawy → Django

Ta kolejność zależy od Twoich preferencji i czego przyjemnie Ci się uczy.

Innym podejściem, może być nauczenie się tego, do czego masz najbliżej.

Załóżmy, że rozważasz kilka stanowisk związanych z programowaniem, nie możesz zdecydować się na doprecyzowanie konkretnego stanowiska, a Twój cel długoterminowy to zmiana pracy na lepiej płatną (nie zbyt konkretna). Dość dobrze czujesz się w Excelu, tylko co dalej?

Możliwe, że to dobry punkt wyjścia do pracy związanej z analizą danych (Data Science). Jeżeli masz pracę, w której wykorzystujesz Excela, może nie musisz rzucać wszystkiego i zaczynać od HTML i CSS, tylko dlatego, że front-end ma niski próg wejścia(to zależy 😉 ). Może warto poznać język VBA, a dalej spróbować swoich sił w kierunku całkowitej zmiany branży. Doświadczenie z programowaniem będzie cennym wpisem do CV.

Opcji, jest tak dużo, że bez wcześniejszego przeanalizowania i zawężenia tematów można zupełnie się w tym wszystkim pogubić. Na szczęście tym masz swój arkusz umiejętności technicznych, mniej więcej wiesz w jakiej kolejności chcesz je zdobyć i teraz też wiesz co wpisać w google. Możesz uczyć się za pomocą kursów online, chodząc na warsztaty, robiąc tutoriale, czytając blogi i książki…oraz na wiele innych sposobów!

„A co jeśli wszystko to już wiem, ale nadal nie wiem jaki język programowania jest dla mnie?”
Ciężki przypadek, jeżeli Twoim największym jest wybór języka programowania i tylko to Cię powstrzymuje przed dalszym rozwojem to się sięgnij po quiz: programming language for me.

Ponadto, jeżeli póki co chcesz tylko zacząć programować, spróbować czy programowanie jest dla Ciebie polecam naukę Pythona. Jest w mojej opinii najlepszym językiem dla początkujących. Z wpisu 10 powodów, by nauczyć się Pythona, dowiesz się dlaczego tak uważam.

Czas połączyć wszystko w całość

Masz swoje notatki? Wiesz już jak zacząć programować – sprawdźmy na przykładzie:

1. Oto Hania
Po skończonych studiach z zarządzania od początku ma pracę biurową. Obecnie od kilku lat pracuje w sekretariacie w międzynarodowej korporacji. Wybór, niestety, okazał się dla niej pomyłką. Praca zupełnie nie daje jej satysfakcji – nie ma przestrzeni żeby się rozwijać, zostać docenioną, ani aby dostać awans. Ponadto jej stanowisko wiąże się z dużą liczbą nadgodzin zupełnie od niej niezależnych. Chciałaby zostawić sztywną, korporacyjną atmosferę. Zdobyć pracę, którą może zamknąć po skończonych 8 godzinach, przy której może pozwolić sobie na dłuższy wyjazd bez poczucia winy i niepokoju.

nauka programowania od podstaw

2. Hania doszła do wniosku, że może się przebranżowić, zacząć programować. Nie wiedziała jeszcze nic o programowaniu, ale słyszała, że to dobra praca wymagająca ciągłego rozwoju.

Hania:

  1. jest znudzona obecną pracą
  2. chce się rozwijać i wykazać
  3. potrzebuje luźniejszej atmosfery w pracy np. start-up’u

3. Jak wiele osób początkujących nasza bohaterka zaczęła się uczyć HTML i CSS, gdyż od razu widać efekt napisanego kodu. Doszła do JavaScriptu, stworzyła stronę ze sliderem i utknęła. Przeskoczenie pewnego progu w nauce okazało się dla niej wręcz niemożliwe. Dodatkowo, cały czas nie czuła się dobrze na froncie, gdyż miała ciągłe wrażenie, że brak jej poczucia estetyki.

Stąd postanowiła przemyśleć jeszcze raz ścieżkę kariery. Przejrzała oferty pracy w kategorii informatyka. Wypisała sobie nieznane pojęcia i przeczytała w Internecie opisy po szczególnych stanowisk IT. Na tej podstawie wybrała ścieżkę: back-end.

Back-end pozwoli jej na tworzenie aplikacji webowych od strony logicznej, niewidocznej dla użytkownika. W jeden weekend Hania obejrzała na youtubie kursy podstaw programowania w kilku językach back-endowych. Tak na podstawie wrażeń z tutoriali i po lekturze kilku artykułów wybrała Pythona na start. Mimo, że trudniej dostać staż czy stanowisko juniorskie, to są one często lepiej płatne.

Zaczęła od interaktywnego kursu Pythona przy okazji powtarzając język angielski.

4. Następnie wypisała sobie konieczne umiejętności:
programowanie w Pythonie 3
– znajomość systemu kontoli wersji Git
– znajomość baz danych SQL
– znajomość frameworku webowego Flask/Django

5. Hania wybrała darmowe materiały.
Po wprowadzającym kursie sięgnęła po książkę do PythonaAutomatyzacja nudnych zadań w Pythonie” (darmowa po angielsku). Poszukała prostych i trochę bardziej skomplikowanych zadań w Pythonie.

Żeby się sprawdzić sięgnęła do 50 zadań w dowolnym języku programowania. W związku z tym postanowiła też poznać system kontroli Git. Obsługa Gita okazała się zaskakująco prosta, więc wszystie kody Hania umieszczała na bieżąco w dobrze opisanych repozytoriach. Wrzuciła też swoje dotychczasowe projekty front-endowe.

Następnie przeszła do nauki baz danych, trochę teorii i trochę interaktywnych tutoriali. Uznała, że czas znaleźć jakiś praktyczny przykład połączenia Pythona i SQL. Zaczęła szukać darmowych tutorali i odkryła, że większość z nich sugeruje użycie Flaska lub Django. Tak nasza bohaterka przeszła krok dalej, wzięła się za ostatni punkt ze swojej listy – poznanie frameworków. Zaczęła od pierwszego – Flaska, by później przejść do Django.

Nie raz utknęła na długie godziny i miała ochotę się poddać, ale miała swoje cele i powody dlaczego zależy jej na przebranżowieniu.

Postawiła na standardowe projekty, do których można znaleźć przykładowe rozwiązania: książkę telefoniczną, to-do listę, własny blogowy CMS (np. Django girls udostępnia taki tutorial) czy chat. Każdy projekt wrzuciła i opisała na Githubie, a także udostępniła je na Heroku.

Zaprojektowała też własną aplikację z wykorzystaniem zewnętrznego API oraz aplikację RESTową.

6. Hania rozsyła swoje CV do firm programujących w Pythonie, nawet jeśli nie mają w tej chwili stażu czy stanowisk juniorskich, gdyż ma mocne podstawy, by dostać się na staż 😉

Mam nadzieję, że ten post pomoże wam w wyborze ścieżki kariery i odpowie na tytułowe pytanie „Jak zacząć programować?” i jak skąd tak naprawdę wiedzieć czego się uczyć 😉

Jeżeli ten post Ci pomógł, zostaw krótki komentarz albo like na facebooku, żebym wiedziała czy takie tematy faktycznie się przydają 😉