Kategorie
Publicystyka

Nie płać za kurs programowania

Jest taka branża, w której zarobki są świetne, zlecenia płyną z całego świata a pracodawcy prześcigają się w pomysłach na zdobycie i zatrzymanie pracowników. Owszem, próg wejścia jest wysoki, bez sumienności i dokładności nie ma mowy o wynikach – za to opanowanie kilku rzadziej używanych technik i narzędzi sprawia, że pensja szybuje w kosmos.

Mowa oczywiście o spawaniu podwodnym.

Dlaczego nie widzimy natrętnych reklam divecampów, obiecujących gwarantowane zatrudnienie po półrocznym, intensywnym szkoleniu nurkowo-spawalniczym? Czemu nikt nie namawia do porzucenia obecnego stanowiska i rozpoczęcia suto płatnej podwodnej przygody? Pewnie dlatego, że większość ludzi boi się pływać, gdy nie sięga stopami dna, niewielu ma predyspozycje do bycia dobrym spawaczem a samo zajęcie jest dość niebezpieczne.

JSON z HRejterów, znany także jako Szymon Szczęśniak z CodeTwo Software, opublikował jakiś czas temu film w którym odpowiada na pytanie, czy można rozpocząć pracę w IT mając 30, 40 czy 50 lat i czy koniecznie musi to oznaczać naukę programowania (spoiler – nie musi).

Ja skupię się na prostszej parze pytań: „czy warto wydać XXXX zł na kurs programowania” oraz „jakiego języka programowania mam się uczyć”. Uwaga! Programuję 3/4 życia, większość tego czasu za pieniądze, dawno już zapomniałem jak to jest nie umieć. Proszę brać na to poprawkę.

Na początek najważniejsze pytanie:

Czy warto wydać XXXX zł na kurs programowania?

Nie.

I w zasadzie na tym mógłbym tekst zakończyć, ale jednak wolę swoją opinię uzasadnić. Tak więc…

Nie wydawaj żadnych pieniędzy, jeśli dopiero zaczynasz albo jeśli zupełnie nic nie umiesz. Być może wieczorowe, weekendowe lub korespondencyjne szkoły programowania robią dobrą robotę, ale kosztują kilka lub kilkanaście tysięcy złotych. Taka kwota pozwoli ci wziąć bezpłatny urlop, utrzymać się przez kilka tygodni i samodzielnie uczyć programowania przez 8-12h dziennie w swoim własnym tempie. Dorzuć do tego godzinę lub dwie na świeżym powietrzu i dość snu, by porządnie wypocząć.

W każdej szkole programowania, jakkolwiek by się nie nazywała, trafisz na ludzi o bardzo zróżnicowanych umiejętnościach. Niektórzy robią „w komputerach” od lat, inni po raz pierwszy zobaczą okienko konsoli tekstowej. Umiesz sporo – nudzisz się czekając na resztę grupy, marnujesz czas (oraz pieniądze). Umiesz mało – szybko przestajesz rozumieć co się dzieje, marnujesz czas (i pieniądze). Umiesz w sam raz – skoro sobie radzisz, nauczyciel nie poświęci ci dość uwagi, marnujesz pieniądze.

Gdy uczysz się sam/sama, w dowolnej chwili możesz przerwać naukę a reszta kasy zostaje w kieszeni. Bo wiesz, może okazać się, że to całe programowanie z dowolnych powodów nie jest dla ciebie, ale całą kwotę trzeba było zapłacić przed rozpoczęciem zajęć. Przykład z życia – kilka lat temu poszedłem na zajęcia wprowadzające do nurkowania. Zapoznałem się z teorią, dostałem cały osprzęt, spędziłem godzinę pod wodą oddychając przez aparat. Względnie dobrze radziłem sobie z regulacją wyporności, trochę bolały mnie uszy ale… nie spodobało mi się za bardzo. W zasadzie to prawie wcale. Ale przed lekcją intro kosztującą dwie stówki nie wiedziałem, jak będzie, więc gdybym wydał z góry dwa tysiące na cały kurs, byłoby mi smutno. Z programowaniem możesz mieć podobnie, nie każdemu przypadnie do gustu taki rodzaj wysiłku umysłowego.

Czy każdy może programować?

Nie. Być może. Nie wiem.

Z całą pewnością nie każdy będzie w tym wystarczająco dobry i nie każdy odnajdzie w tym przyjemność. Można tu rzucić cynicznym komentarzem, że w IT przynajmniej łzy ociera się pomiętymi studolarówkami, ale postawmy sprawę jasno – nie zawsze silna wola i samozaparcie doprowadzą do satysfakcjonujących wyników. Gdy nie masz predyspozycji plastycznych, po kilkuset godzinach nauki rysunku osiągniesz poziom utalentowanego nastolatka-samouka, dla którego szczyt twoich możliwości to poziom startowy.

Czasem wiadomo, że wymarzona kariera się nie wydarzy – wystarczy spojrzeć na fizyczne wymagania stawiane przed zawodnikami sumo, pilotami myśliwców, dżokejami czy żołnierzami kompanii reprezentacyjnej. Jeśli chcesz żyć z cerowania artystycznego ale wśród twoich cech brak cierpliwości i dokładności, też nic z tego nie będzie.

Podobnie – programowanie kłóci się z zamiłowaniem do rutyny i powtarzalności. Trzeba być gotowym na ciągłe dokształcanie i godzić z tym, że ekosystem cały czas ewoluuje a niektóre technologie okażą się się ślepym zaułkiem. Premiowana jest umiejętność przewidywania problemów i zapobiegania im, zanim wystąpią, oraz odporność psychiczna gdy po kilkunastu lub kilkudziesięciu godzinach prób coś nadal nie działa.

Jeśli lubisz rozkładać każdą decyzję na czynniki pierwsze, możesz przeczytać książkę Maćka Aniserowicza „Zawód programista”. Daj mi wtedy znać, czy jest ciekawa. Ja nie czytałem.

Jakiego języka programowania się uczyć?

Wszystko jedno. Serio. To i tak nie będzie jedyny język, jaki poznasz. U mnie wygląda to tak: najbardziej lubię składnię i narzędzia języka C# i jeśli coś mam zrobić na szybko, to używam właśnie jego. Znam też Javę, bo w niej przez wiele lat programowałem telefony z Androidem. Znam C i kiedyś radziłem sobie w C++, ale od dawna ich nie dotknąłem. Zdarzało mi się robić coś w PHP oraz JavaScripcie, liznąłem GWT. Uniwersalną wiedzą jest język zapytań SQL, niszową – PL/SQL. 30 lat temu na 8-bitowcach był Basic i prosty asembler. Radzę sobie z R, znam podstawy Matlaba. W unixach zdarza się coś na szybko machnąć w bashu, Perlu, awk, czy textutilach (grep, sort, split, tr, wc), pod Windowsem oskryptować coś jako batch. Na studiach pisałem w Pascalu. Czasem trzeba było ubrudzić się Visual Basicem. Kiedyś rozumiałem Prologa i SML-a, raz w życiu użyłem języka Lua.

Łącznie ponad 20 języków w ciągu 30 lat. Większość znam słabo, ale w razie potrzeby potrafię je czytać. Z popularnych pozycji zabrakło Pythona, PowerShella, czy Go. Mamy też dużą liczbę narzędzi, których używa się tworząc pliki konfiguracyjne albo przekazując skomplikowane dyrektywy z linii komend – to też pewnego rodzaju programowanie.

Wiele osób zaczyna programować „przy okazji” – gdy odkryją makra w Excelu, skrypty do Minecrafta albo edytor map do ulubionej strzelanki. Przesiadka na język ogólnego przeznaczenia może być wówczas zaskakująco łatwa.

Czy trzeba znać język angielski?

To zależy. Na poziomie podstawowym – nie. Mamy dość książek i materiałów online opisujących po polsku wszystkie tematy potrzebne na początku kariery. Na poziomie średnio zaawansowanym zauważysz, że napisanie, przetłumaczenie i wydanie książki trwa co najmniej rok, więc bez znajomości angielskiego będziesz nieco w tyle, poza tym z dużo większym trudem przyjdzie ci odnalezienie w sieci potrzebnych materiałów. Na poziomie zaawansowanym będziesz pracować z narzędziami i technologiami, które nigdy nie doczekają się publikacji w języku polskim.

Od czego zacząć?

Jeśli nie wiesz, jaki język wybrać – wybierz C# lub Pythona. Możesz rzucić kostką.

Potem znajdź ze dwie-trzy książki dla początkujących, najlepiej z zadaniami na końcach rozdziałów. Takie nie za grube, bo cegły po tysiąc i więcej stron są niewygodne do czytania i odkładania na biurko. Znaczna większość materiału się powtórzy, ale łatwiej zrozumiesz te same kwestie, gdy będą tłumaczone i demonstrowane w różny sposób.

Używanie narzędzi programistycznych będzie na początku onieśmielające, pakiety w rodzaju Visual Studio mają sto milionów okien, ikon, przełączników, opcji konfiguracyjnych i wszystkiego innego. Poznasz je z czasem, na początku używaj ustawień domyślnych.

Gdy nauczysz się, czym są zmienne, pętle i funkcje, przyjdzie czas na samodzielne napisanie programu FizzBuzz.

Potem napisz własnego Tetrisa, działającego w trybie tekstowym. Tego nie zrobisz w jeden dzień ani nawet tydzień, więc warto podzielić pracę na etapy. Przykład:

  • rysowanie planszy („studni”)
  • rysowanie klocka 2×2
  • przesuwanie klocka strzałkami (w każdą stronę)
  • wykrywanie kolizji ze ścianami, podłogą i innymi klockami
  • dwa nowe kształty klocków
  • obracanie klocków spacją
  • samoczynne opadanie klocka co sekundę
  • zrzucanie klocków na sam dół
  • … i tak dalej.

Gdy skończysz, będziesz mieć ochotę wywalić wszystko i napisać od nowa, tym razem porządnie. To normalne. Po kilkudniowej przerwie możesz przestać rozumieć, jak to w ogóle działało – to też normalne. Jeśli na tym etapie nadal masz ochotę na naukę, czas poznać git-a (system kontroli wersji) i dowolny debugger (narzędzie pozwalające na zatrzymanie pracy programu w wybranym miejscu i podglądanie stanu zmiennych).

Ile to zajmie? Od kilku tygodni do kilku miesięcy. Będą to ciągłe zmagania z dwiema sytuacjami: a) wiesz, co chcesz osiągnąć, ale nie wiesz jak; b) komputer robi co innego, niż powinien.

Lepiej przywyknij, tak właśnie wygląda codzienne życie programisty.


Wasz uniżony autor debuguje oprogramowanie komputera pokładowego na produkcji u klienta
lato 2009, piksel na szkle.


O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.

15 odpowiedzi na “Nie płać za kurs programowania”

Jako kończący studia informatyczne na lepszej uczelni mogę powiedzieć, że będąc samoukiem pewnie nigdy bym sie dowiedział się o wielu przydatnych rzeczach. Dlatego osobom kończącym liceum i chcącym być programistami zdecydowanie polecam studia. Bootcampy prawdopodobnie by nie pomogły w zdobyciu takiej, rozległej wiedzy. One uczą podstaw, i to głównie frontendu który ma ogrom materiałów w sieci.

Przed studiami próbowałem się sam nauczyć programowania i było to bolesne, szczególnie że mnie interesują mikrokontrolery i bez wytłumaczenia wiele teraz banalnych rzeczy było zupełnie niemożliwych do zrozumienia (np. czym jest i czym się różni tablica charów od obiektu String) Niestety jest o wiele gorzej gdy nie ma się kogo dopytać o rzeczy których się nie rozumie.

Zgadzam się, że jeśli chce się być wśród tych dobrze zarabiających to trzeba poświęcać dużo prywatnego czasu na naukę. Ale akurat pracuję teraz w pewnym krakowskim korpo informatycznym znanym na całą Polskę ze swojego prezesa i tutaj przynajmniej połowa osób nie studiowała informatyki, prawie nikt się nie pasjonuje i samemu dokształca. Jest to miejsce dla ludzi chcących sie skupić na rodzinie czy innych pasjach. Da się tak pracować, ale wtedy wypłata już nie jest porażająca, choć wciąż zdecydowanie ponad inne zawody.

Co do języka, polecam https://www.bestprogramminglanguagefor.me/ Pokrywa się z moimi poglądami co do wyboru języka do danych potrzeb.

Zabrakło w tekście poruszenia aspektu mentoringu. Osoba ucząca się programowania często nie wie za co się zabrać, nie wie czy dobrze robi, nie wie jak rozwiązać podstawowe problemy. Jasne, umiejętność szukania rozwiązania w sieci jest istotna ale bądźmy szczerzy: komu na początku drogi nie zdarzyło się utknąć w martwym punkcie na długie dni i stracić motywację przez coś co jest generalnie proste tylko zabrakło osoby której można by podpytać? W pracy zawodowej tak samo to działa, mamy wybór: albo siedzieć nad taskiem tydzień i go zrobić słabo (albo wcale) albo po czasie, dochodząc do wniosku, że już nic nie wymyślimy i potrzebujemy świeżego spojrzenia na sprawę prosimy o pomoc kogoś bardziej doświadczonego z teamu.

No, to był ryzykowny komentarz i nie wiem, czy się opłacił. Nie kupujcie kursów Future Collars ani żadnych innych kosztujących 8-12 tysięcy złotych. Za tyle można przeżyć 2-4 miesiące ucząc się nie 15 a 70h tygodniowo. Mentora można znaleźć za darmo, wystarczy poszukać projektu open source, lokalnej Grupy Użytkowników Czegośtam albo popytać na jednym z licznych darmowych eventów programistycznych.

Jasne, są osoby dla których samodzielna nauka i poszukiwania są najlepszym rozwiązaniem i tego nie neguję 🙂 Na pewno trzeba w to włożyć więcej czasu i energii, podczas płatnego kursu wszystko dostaje się w jednej „paczce” – materiały, wsparcie w rekrutacji, pomoc w dofinansowaniu czy wsparcie praktyka. Więc koniec końców myślę, że oba rozwiązania są tu ok – zależy czy ktoś woli wydać pieniądze czy czas. A cel ten sam – wejście do branży IT 🙂

Proszę o usunięcie linku i wymoderowanie nazwy kursu. Nielegalnej reklamie mówimy nie.

Od siebie tylko dodam, że z programowaniem jest jak z górą lodową. Większość jest ukryta po powierzchnią (biblioteki, frameworki itd)
A darmowych materiałów jest cała masa np. https://goalkicker.com/ (Nie są to kursy programowania sensu stricte)

Do bootcampów i uczestników, jako potencjalnych (współ-)pracowników, mam ambiwalentne odczucia. Z jednej strony może to świadczyć o tym, że taka osoba nie radzi sobie z samodzielną nauką i oczekuje, że ktoś ją będzie stale prowadził za rączkę, co niezbyt dobrze pasuje do naszej dynamicznie zmieniającej się branży. Z drugiej strony znam kilka osób które nauczyły się samodzielnie Javy czy Pythona i nagle utknęły w miejscu: znam w miarę dobrze język, ale nie mam pojęcia jak to wykorzystać do znalezienia pracy. Sam byłem w tym miejscu parę lat temu, z tą różnicą, że byłem studentem jednej z najlepszych polskich uczelni, co powodowało patrzenie na mnie łaskawszym okiem przez pracodawców i z wskoczeniem na staż nie było problemu. Dla takich ludzi jakiś bootcamp nastawiony na nauczenie ich praktycznej strony IT ma jak najbardziej sens.

Za to zdecydowanie nie zgadzam się ze stwierdzeniem, że angielski nie jest potrzebny, chociażby i tylko na starcie. Z nauką języka programowania i najpopularniejszych bibliotek po polsku chyba nie ma problemu: są blogi, jest to jedno wydawnictwo które się jeszcze uchowało 😉 Schody zaczynają się w momencie gdy potrzebujemy skorzystać z jakiejś mniejszej biblioteki, o której nikt nawet nie myśli w kategoriach „napiszmy o tym książkę”, a dokumentacja jest tylko po angielsku. A jaki jest odpowiednik stackoverflow? 4programmers? 🙂
No i nauczenie się angielskiego na poziomie wystarczającym do czytania technicznych dokumentów (zgaduję, że coś koło B2 – FCE) jest zdecydowanie prostsze niż ogarnięcie programowania na poziomie zarobkowym.

Kursy programowania, czy administracji on-line to niestety plaga dzisiejszego internetu. Poziom tych stacjonarnych również jest różny. Bez mocnych rekomendacji od znajomych nie ma nawet co patrzeć na ofertę. Kiedyś subskrybowałem LinuxAcademy (i nie jest to reklama, ponieważ ktoś ich podkupił i marka niedługo zniknie). Poziom poszczególnych ścieżek był bardzo różny. Niektóre były naprawdę dobre, w stylu: dzisiaj nauczymy się Samby, więc w terminalu robisz tak… Inne to pokaz slajdów i ich monotonny opis, który nie dawał żadnych umiejętności.

Owszem: dostaje się certyfikat ukończenia, dostaje się podstawową wiedzę, ale zostaje się w próżni. Najlepszy kurs programowania to zakupienie serwera VPS, lub chmurowego ekwiwalentu, postawienie strony/aplikacji i jej rozwijanie. Niech to działa głupio, słabo, albo nawet wcale. Nic nie zastąpi tego uczucia, kiedy coś się zepsuło, backup ma zero bajtów, a ostatnia działająca wersja jest gdzieś na bitbucket dwa tygodnie temu, bo ostatnie commity rozmijają się z produkcją. Samo życie. Miłej zabawy!

Mając 48 lat jak najbardziej można przebranżowić się na programistę. Ponad 20 lat po ukończeniu studiów pracowałem w branży poligraficznej na różnych stanowiskach. Po decyzji o zmianie pracy poszedłem na studia podyplomowe Testowanie oprogramowania na UJ. Po ich ukończeniu na pierwszej rozmowie o pracę zaproponowano mi stanowisko programisty. Obecnie (od 3 lat) jestem programistą frontend (Angular, Typescript), backend (Java, Spring Boot). Codzienna nauka nowych technik programowania, rozwiązywanie kolejnych problemów, daje mi dużo zadowolenia i sprawia że decyzja o przebranżowieniu się była jak najbardziej właściwa.

Widzę, że autor debugował komputer w niemieckim autobusie gdzieś w zagłębiu Ruhry.

Jeśli ktoś rzuci kostką i wypadnie mu Python, to jest masa darmowych kursów. Część jest darmowa na stałe, część pojawia się okresowo. Nawet nie trzeba brać paru miesięcy wolnego, wystarczy wygospodarować godzinę czy dwie dziennie i poświęcać np. godzinę na kurs, godzinę na praktykę.

Oczywiście wymagany angielski, ale uważam – i tu się nie zgodzę z autorem – że bez znajomości angielskiego przynajmniej w stopniu biernym, umożliwiającym czytanie dokumentacji nie bardzo jest sens brać się za naukę programowania (sprawdzić, czy nie dziecko). Komentarze w kodzie, dokumentacja bibliotek – wszystko to jest po angielsku właśnie. Dodatkowo znajomość tego języka daje dostęp do masy zasobów. Jak dla mnie to podstawowa umiejętność w którą należy zainwestować chcąc programować. I nie, niekoniecznie kurs angielskiego. Chodzi tylko o czytanie ze zrozumieniem. Stosunkowo wąski zakres słownictwa, podstawy gramatyki.

Dlatego zgadzam się z autorem, że nie warto płacić za kursy programowania, szczególnie dużo i na początku.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *