Pytania z serii „Jak uczyć się programowania?” powracają do mnie jak bumerang. Wiele osób, z którymi rozmawiam i które są na początku swojej drogi z programowaniem o to pyta. Postanowiłem, że podciągnę pod to pytanie szereg współistniejących w dyskusjach zapytań.
Nie jestem ekspertem w dziedzinie zarówno psychologii, nauki jak i motywacji, ale programowania sam uczę się dużo i obcuję z tą branżą na co dzień, więc kilka rzeczy na ten temat postanowiłem napisać.
Chcę jednak na wstępie zaznaczyć, że odpowiedzi na te pytania to temat indywidualny i ja wymienię wszystkie możliwe sugestie, które mogą pomóc. Nie są one ani najlepsze, ani jedyne słuszne. Sam musisz decydować i eksperymentować.
Pisałem również na ten temat we wpisie numer 8, więc serdecznie Cię tam zapraszam. Nie wyczerpało to jednak tematu, ze względu na retrospektywny charakter wpisu.
Poruszę cztery pytania, które składają się na pytanie „Jak uczyć się programowania?”:
- Czy na początku język jest ważny?
- Jak szukać pierwszej pracy?
- Co w przypadku bootcampów, studiów i certyfikatów?
- Czy ja się do tego nadaję?
Zagadnienia nie należą do tych trywialnych, ale postaram się udzielić możliwie najlepszych odpowiedzi.
Zaczynajmy!
Zatrzymaj się!
Książki to obowiązkowa pozycja dla każdego zainteresowanego programowaniem!
Jest to zdecydowanie jedno z najlepszych źródeł do nauki programowania! Zyskasz przewagę w branży IT i osiągniesz dużo jako deweloper.
Jak uczyć się programowania – Wprowadzenie
Tak jak wspominałem, tematu tego miałem już nie poruszać. Rozmawiam codziennie z nowymi osobami i w większości pojawia się pytanie „Jak uczyć się programowania?”.
Pytanie wcale nie jest łatwe, bo gdy odpowiadam w stylu „Zacznij pisać programy”, to pojawia się dziesiątki odpowiedzi – „Jakie?”, „Jak?”, „Jaki język?”, „Jaki system operacyjny?”, „A może tak?”, „A może inaczej?”, „Co dalej?”, ” Czy sobie poradzę?”.
Jak mawia klasyk, im głębiej w las, tym więcej drzew. Odpowiedź na te pytania jak wspominałem, nie jest trywialna. Jeszcze 15-20 lat temu było chyba łatwiej? Teraz mamy mnogość języków, frameworków czy narzędzi i od samego przeglądania może rozboleć nas głowa.
Podzielę ten wpis na dwa poziomy, tak by było łatwiej Tobie wpasować się w jeden z nich.
Zacznijmy od pierwszego poziomu.
Jak uczyć się programowania? – P1
Na tym poziomie są ludzie, którzy chcą się przebranżowić i nigdy nie napisali linijki kodu. Tu pytań jest chyba najwięcej i dzielą się na dwie główne kategorie – techniczne i miękkie.
Z technicznych przejawia się pytanie o to, jaki język wybrać, natomiast z tych miękkich pytaniem numer jeden jest pytanie w stylu „Czy ja się nadaję do programowania?”.
Już teraz na jedno i drugie pytanie z czystym sumieniem mogę odpowiedzieć, że nie wiem tego ani ja, ani setki tysięcy, jak nie miliony innych programistów. Tej odpowiedzi w sobie musisz poszukać Ty, zwłaszcza gdy chodzi o drugie pytanie.
Pytanie pierwsze
Podrzucę Ci jednak kilka swoich historii i pomysłów, które u mnie zadziałały i które mogą wpłynąć na Twoją decyzję. Ja gdy zaczynałem, w modzie, w szkołach i na uczelniach był Pascal/C++. Były to pierwsze języki, w których pisałem swoje pierwsze programy. I co ciekawe, w żadnym z tych języków nie pisałem oprogramowania produkcyjnie. Produkcyjnie używałem C#, Javy, Python, JS w połączeniu z SQL, CSS i HTML.
Jak widać, w moim przypadku dobór pierwszego języka był niejako narzucony przez inne osoby i nie był tym językiem na całe życie. Oczywiście wiele osób powie, że lepiej uczyć się na początku od razu docelowego języka, np. Python. I zapewne mają rację, sam gdybym miał możliwość X lat temu świadomego wyboru technologii, wybrałbym pewnie coś z grupy Python/ Java/C#.
Jaki więc z tego morał? Wybierz dowolny język i z nim pracuj. Z czasem próbuj kolejnego, bo z doświadczenia wiem, że programista nie skupia się przez całe swoje zawodowe życie na jednym języku bądź technologii. Oczywiście programista wyspecjalizuje się w jednym, ale będzie znał kilka innych, które poszerzą jego perspektywę. A jak już znajdziesz swój język idealny? No cóż, jak mawia mój programistyczny mentor Gynvael Coldwin
Programista, poznając inne jezyki, będzie pisał lepiej w swoim ulubionym języku
Gynvael Coldwind
Pytanie drugie
Czas na pytanie mniej techniczne, a bardziej wynikające z barier w naszych głowach. Czy Ty się nadajesz do programowania? Pytanie, na które odpowiedzi nie zna nikt poza Tobą, a co więcej sam możesz tej odpowiedzi długo szukać i nigdy nie nadejdzie. Wszystko jest pokłosiem tego, w jaki sposób myślimy. Jeżeli uznasz, że się nie nadajesz, to będziesz mieć rację. Tu przytoczę pewien klasyk, którego autorem jest najprawdopodobniej Henry Forda.
Jeżeli myślisz, że coś możesz lub czegoś nie możesz, za każdym razem masz rację
Henry Forda
Nie dowiesz się jednak tego bez czystej praktyki, Napisania programu, zabawy z kodem lub porozmawiania z innymi programistami, którzy też przecież kiedyś zaczynali i też nic im nie układało się w kodzie tak, jak powinno.
Gdy będziesz mieć świadomość tego, że nikt nie rodzi się z klawiaturą w dłoniach, to odpowiedź przyjdzie szybciej. Oczywiście są osoby, które już w młodości i na studiach wymiatają. Wynika to jednak głównie z ich godzin praktyk, które mogły mieć miejsce już od najmłodszych lat. Nie oznacza to jednak tego, że Ty do programowania się nie nadajesz.
Jeżeli chodzi o psychologię i motywację, to tyle mogę od siebie napisać, więcej źródeł możesz szukać u osób zajmujących się tymi tematami zawodowo.
Przejdę do drugiej grupy pytań.
Jak uczyć się programowania? – P2
Gdy już zaobserwujemy, że programowanie wydaje się być nawet fajne i podejmiemy decyzję, że jednak chcemy spróbować trochę więcej z tego wyciągnąć niż tylko napisanie prostego kalkulatora, to pojawiają się kolejne pytania. Czy robić certyfikaty, iść na studia kierunkowe lub na bootcamp? Co trzeba wiedzieć, by dostać pierwszą pracę?
Kolejne dwa pytania, na które znów mogę odpowiedzieć, że nie wiem. Wszystko to jak zwykle zależy od wielu czynników, które wynikają z Twojej aktualnej sytuacji, zarówno zawodowej, jak i prywatnej.
Pytanie pierwsze
Wykształcenia, certyfikatów i ukończonych kursów w mojej opinii nigdy za wiele. Tu jednak wszystko zależy od tego, gdzie się aktualnie jest. Jeżeli skupimy się na tym, by przejść przez kurs na Udemy czy bootcamp, który nomen omen nie zawsze jest złym wyborem, a w trakcie szkolenia i po nim nie będziemy uzupełniać braków wiedzy na tematy takie jak działanie sieci, wzorce projektowe, budowa komputera czy baz danych, to ciężko będzie liczyć na sukces w postaci zdobycia pierwszej pracy.
Musisz mieć świadomość tego, że w programowaniu trzeba być proaktywnym. To, że przejdziesz kilka ścieżek edukacji online, ukończysz studia w danym kierunku lub stacjonarny kurs nie oznacza, że będziesz programistą. Bez zaangażowania i ciągłej nauki nie będzie dobrze.
Będziesz mieć wiedzę na temat języka, czy nawet podstawową wiedzę techniczną, która za jakiś czas i tak ulotni się bez praktyki. Do tego blokować Cię będą inne aspekty, niezwiązane stricte z programowaniem, które również będą poruszane na rozmowie o pracę.
Nauka to pokarm dla rozumu
Lew Tołstoj
Jak więc działać? Jeżeli planujesz już zainwestować czas i pieniądze w szkolenia, to decyzję podejmij świadomie. Nie szukaj kursu czy bootcamp, który ma odwalić robotę za Ciebie i wrzucić Ci do głowy paczkę o nazwie „Programowanie”, która się tam zaadoptuje i będziesz mógł zarabiać 15k, po pół roku kursu. Dodatkowo nie zastanawiaj się nad tym, co wybrać, zbyt długo. Jeżeli już się zdecydujesz, to poczytaj opinie i wybierz najlepiej ocenianą szkołę/kurs. Większość pracy i tak będziesz robić po godzinach, więc nie ma różnycy co wybierzesz. Osoby tam uczące mają być bodźcem do samodzielnej pracy. Mentorów znajdziesz później, to tylko kop na start!
Polecam też samodzielną naukę w domu, dobry na start jest portal SPOJ, o którym wielokrotnie mówiłem i pisałem.
Pytanie drugie
Często dostaję pytania o to, jak znaleźć pierwszą pracę i jak dobrze wypaść na rekrutacji. Gdzie szukać, czego się uczyć przed rozmową i którą firmę ewentualnie wybrać, jak już będzie ich więcej niż jedna.
Czwarty już raz odpowiem tak samo – nie wiem. Odpowiedź w tym przypadku również nie jest trywialna i wszystko zależy od danej firmy, stanowiska, stosu technologicznego czy chociażby języka, w jakim dana rozmowa będzie przeprowadzona.
Najlepiej na bieżąco pracować z danym językiem i rozmowę odbyć na luzie. Moim zdaniem nie sprawdzi się nauka „pod rozmowę rekrutacyjną” na przykład narzędzi, których nigdy nie używaliśmy, technologii, z których nie korzystamy czy innych temu podobne. Częściej liczy się szczerość, ambicja czy proaktywność. Braki można nadrobić i rekruter to wie. W moim przypadku to się sprawdzało. Byłem zarówno po stronie tej, gdzie jestem kandydatem, jak i tam, gdzie to ja rekrutowałem kogoś.
Życie po prostu jest. Trzeba płynąć wraz z nim.
Jerry Brown
Odpowiedz sobie na pytanie, czy pójdziesz na rozmowę rekrutacyjną, nie programując na co dzień w danej technologii? Tu odpowiedź raczej jest oczywista i to powinno wystarczyć, by na takiej rozmowie wypaść na tyle dobrze, by dostać swoją pierwszą pracę.
Tu też powiązać można rekrutację z bootcampami, certyfikatami czy studiami. Dobrze jest przez to przebrnąć i zebrać papierki, ale bez praktyki i codziennego obcowania z technologią będzie ciężko dobrze się zaprezentować.
A co do tego gdzie szukać pracy. Sposobów aktualnie jest mnoga ilość – od portali rekrutacyjnych, forów dyskusyjnych, Social Media po meetup. Najważniejsze jest nie to, by wysłać CV i oczekiwać na zbawienie.
Lepiej, gdy będziesz aktywny w tych miejscach i pokażesz siebie z jak najlepszej strony. Wtedy może okazać się, że nie będzie potrzebna rozmowa rekrutacyjna, bo na tyle dużo porozmawiałeś z osobami online lub podczas zakulisowych rozmów na eventach programistycznych, że praca sama przyjdzie do Ciebie.
Jak uczyć się programowania – Podsumowanie
Pytanie „Jak uczyć się programowania” rozpoczyna lawinowo grad pytań i szeroką dyskusję. Omówiłem dwa poziomy, na których pojawiają się najczęściej dwa szczególnie trudne pytania. Na żadne z nich nie ma jednoznacznej odpowiedzi, dlatego wszystkie moje odpowiedzi są w stylu NIE WIEM!
Na tyle jednak w jakim stopniu mogłem Ci pomóc i wyjaśnić pewne mechanizmy, na tyle to zrobiłem. Musisz jednak sam przeanalizować wiele spraw związanych z branżą IT i poszukać, poeksperymentować oraz przede wszystkim posuwać się do przodu. Gdy przez miesiąc zastanawiasz się jaki język wybrać, to coś tu jest nie tak. Wystarczy wejść w pierwszy lepszy ranking i rzucić kostką, wybrać język, którego liczba na kosce reprezentuję miejsce w rankingu i w nim zacząć pisać.
Nie powinieneś zbyt mocno przejmować się decyzjami na początku swojej programistycznej drogi, bo dopiero za jakiś czas wpadniesz na właściwe tory.
I zupełnie na koniec, to są tylko moje porady, ktoś może mieć zupełnie inne zdanie na ten temat i to szanuję. Nie jestem też wyrocznią i moje słowa nie były, nie są i nigdy nie będą świętością, więc zachowaj dystans. Tylko Ty wiesz, co dla Ciebie jest najlepsze!
Newsletter
Nie przegap i dołącz już dziś do 838 osób będących w tym Newsletter! Otrzymuj co niedzielę o godzinie 20 listę kilku ciekawych tematów, które miałem okazję obserwować w mijającym tygodniu.
Tematy będą głównie techniczne, ale czasami pojawi się coś, co może wprowadzi Cię w stan zadumy i zmusi do dyskusji w szerszym gronie. Zero spamu!
4 komentarze
Fajny wpis. Trochę się nie zgadzam z tym by wybierać język programowania poprzez rzut kostką, jako początkujący. Myślę że lepszym rozwiązaniem jest poszperanie w sieci o językach które rozważamy. Na przykład Stack Overflow corocznie robi fajne sprawozdania. Warto wiedzieć czy dany język jest trudny do nauki, tak jak dla mnie Java, czy łatwiejszy. Czy powoli nie staje się językiem wymarłym.
Myślę że ludzie którzy chodzą na rozmowy o pracę, a niewiele jeszcze umią programować, to są ludzie bardzo odważni. Mi tej odwago zawsze brakowało. Zawsze sobie mówiłem że za mało jeszcze umiem żeby starać się o taką pracę. Myślę że z tym w końcu skończę i pójdę na jakieś interview i zobaczymy jak będzie.
Ten wpis jest bardzo fajny i wiele wnosi do mojego życia oraz przyszłej kariery jako programista.
Dzięki :-).
Ja rozpoczynałem przygodę od html, CSS, SQL i pierwszych stron www sporo lat temu. Zgłębiałem później C++ i kolejne. Trzeba grzebać w sieci, drążyć temat do rozwiązania problemu. Z perspektywy czasu mogę powiedzieć że programista programiście nie równy.
U mnie nauka programowania zaczęła się na studiach. Z perspektywy czasu i własnych doświadczeń mogę powiedzieć, że najlepszym sposobem na naukę jest praktyka. Znajdujesz jakiś problem (np. jak rozwiązać układ równań liniowych) i starasz się to przełożyć na język programowania. Praktyka, praktyka i jeszcze raz praktyka!
Jest w Internecie bardzo dużo bardzo dobrze napisanej dokumentacji. Zazwyczaj twórcy języków czy technologii dostarczają opisy funkcjonalności, na przykład Python ma bardzo dobrze napisaną dokumentację z bardzo zrozumiałymi przykładami.
Tak naprawdę do nauki programowania wystarczą dwie rzeczy – komputer z Internetem oraz chęci 😉
Ja co prawda programistą z krwi i kości nie jestem, ale będąc administratorem sporo programuje w pracy. U mnie naukę nowego języka można podzielić na dwie kategorie:
1. W pracy programy powstają z potrzeby(np. skrypty do monitoringu, rozbudowane raporty, programy do monitoringu). Tutaj nowego języka uczę się tak jakby w boju- najpierw krótkie szkolenie (o ile to możliwe), później przeczytanie tutorial, dokumentacji i do boju- piszemy program.
2. W domu – nowych języków uczę się by zdobyć nowe umiejętności lub jako hobby. Tutaj metoda jest bardziej czasochłonna: oglądam kursy video na udemy, czytam tutoriale, chodzę na darmowe kursy (tak np. uczyłam się c#), uczestniczę w programach mentoringowych. Programy, które powstają są potrzebne mi w domu , tak jak np. gry dla moich dzieci, filtrator SMS na komórkę czy też ostatni program do obsługi robota.