Znalazłeś kurs pt. "Jak zostać programistą"?
Ostatnimi czasy w sieci pojawiła się ogromna ilość artykułów reklamujących kursy z branży IT. Możliwość nauki języków do programowania przedstawiana jako tygodniowe czy miesięczne zajęcie dodatkowe, oferujące możliwość pozyskania zawodu programisty. W ramach oferty kursów dają "gwarancję" pozyskania tysięcy ofert pracy, informują że rynek specjalistów IT ma niedosyt i już po jednym kursie można szukać pracy jako programista który będzie w stanie zarabiać krocie. Do pewnego czasu były te oferty dość zabawne, szczególnie gdy część pracy tego typu przedstawiano jako sielankę na letnim hamaku z drinkiem u boku. Ile w tym prawdy? Czy przed rozpoczęciem pracy na stanowisku programisty faktycznie wystarczy jeden kurs tego typu? Na czym faktycznie i realnie polega praca programisty? Czy każdy ma szansę na pracę przy programowaniu w którymkolwiek języku? Czy faktycznie brak znajomości języka angielskiego to nie problem przy rekrutacji IT? To i nie tylko, przedstawię poniżej. Dlaczego? Przekonacie się sami!
Nauka programowania czyli krok do pierwszej pracy w IT?
Wielokrotnie byłem pytany przez znajomych, czy studia IT to dobra opcja na przyszłość, czy rynek IT jest aż tak prosty do zdobycia, czy faktycznie nauka pierwszych języków do programowania bywa aż tak łatwa jak to reklamują i czy zawód programisty wymaga studiów. Otóż kolejno i od końca:
- Posiadanie studiów ma tyle samo w przypadku programisty co piernik do wiatraka. Dawno skończyły się czasy gdy papierek inżyniera czy magistra w przypadku programisty miał największe znaczenie. Wiele osób składając CV do różnych firm z działami IT myśli że im więcej świadectw tym lepiej. Jest to nieco błędne myślenie. Nie jest to do końca tak że te nie mają znaczenia, jednak dziś w pierwszym lepszym softwarehousie, w kilka minut zweryfikują wiedzę teoretyczną i w podobnym czasie okaże się czy znasz choć podstawy prawidłowego projektowania. Dlaczego projektowania? Otóż wiele osób myśli że programowanie to tylko stukanie w klawiaturę po to by coś zmieniło się w coś innego, gdy coś jeszcze innego się wydarzy. Tak w skrócie wygląda większość poleceń w programach, bez znaczenia o jakim języku tutaj mówimy. Jeśli jednak pomyśleć szerzej, najpierw należy zaprojektować coś, zaplanować logikę funkcjonowania danego programu czy też urządzenia, by wiedzieć w jaki sposób podejść do tego żmudnego programowania. Wracając jednak do rzeczy, w przypadku wartościowych ofert pracy, w 95% gdy przedrzemy się przez "dziwne pytania" które nie zawsze mają związek z programowaniem, dostaniemy proste i szybkie zadanie które bez problemu zweryfikuje to czy się nadajemy czy też nie.
- Czy nauka programowania bywa łatwa? IT ma to do siebie że nigdy nie nauczycie się tego czego chcecie w 100%. Zawsze znajdzie się coś nowego, kolejna dokumentacja do zapoznania, kolejne modele do rozpisania, z którymi najpierw będzie trzeba się zapoznać. Następne repozytoria i biblioteki które odpowiadają za pewne funkcje, których użycie znów będzie wymagało zapoznania się z ich "instrukcją obsługi". Zatem nawet jeżeli otrzymasz pracę w IT, będziesz notorycznie walczył(a) z problemami które trzeba rozwiązać i wielokrotnie aby tego dokonać, konieczne jest poznanie podstaw danej biblioteki, w których nie raz i nie dwa, przekonamy się że należy przebudować część istniejącego już kodu by wpasować się w akurat dane rozwiązanie. Aby zacząć programować realne projekty, należy przejść przez wiele kursów programowania online, które finalnie i tak pokażą nam że "im więcej wiemy tym więcej nie wiemy".
- Czy rynek IT jest łatwy do zdobycia? IT ma najczęstszą odpowiedź na wiele pytań: "to zależy". Tutaj nie ma nigdy jednoznacznych odpowiedzi na konkretne pytania. Podobnie i w tym przypadku. Wiele osób uważa że ukończenie kursu "Zostań junior programistą", "Najlepszy kurs programowania - warto! - Bez podstaw" itp. może stanąć na czele grupy pracującej dla zagranicznych inwestorów. Opisy tych kursów są opracowywane by niestety nie tyle nauczyć nawet podstaw programowania a po prostu... by je sprzedać! Nauka podstaw programowania wymaga nie tyle samej nauki dokumentacji danego języka, większości najczęściej używanych poleceń, metod, funkcji itp. co po prostu logicznego myślenia! Wyobraźmy sobie sytuację gdy psuje nam się samochód. Mechanik nie będzie wiedział od razu co zrobić, dlaczego tak się stało itp. Musi dopytać o szczegóły powstania usterki, po czym jeśli auto odpala ale silnik pracuje nierówno, błędów (usterek) szuka gdzie indziej niż w przypadku gdy po przekręceniu kluczyka nawet nie zaświeci się nic za kierownicą. Co to ma wspólnego? Otóż przekładając taką sytuację na język programowania, rozumowanie wyglądałoby tak: <. Jeśli silnik się uruchamia, przejdź do punktu 3. Jeśli nie, przejdź do punktu drugiego. <. Jeśli pojazd nie ma zasilania, sprawdź akumulator. Jeśli akumulator jest sprawny, sprawdź przewody od zasilania i przejdź do punktu (x). <. Jeśli dźwięk wydobywa się z komory silnika, sprawdź (y), w przeciwnym przypadku przejdź do punku (z).
Może wydawać się to zabawne, jednak ta forma myślenia jest jednoznaczna z pisaniem programów. Oczywiście w różnych językach programowania składnia samego kodu będzie się różnić, kod będzie wykonywał inne zadania jak np. wykonanie obrotu silnikiem krokowym o 1440 stopni, co pozwoli wykonać obrót tzw. "ślimakiem" w piecu CO by doprowadzić określoną ilość paliwa stałego do komory spalania, czy też wysłanie odpowiedniego polecenia do bazy danych by sprawdzić czy użytkownik podający login i hasło, podał je prawidłowe, po czym "oddać mu" odpowiedni "klucz" do uwierzytelniania kolejnych poleceń jak choćby złożenie zamówienia w aplikacji mobilnej z systemu android/iOS. Można wymieniać tak w nieskończoność, jednak podstawą nie jest żmudna nauka nudnych poleceń a po prostu wartościowe, ciekawe przedstawienie problematyki do rozwiązania, po czym tak na prawdę ucząc się programowania wiemy jak rozwiązać dany problem już po jego przedstawieniu. Jedyne czego potrzebujemy to właśnie poznanie składni którą dzięki temu o wiele łatwiej wyszukać czy to w dokumentacji czy branżowych serwisach/forach/portalach.
Szkoły programowania - kurs programowania on-line a szkoła on-line?
Nie każdy kurs programowania będzie wart swojej ceny, choćby kosztował nawet kilkadziesiąt zł. Nie każdy kurs programowania warto brać pod uwagę gdy chcesz zostać programistą. Jeśli jednak dla programistów, studia informatyczne nie są wymagane, od czego zacząć naukę programowania? O ile wiele razy można spotkać się podczas rekrutacji IT z dziwnymi pytaniami wykraczającymi poza samo programowania, o tyle podstawą języków programowania jest wspomniane już powyżej logiczne myślenie. Jeśli chcesz zacząć naukę programowania, jednak Twoją zaletą jest głównie umiejętność szybkiej nauki czegoś na pamięć, Twój umysł nadaje się raczej do nauki elementów humanistycznych, możesz mieć problem i trudności z podejściem do programowania. Oczywiście będzie Ci łatwiej zapamiętać że dany problem można rozwiązać w dany sposób, jednak nauczenie się pełnego kodu do danego problemu będzie mijało się z celem. Nie bez powodu większość specjalistów IT ma "umysł techniczny", dzięki czemu lepiej radzą sobie w nauce programowania niż np. nauce nowego obcego języka.
Jeśli jednak nadal zastanawiasz się czy masz szansę na dołączenie do najszybciej rozwijającej się grupy programistów branży IT , zastanawiasz się jaki wybrać kurs, szkołę, język programowania, kierunek, muszę Cię zmartwić. Sprawa nie jest tak oczywista jakby się mogło wydawać. Języków programowania, ich frameworków oraz platform na które należy przygotować kod jest tak dużo że przed rozpoczęciem pracy jako programista i nawet nauki programowania należy określić nie tylko co ale i jak chce się programować. Konkretny język programowania dla specjalistów IT ma pierwszorzędne znaczenie. Na stanowisku programisty gamedev będą niezbędne inne języki, w przypadku popularnego już VR dojdą jeszcze inne elementy. Na rynku pracy dla webdevów niezbędne okażą się języki (kodowania i programowania) jak HTML, CSS, JavaScript, PHP (przynajmniej i nie licząc ich frameworków jak Bootstrap, Tailwind, React, Vue, Angular, Laravel, Symfony i wiele innych), gdzie w przypadku programistów automatyki, niezbędne będą języki z rodziny C itp.
Zatem jak widać, konkretny język programowania będzie potrzebny w konkretnym przypadku. Zatem gdy chcemy zacząć przygodę z automatyką i robotyką, konkretny język programowania będzie inny niż w przypadku wspomnianego gamedev, webdev itp.
Faktyczna nauka programowania - roadmapa programisty
Jeśli jednak nadal tu jesteś, zastanawiasz się mimo wszystko nad nauką programowania, warto poszperać w sieci na temat tzw. roadmapy programisty. Czym jest? Głównie to infografika dzięki której zobrazujesz sobie mniej więcej, w zależności od chęci obrania danego kierunku, czego będziesz musiał(a) się uczyć podczas swojej przygody z programowaniem. To forma zobrazowania kierunku, by zwyczajnie nie marnować czasu na naukę języków programowania które będą nam zbędne w obranym docelowo kierunku.
Zatem wybierz kierunek, zastanów się co chcesz docelowo osiągnąć i czym się zajmować, zacznij się uczyć i programuj. Czy jest to łatwe? Jeśli czytasz od początku - znasz odpowiedź! "To zależy" ?
Znajomość języka angielskiego do programowania - czy potrzebny mi język angielski?
Wracając do tematyki artykułu, wiele kursów informuje o tym że możesz uczyć się programować bez jakiejkolwiek znajomości języka angielskiego. Oczywiście że się da! Przecież wszystkie dokumentacje można przetłumaczyć translatorem, treści opisowe na stronach i rozwiązania na forach również. Jest jednak jeden szkopuł... Forma niektórych tłumaczeń bywa tak komiczna że gdy komukolwiek przyjdzie pracować przy Waszym programie z czasem, będzie dla tej osoby śmiesznie bądź zwyczajnie stwierdzi że się nie da! Wielokrotnie zdarza mi się pracować z kodem innych programistów, po czym stwierdzam że rozbudowa projektu na już istniejącym rozwiązaniu udaje się w jednym lub dwóch przypadkach na przynajmniej dziesięć projektów. Jeśli więc poważnie myślisz o karierze w branży IT i masz ambicje, by zostać dobrym programistą - nie zapomnij o doskonaleniu języka angielskiego.
Warto zatem uczyć się z dobrych źródeł, zaczynając od kompletnych podstaw by potrafić rozróżnić czy kurs który kupujemy czy też szkolenie, nie będzie przysłowiowym kotem w worku.
Jak zostać dobrym programistą? Wybór materiałów i kursów
Docierając do końca, należy zastanowić się w jaki sposób wybierać np. kursy. W wielu przypadkach natkniesz się na reklamy w stylu "studiuję on-line", "studia IT online" na które musisz uważać. To bezczelne wprowadzanie wielu ludzi w błąd, sugerując że kurs tego typu który kosztuje niejednokrotnie ogromne pieniądze, jest nadal kursem a nie studiami.
Typowe kursy warto kupić nie tylko od programistów branży IT którzy realnie działają na rynku jako programiści, ale także aktualizowane. Istnieje wiele portali jak np. Udemy, które oferują sprzedaż kursów dla wielu języków w różnych stopniach trudności i mieszczących się w różnych progach cenowych. Wspomniany portal posiada taki element jak informacja o dacie wydania i aktualizacji kursu. Pozwoli nam to zweryfikować wstępnie czy kurs porusza aktualną wiedzę czy tą która aktualną była np. 5 lat temu. O ile w przypadku kompletnych podstaw przy niektórych językach nie będzie to problemem, o tyle przy nauce w konkretnym kierunku, czy w przypadku wiedzy specjalistycznej już tak.
Oczywiście możesz wybrać tzw. "mentora" który poprowadzi Cię w danym kierunku, co niestety kosztować będzie znacznie więcej, przyniesie efekt zdecydowanie szybciej ale nauki wcale mniej nie będzie.
Zatem niezależnie od tego w jakim języku chcesz programować, proces otrzymania pierwszej pracy jako programista będzie wymagał od Ciebie ogromu nauki, chęci i samozaparcia.
Praca programisty - na zakończenie
Praca programisty wydaje się być łatwą i przyjemną. Owszem - gdy znamy język i technologie w których przychodzi nam pracować, do tego lubimy to czym się zajmujemy, to dokładnie tak jest. Jednak by do tego stopnia dojść, należy przebić się przez kilka lat typowych problemów napotykanych podczas rozwiązywania problematyki wynikającej z konkretnych zleceń. Jeśli bywasz uparty i lubisz dążyć do rozwiązania problemu, dociekając rozwiązań i próbując notorycznie ułatwiać sobie pracę, warto zostać programistą. Jeśli jednak wolisz sprawdzone rozwiązania które sprawdzają się od lat, nie warto zostać programistą. Specyfika i problemy dotyczące pracy programisty, jako nieodzowna część pracy programisty to po prostu notoryczna nauka. Owszem, przed rozpoczęciem pracy programisty wystarczy nauczyć się wszelkich podstaw. Jako programista masz szansę na stały rozwój i powiększanie swojej wiedzy, jednak ta szansa to też mus. Dodatkowo należy pamiętać iż nauka pierwszych języków programowania będzie katorgą i notorycznym biciem się z myślami - "po co mi to", "nie da się tego nauczyć" itp.