Zmiana branży, czyli jak zostać programistą

Oto kilka z najczęściej zadawanych mi pytań przez czytelnika Samouczka:

  • Czy mogę się przebranżowić?
  • Czy nie jestem na to za stary?
  • Czy po ukończeniu kursu X będę mógł zostać programistą?

Niestety na pytania tego typu nie mam dobrych odpowiedzi. Głównie dlatego, że sam jestem informatykiem z wykształcenia. Więc moje odpowiedzi na te pytania to domysły1. Nie lubię takich odpowiedzi :). Dlatego właśnie poprosiłem o pomoc osoby, które się przekwalifikowały.

Artykuł jest bardzo długi, jednak gorąco zachęcam do przeczytania całości. Chłopaki mają naprawdę ciekawe historie, którymi chcieli się anonimowo podzielić.

Czasami znajdziesz też mój komentarz dotyczący punktu widzenia prezentowanego przez chłopaków. Będzie on umieszczony w ramce takiej jak ta.

Osoby, którym się udało

Tomek

Tomek ma 32 lata, zanim został programistą był marynarzem z wykształcenia. Sfrustrowany dorywczymi pracami po odejściu z morza zdecydował się zostać programistą. Zaczął od C#, aktualnie pracuje z JavaScript.

O tym jak marynarz został programistą

Czym zajmowałeś się wcześniej? W jakim zawodzie pracowałeś? Kim jesteś z wykształcenia?

Z wykształcenia jestem marynarzem. Skończyłem nawigację w Szkole Morskiej w Gdyni, przez siedem lat pracowałem aktywnie w zawodzie. Najpierw jako marynarz pokładowy, później jako oficer. Oprócz tego pracowałem też w handlu, na infolinii i nawet jako picker w magazynie w Wielkiej Brytanii.

Miałeś wcześniej styczność z programowaniem?

Minimalną. W liceum napisałem kilka aplikacji w C++ uruchamianych w linii poleceń. Zrobiłem też jakiś podstawowy kurs online HTML i CSS, który sobie odświeżyłem rok przed rozpoczęciem przebranżawiania.

Ile czasu poświęciłeś na przekwalifikowanie się (ile godzin dziennie/tygodniowo się uczyłeś)?

Przez pierwsze 5 miesięcy poświęcałem na naukę od 4 do 12 godzin dziennie. Przez następne dwa miesiące, około 20 godzin tygodniowo.

5 * 30 * 8h + 2 * 4 * 20h = 1200h + 160h = 1360h. W pierwszych siedmiu miesiącach swojej nauki poświęcił na nią około 1400 godzin. Przebranżowienie jest możliwe, ale wymaga dużo pracy.

Jak długo przygotowywałeś się przed wysłaniem pierwszego CV?

W ogóle. Pełen żywioł. Zadanie rekrutacyjne robiłem trzy dni, poznając przy okazji cud natury jakim jest Stack Overflow oraz ból związany z szukaniem dangling comma przez dwie doby. Czytanie konsoli to była dla mnie magia, której wówczas nie znałem.

Tutaj Tomek miał na myśli prosty błąd, jeden przecinek za dużo. Takie błędy to zmora początkujących programistów. Chociaż bardziej zaawansowani też czasami na coś takiego trafią.

Upór i wytrwałość to cechy, które moim zdaniem są bardzo pożądane u każdego programisty. Przykład Tomka właśnie to pokazuje. Szukanie przecinka przez dwa dni potrafi naprawdę wkurzyć. Znam to, byłem tam…

Kiedy zacząłeś pracować jako programista?

Pierwszą pracę jako Junior Web Developer podjąłem siedem miesięcy po rozpoczęciu nauki.

Dlaczego zdecydowałeś się przekwalifikować?

Po odejściu z morza podejmowałem się każdej pracy, w tym śmieciowej. Pracując na infolinii jednego z operatorów komórkowych stwierdziłem, że naprawdę jestem więcej wart niż te 1400 zł na rękę przy umowie-zlecenie.

Od czego zacząłeś naukę programowania?

Robiłem to bardzo chaotycznie. Od podjęcia decyzji o zmianie branży do faktycznego podjęcia pierwszej pracy minęło siedem i pół miesiąca. Zaczynałem chcąc nauczyć się C#2 i ekosystemu .NET, który miał mi dać podstawy do nauki Javy. Wybrałem te języki, bo bardzo wzbraniałem się przed programowaniem aplikacji webowych, zupełnie nie znając realiów branży, chciałem pisać aplikacje desktop’owe3 i zupełnie nie miałem pojęcia co robię. Nie wiedziałem, że Java to back-end4. Wtedy nie wiedziałem nawet co to back-end!

Myślałem, że rynek jest przesycony, a JavaScript to nie jest “prawdziwe” programowanie. Pech chciał, że mniej więcej po trzech miesiącach nauki znalazłem ogłoszenie na Junior Support Developera ze znajomością jQuery5. Jedno z zadań wymagało użycia jQuery. Pracy nie dostałem, ale spojrzałem na język.

Później pojechałem na wspomniany kurs Javy, absolutne podstawy z linią poleceń. Tak naprawdę nic, czego nie przerobiłem już w C#. Tam też dowiedziałem się, jak rynek wygląda naprawdę i że web, czy to na front-end’zie, czy to na back-end’zie, jest najbardziej rozwojową gałęzią. Dowiedziałem się również, że Javą gardzę absolutnie i nie zamierzam ruszać jej długim kijem. Zostałem przy .NET ;).

Tak szczerze to tego rodzaju “święte wojny” w IT zdarzają się bardzo często. Na początku mojej drogi miałem podobnie jak Tomek, z tym, że odwrotnie. Nie chciałem dotykać niczego co wypuścił Microsoft. Teraz już nie podchodzę do tego tak restrykcyjnie, ale stare przyzwyczajenia zostały.

Następne dwa miesiące spędziłem na dużo mniej intensywnej nauce, około 20 godzin tygodniowo. Nie byłem pewien tego C#, brakowało mi kierunku i miałem wrażenie, że niczego się nie nauczyłem. Poza tym jednym zadaniem rekrutacyjnym w jQuery, nie ruszałem JavaScript’u w ogóle. Podstaw potrzebnych na przebrnięcie rozmowy kwalifikacyjnej nauczyłem się w pociągu relacji Toruń - Szczecin.

Ta podróż trwa około sześciu godzin. To pokazuje, że po zdobyciu podstaw w jednym języku nauka kolejnych jest dużo łatwiejsza. Oczywiście Tomek po tych sześciu godzinach nie był biegłym w JavaScript, ale znał podstawy.

Z jakimi technologiami aktualnie pracujesz?

Jestem Full-stack JavaScript Developerem. Pracuję z JavaScript w dialekcie ES2015+. Znam i nie znoszę TypeScript. Technologie i biblioteki, które używam to:

Oprócz tego staram się pozostać na bieżąco z katalogiem NPM i miałem różnego rodzaju przygody z rxJS, D3 czy nawet Phaser.

Co sprawiało Ci największe problemy w trakcie przekwalifikowania się? Jak te problemy rozwiązałeś?

Brak kierunku i mentora. Nie miałem nikogo, kto by mi powiedział co dalej. Również tak dość metafizycznie. Stack Overflow wszystkiego nie załatwi, a z doświadczenia wiem, że nic nie zastąpi gumowej kaczki, programowania w parach i sprawdzania kodu (ang. code review).

Jak i gdzie zdobywałeś materiały do nauki? Czy możesz polecić źródła z których korzystałeś? Dlaczego akurat te?

  • Google, Google i jeszcze raz Google. Trzeba jedynie nauczyć się poprawnego stawiania pytań,
  • Ucząc się C# korzystałem z legendarnego już (i moim zdaniem słabego) kursu Boba Tabora na Channel 9,
  • Codeschool nauczyło mnie AngularJS’a,
  • YouTube,
  • Pluralsight,
  • Microsoft daje darmowy, czasowy dostęp do kosmicznej ilości usług (od Azure po właśnie Pluralsight). Jedyny warunek, to mieć konto MS, które zresztą polecam. Głównie ze względu na darmowe Visual Studio For Team and Services. Dzięki temu dostajesz dostęp do prywatnego, nieograniczonego repozytorium Git.

Co ułatwiało Ci naukę? Miałeś jakieś sposoby na łatwiejsze zapamiętywanie?

Godzina nauki, fajka, godzina nauki, pół godziny w HearthStone.

Nie przyznam się ile godzin spędziłem na tej grze, albo na oglądaniu rozgrywek na YouTube… ;)

Jak poszły Ci pierwsze rozmowy? Co sprawiło Ci największy problem?

Wyłganie jakiejkolwiek wiedzy. Nie oszukujmy się - nasza branża cierpi na krytyczny niedobór ludzi, więc samouków są masy. Możliwe, że większość. Praktycznie każdy z nas, prędzej czy później, będzie mieć syndrom oszusta. 90% CV Junior Developer’ów, które widziałem, to stek kłamstw. Sztuka tkwi w zamaskowaniu tego. Nauczysz się tego w trakcie.

To muszę jasno powiedzieć. Uważam, że nie można kłamać w CV. Kłamstwo ma krótkie nogi i nie popłaca. Masz za mało w CV? Popracuj solidnie kolejny miesiąc, dwa i dodaj projekt, który w tym czasie zrealizujesz. Dalej mało? Popracuj kolejny miesiąc, ukończ darmowy kurs na Coursera/Udemy. Dalej mało? Wystąp na lokalnym spotkaniu dla programistów i opowiedz o czymś, czego się nauczyłeś itp.

Gdzie wysłałeś 5-10 pierwszych CV? Jak wybierałeś te firmy?

Nie miałem wówczas konta na LinkedIn, więc wrzuciłem swoje CV na Monster Polska. Dziś “szukam” pracy tylko za pomocą LinkedIn. W profilu mam zaznaczoną otwartość na oferty, więc oferty płyną wartkim strumieniem.

W swojej karierze wysłałem CV na JEDNO ogłoszenie - to z zadaniem rekrutacyjnym w jQuery.

Wiele firm wykorzystuje LinkedIn jako bazę kandydatów. Bardzo często wyszukują potencjalnych pracowników na tym portalu. Otrzymywanie ofert zatrudnienia w ten sposób to norma w branży IT.

Jakie masz wskazówki, rady dla osób, które chcą się przekwalifikować?

Nic odkrywczego. Cierpliwość i wytrwałość. Jeśli masz ten komfort, który miałem ja - potraktuj naukę jak pracę i podchodź do niej tak, jak do etatu: określony z góry czas CODZIENNIE. Opanuj też słowa-klucze, żebyś chociaż brzmiał, że wiesz o co chodzi. Bo przez pierwszy rok i tak nie będziesz wiedział, a cała praca - czy to nauka, czy to etat - będzie przypominać błądzenie pijanego dziecka z nożem we mgle.

Jakie masz plany dotyczące dalszej nauki/rozwoju?

  • Architektura JavaScript i pełne przekwalifikowanie na NodeJS Developera
  • uczenie innych,
  • powrót do C#/.NET,
  • może Python?

Jak oceniasz pracę jako programista?

Nie wyobrażam sobie robić nic innego.

Pobierz opracowania zadań z rozmów kwalifikacyjnych

Przygotowałem rozwiązania kilku zadań z rozmów kwalifikacyjnych. Rozkładam je na czynniki pierwsze i pokazuję różne sposoby ich rozwiązania. Dołącz do grupy ponad 1000 Samouków, którzy jako pierwsi dowiadują się o nowych treściach na blogu, a prześlę je na Twój e-mail.

Szymon

Szymon ma 28 lat. Z wykształcenia jest matematykiem, jednak postanowił spróbować swoich sił jako programista. Pracuje jako programista od trzech lat. Zrezygnował ze swojej pierwszej pracy jako programista na rzecz bardziej rozwojowego stażu.

O tym jak matematyk został programistą

Czym zajmowałeś się wcześniej? W jakim zawodzie pracowałeś?

Wcześniej pracowałem 11 miesięcy jako informatyk, totalny wyzysk. Zdecydowałem się przez to przebranżowić.

Kim jesteś z wykształcenia?

Z wykształcenia jestem matematykiem. Studiowałem matematykę na Politechnice.

Miałeś wcześniej styczność z programowaniem?

Pierwszą styczność z programowaniem miałem właśnie podczas studiów (Pascal, programowanie obiektowe w C#, podstawy relacyjnych baz danych, strony internetowe z HTML i CSS, algorytmy z Matlab’em, witryny internetowe z C# i .NET).

Po trzecim roku studiów zdecydowałem się bardziej dokształcić w kierunku IT w Policealnej Szkole Weekendowej jako technik informatyk. Szkoła trwała dwa lata. Miałem tam między innymi bazy danych (PostgreSQL), HTML, CSS, JavaScript oraz troszeczkę PHP.

Po studiach zacząłem pracę jako informatyk taki à la helpdesk. Pół roku później skończyłem zaoczną szkołę. Załapałem się na dwa kursy/szkolenia finansowane ze środków Unii Europejskiej. Jeden był 10 dniowym kursem po 8 godzin dziennie “Programowanie w języku Java”. Drugie szkolenie trwało bodajże 5 dni “Przygotowanie do certyfikatu OCPJP6”. Niestety go nie zdałem, nikt go w sumie z naszej grupie nie zdał.

Ile czasu poświęciłeś na przekwalifikowanie się (ile godzin dziennie/tygodniowo się uczyłeś)?

Na naukę programowania starałem się poświecić minimum godzinne dziennie co nie zawsze mi wychodziło.

Jak długo przygotowywałeś się przed wysłaniem pierwszego CV?

Do wysłania pierwszego CV nie przygotowałem się zbyt długo. Przez co myślę, że nie byłem na zbyt wysokim poziomie, co skutkowało negatywnymi decyzjami na rozmowach.

Kiedy zacząłeś pracować jako programista?

Pracę jako programista zacząłem w 25 urodziny. Obecnie mam 28 lat.

Dlaczego zdecydowałeś się przekwalifikować?

Zdecydowałem się przekwalifikować, gdyż wiedziałem, że programowanie jest bardziej dochodowe niż inne zawody w IT.

Od czego zacząłeś naukę programowania?

Samodzielną naukę programowania zacząłem od przerabiania zagadnień ze szkoleń, w których wziąłem udział w ramach projektów z UE.

Z jakimi technologiami aktualnie pracujesz?

Obecnie pracuję z Java 8, Java EE, HTML, CSS, JavaScript, TypeScript, Angular, EclipseLink, PostgreSQL, Oracle, tak w skrócie. Jako środowiska używam IntelliJ Idea.

Co sprawiało Ci największe problemy w trakcie przekwalifikowania się?

Największą trudnością w nauce programowania było moje lenistwo oraz to, że jak najszybciej chciałem zmienić pracę. Przez kolejne odmowy podczas rozmów kwalifikacyjnych odechciewało mi się coraz bardziej.

Jak i gdzie zdobywałeś materiały do nauki? Czy możesz polecić źródła z których korzystałeś? Dlaczego akurat te?

Materiały do nauki pozyskiwałem z YouTube. Jest tam pełno darmowych szkoleń. Niestety większość kursów, które znajdowałem, tworzyli/prowadzili Hindusi. Moim zdaniem ich angielski akcent pozostawia wiele do życzenia.

Co ułatwiało Ci naukę? Miałeś jakieś sposoby na łatwiejsze zapamiętywanie?

Nie miałem sposobów na zapamiętywanie, ani niczego co by mi ułatwiało naukę.

Jak poszły Ci pierwsze rozmowy? Co sprawiło Ci największy problem?

Chodziłem na rozmowy (spokojnie szacuję, że było ich około 20) i bez skutku. Zawsze czegoś mi brakowało pod względem technicznym. Wysłałem CV do mojej obecnej firmy, zaprosili mnie na rozmowę. Pierwszy etap to wstępna rozmowa przez telefon po niemiecku, którą przeszedłem pozytywnie.

Powtarzam to wszystkim, którzy pytają się czy łatwo jest znaleźć pierwszą pracę. W moim przypadku wysłałem chyba z 40 CV, żeby zdobyć pierwszą pracę. Dzisiaj zrobiłbym to inaczej, ale wtedy masowo wysyłałem CV. W odróżnieniu od Szymona, mnie firmy nawet nie chciały zapraszać na rozmowy kwalifikacyjne. Jeśli dobrze pamiętam byłem wtedy na trzech.

Drugi etap rozmowy trwał około dwóch godzin. Różne zadania na kartce, pytania o moje wcześniejsze doświadczenie. Na rozmowie okazało się tak samo jak na wcześniejszych rozmowach, że za mało umiem między innymi z Javy, ale nie dyskredytowało mnie to. Firma bowiem oferuje staże dla świeżych absolwentów oraz studentów ostatnich lat studiów.

Sporo firm początkujących programistów zatrudnia nie za posiadaną wiedzę, a za potencjał. Jeśli pracodawca zobaczy, że kandydat ma braki, ale ma też chęć do nauki, to może przymknąć oko na niektóre niedociągnięcia. Technologii można się nauczyć. Szczególnie jeśli w zespole będzie osoba, która chętnie dzieli się wiedzą.

Po sześciu miesiącach opuściłem swoją pierwszą firmę, w której pracowałem jako programista na rzecz obiecująco zapowiadającego się stażu. Java, AngularJS to było coś.

Po trzech miesiącach płatnego stażu przyjęli mnie na umowę o prace. Jednak przez pierwsze trzy miesiące w godzinach pracy odbywałem kurs niemieckiego, co było wymagane przez pracodawcę. Potem zaczął się pierwszy projekt, potem kolejny. Siedzę w obecnej firmę już ponad dwa lata.

Gdzie wysłałeś 5-10 pierwszych CV? Jak wybierałeś te firmy?

Zacząłem wysyłać CV do różnych firm, które poszukiwały młodszego programisty Java. Niestety poza znajomością Javy wymagana była ode mnie np. znajomość baz danych.

Między innymi tę umiejętność wspomniałem w artykule Od zera do developera. Duża liczba pracodawców szuka początkujących programistów, którzy znają coś więcej niż tylko składnię języka programowania.

Odezwał się do mnie mój przyszły pracodawca. Mała firemka, wówczas trzyosobowa wliczając szefa. Na rozmowie kwalifikacyjnej nie weryfikował specjalnie mojej wiedzy technicznej. Przyjął mnie do pracy. Po 2 tygodniach opanowałem podstawy Hibernate (konfiguracja w XML). Po czasie widziałem, że nie nauczę się tutaj za dużo i szukałem dalej.

Jakie masz wskazówki, rady dla osób, które chcą się przekwalifikować?

Młodszym kolegom mogę polecić wybór studiów informatycznych. Sam poszedłem na matematykę, ale jak miałbym możliwość ponownego wyboru to wybrałbym informatykę. Kolegom, którzy chcą się przekwalifikować, systematyczną naukę, wytrwałość i cierpliwość. Mi niestety brakowało cierpliwości. Gdybym był bardziej cierpliwy z tym co robiłem, uniknąłbym rozczarowań związanych z nieudanymi rozmowami.

Zauważyłeś tu wzorzec? Szymon podobnie jak Tomek polecają cierpliwość i systematyczną naukę. To naprawdę jest klucz. Ja zawsze powtarzam, że nic “samo się nie zrobi”. Do przekwalifikowania potrzebna jest Twoja ciężka i systematyczna praca.

Jakie masz plany dotyczące dalszej nauki/rozwoju?

Na chwilę obecną pracuję jako Full-stack Developer. W przyszłości chciałbym powrócić do większego wykorzystania tego, czego się nauczyłem na studiach więc coś z Big Data: Scala i Apache Spark. Chyba, że do tego czasu trendy się zmienią. Może już się zmieniły?

Jak oceniasz pracę jako programista?

Pracę jako programista oceniam bardzo pozytywnie. Nie ma co jej porównywać do poprzedniego stanowiska jakim było informatyk na helpdesku. Dużo przeróżnych i ciekawych zadań, nowe wyzwania i nieustanna nauka.

Programista to zawód, w którym moim zdaniem musisz się ciągle rozwijać. Jeśli oczekujesz, że nauczysz się programować i masz spokój to jesteś w błędzie. Pracuję ponad dziesięć lat i bez przerwy widzę braki w swojej wiedzy, bez przerwy uczę się czegoś nowego.

Marek

Marek postanowił zostać programistą w wieku 24 lat będąc już po studiach na Politechnice Wrocławskiej na wydziale Mechaniki i Budowy Maszyn.

O tym jak projektant-konstruktor został programistą

Jako programista zacząłem pracować w styczniu 2017 roku. Wcześniej ukończyłem studia na Politechnice Wrocławskiej - Mechanikę i Budowę Maszyn. Zawód postanowiłem zmienić w wieku 24 lat. Czyli w sumie, ani specjalnie późno, ani specjalnie wcześnie.

Warto powiedzieć, że na Mechanice i Budowie Maszyn styczności z programowaniem nie miałem praktycznie żadnej. Mogę nawet powiedzieć, że kiedy jako przedmiot dodatkowy miałem na pierwszym roku programowanie C++, to go nie zaliczyłem. Totalnie nie ogarniałem o co chodzi w programowaniu.

Właściwie moje jedyne doświadczenie z programowaniem czegokolwiek to było tworzenie prostych programów do sterowników PLC w graficznym interfejsie. Czyli coś takiego jak Scratch, tylko że wersja bardziej “inżynierska”. Czyli zamiast funkcji do wykonania, zawory do zamknięcia. A zamiast zmiennych podanych przez użytkownika, jakieś czujniki, które pobierały dane. Oczywiście bez żadnego wnikania w sprzętowe szczegóły, po prostu kwadracik który podaje bieżące wyniki pomiarów.

Na zmianę ścieżki zawodowej zdecydowałem się po prawie dwóch latach pracy w zawodzie. Najpierw pracowałem jako pracownik (stażysta) działu R&D6. A potem jako projektant-konstruktor.

Na podjęcie decyzji o zmianie zawodu miało wpływ kilka czynników. Między innymi to, że podczas poszukiwania nowej pracy (dalej jako mechanik) kilka razy odbiłem się od oferty pracy poprzez swoje wymagania finansowe, które nie były jakoś specjalnie wygórowane.

Więc podjąłem decyzję, że spróbuję się przebranżowić. Na samym początku głównie ze względu na zarobki i perspektywy rozwoju, które dla inżynierów mechaników w naszym kraju niestety są dość mizerne i obarczone dużą odpowiedzialnością. Na sam początek chciałem zacząć dość klasycznie, czyli od C++.

Praca jako programista rzeczywiście jest dość dobrze płatna. Co więcej w miastach gdzie jest duża konkurencja pracownicy dostają szereg dodatkowych profitów. Na przykład firma Opera Software, w której pracuję oferuje swoim pracownikom:

  • dostęp do piłkarzyków, bilarda, konsol do gier, flippera, planszówek etc. w trakcie pracy,
  • fundusze na materiały do nauki (książki, konferencje),
  • budżet na integrację zespołu,
  • prywatną opiekę medyczną (także dla rodziny pracownika),
  • dopłatę do parkingu,
  • kartę Multisport,
  • dopłaty do innych aktywności sportowych,
  • kanapki w pracy,
  • masaże w trakcie pracy,
  • owoce w pracy,
  • soki/napoje energetyczne w pracy,
  • różne rodzaje darmowych kaw, herbat, ziół, płatków, mleko, wodę etc.

Tutaj znowu pojawiła się dla mnie pewna bariera poznawcza. Warto powiedzieć, że na samym początku nie potrafiłem rozróżnić int od float, a samo wykonywanie czegokolwiek w IDE stanowiło dla mnie czarną magię, serio. Byłem totalnym programistycznym tłukiem. Umiałem obchodzić się z komputerem, ale cokolwiek związanego z programowaniem było dla mnie czarną magią.

Wiedza wymagana do efektywnej pracy jako programista jest olbrzymia. Często początkujący nie wiedzą nawet od czego zacząć. W jednym z artykułów zebrałem listę wymaganych umiejętności aby rozpocząć pracę.

Na całe szczęście na weselu mojego kolegi udało mi się trafić na kogoś, kto siedział w branży IT przez kilka lat. Tak od słowa do słowa polecił mi, żeby zamiast uczyć się C++ spróbować Javy. I dzięki Bogu za to!

Nie dość, że Java ma dużo niższy próg wejścia (niż C czy C++), to jeszcze na chwilę obecną jest dużo więcej ofert pracy z nią związanych. A tym samym dużo większe szanse na staż czy jakikolwiek start.

Doszło więc do tego, że musiałem zdecydować z czego się uczyć. Oczywiście Google.pl “best sources to learn Java” i wertowanie Quory, Stack Overflow etc. Na tym etapie cały czas jeszcze zastanawiałem się nad jakimś bootcamp’em czy ewentualnie studiami z zakresu programowania. Całe (nie)szczęście na jedno i drugie nie było mnie w danym momencie stać. Zacząłem więc od darmowych kursów Javy dostępnych w internecie. Z tego co pamiętam pierwszy z kursów dostępny był chyba na stronie Coursera - beznadziejny. Wystarczy nadmienić, że programowania uczono w nim w IDE (werble…) BlueJ, co było totalną masakrą.

Jednak i tym razem miałem farta i po chwili trafiłem na kurs Javy na Udemy od Johna Purcella, który zresztą cały czas polecam wszystkim znajomym próbującym zacząć przygodę z programowaniem. Tutaj było już o niebo lepiej. Starałem się programować 3-4 godziny dziennie. Miałem zamiar jak najszybciej zacząć pracować w zawodzie. Uczyłęm się w domu i w wolnych chwilach w pracy oglądałem jego filmiki i próbowałem pisać własne programy.

Takie pisanie programów równolegle z prowadzącym kurs, pomagało mi zapamiętać to, co robiłem. Dodatkowo robiłem sobie jakieś małe zadania, żeby przypomnieć sobie co było na poprzednich lekcjach. Po tym pierwszym kursie było już tylko lepiej. Od tego samego autora znalazłem więcej kursów, które dotyczyły innych zagadnień w Javie.

Wystarczy powiedzieć chociażby o Spring’u, Swing’u, wielowątkowości, wzorcach projektowych. Dodatkowo okazało się, że sam autor kursów jest bardzo pomocną osobą. Zawsze odpowiadał na maile i pomagał w sprawach, w których miałem problemy. Ba, nawet raz dał mi darmowy dostęp do jednego ze swoich kursów, gdy nie miałem kasy, aby go wykupić. Za to do dzisiaj wysyłam mu donate’y na PayPal’a.

Starałem się też jak najwięcej czytać o programowaniu. Nie tylko o samej Javie, ale ogólnie o architekturze komputera etc. Wiadomo, trochę pomogła elektronika, która była na studiach, ale ogólnie to i tak jak uczenie od zera. Pomocny okazał się też darmowy kurs Harvardu CS50. Serio, świetnie są tam omówione podstawowe zagadnienia.

Jeśli szukasz książek dla programistów zapraszam do artykułu. Znajdziesz w nim listę kilkunastu książek, które przydadzą się na różnych poziomach zaawansowania.

Po jakichś 5 miesiącach takiej nauki podjąłem decyzję, że czas zacząć próbować startować na staż/juniorskie pozycje. Mimo, iż w sumie moja wiedza nie była jakaś zabójcza. Poprzeglądałem oferty pracy z Javy i słałem CV gdzie popadnie, gdzie w miarę spełniałem wymagania.

Dodatkowo zauważyłem, że do programowania jest mi potrzebne coś więcej niż Java. Czyli np. SQL, XML, HTML, CSS, JavaScript. Starałem się więc dodatkowo ogarnąć coś, chociaż powierzchownie, z tych tematów, aby na rozmowach nie wychodzić na totalnego ignoranta.

Wcześniej wspomniałem o tym, że pracodawcy często patrzą na potencjał. Właśnie takie przygotowywanie się do rozmowy przez “liźnięcie” tematu może pomóc. Pokazujesz w ten sposób, że zależy Ci na tej pozycji. Powinieneś jasno powiedzieć, że nie znasz tematu, ale niedawno zacząłeś się go uczyć.

W międzyczasie podjąłem też studia informatyczne na prywatnej uczelni, ale okazały się one totalną stratą czasu i pieniędzy. Dobra rada dla przekwalifikowujących się, olejcie uczelnie, ogarnijcie dobrze jeden język. Znajdźcie jakąś pracę i dopiero potem idźcie na studia.

Szczerze to nie wiem czy wyciągnąłby tak ogólne wnioski na podstawie jednej uczelni. Zgadzam się z Markiem, co do tego, że “sprzedawcy marzeń” to strata czasu i pieniędzy. Jeśli ktoś mówi Ci, że po trzymiesięcznym kursie będziesz programistą, nie mając wcześniej doświadczenia, to moim zdaniem kłamie.

Udało mi się dostać na kilka rozmów kwalifikacyjnych. Tutaj poszło już w miarę z górki. Z trzech rozmów, na których byłem, jedna zakończyła się propozycją pracy, druga propozycją stażu. Doszedł do tego jeszcze świetny szef, który rzeczywiście chciał dać mi szansę i pomagał mi przy rozwoju w początkowych fazach mojej pracy.

No i w tej pierwszej pracy siedzę do dzisiaj. Projektuję wewnętrzny system banku w nowej Javie EE, w oparciu o REST i utrzymując jeszcze starą wersję zbudowaną na Struts.

Chociaż większość programistów to introwertycy, to staramy się być naprawdę pomocni. Jest spora szansa, że w pracy znajdziesz kogoś kto chętnie odpowie na Twoje pytania.

Cały czas uczę się dodatkowych rzeczy. “Łyknąłem” trochę uczenia maszynowego, uczę się Androida. W tym momencie staram się ogarnąć libGDX, żeby zacząć robić proste gierki na Androida. Jako następne na celowniku mam Unity i naukę C# przy okazji. W międzyczasie pogłębiam wiedzę z Javy i ogarniam Springa 5.

Już wspominałem, że programowanie to ciągła nauka. Jak tylko dowiesz się więcej z jednego zakresu zauważysz braki w innym miejscu.

Mogę powiedzieć, że znalazłem w programowaniu coś dla siebie. Mimo, że początkowo do zmiany branży skłoniły mnie zarobki. Jako konstruktor z perspektywy czasu mogę powiedzieć, że byłem dosyć kiepski. Jako programista czuję się zdecydowanie pewniej w zawodzie. Rozwinęło się to w pewien rodzaj pasji. Sam w wolnych chwilach piszę artykuły o programowaniu i rzeczach związanych z programowaniem na blogu it-leaders.

Tomasz

Tomasz to dwudziestopięciolatek, który w lutym 2018 roku zaczął pracę jako programista. Ukończył studia z tytułem magistra inżyniera budownictwa ze specjalizacją inżynieria mostowa. Poniżej możesz przeczytać jego historię.

O tym jak budowniczy mostów został programistą

Czym zajmowałeś się wcześniej? W jakim zawodzie pracowałeś?

Wcześniej pracowałem jako asystent projektanta mostowego. Do moich zadań należało przygotowywanie obliczeń nośności mostów. Obliczenia te wykonywałem w Excelu. Potem, by je przyśpieszyć, zacząłem używać C++ i tak już zaczęła się moja przygoda z programowaniem. Odkryłem, że programowanie można wykorzystać nie tylko w branży budowlanej.

Miałeś wcześniej styczność z programowaniem?

Pierwsza moja styczność z programowaniem to czasy gimnazjum, czyli budowanie stron w HTML i CSS. W liceum mieliśmy na informatyce proste zadania do rozwiązania w Pascalu. Nie byłem tak bardzo zakręcony na punkcie programowania, żeby każdą chwile wolną w gimnazjum i liceum spędzać przed komputerem. Większość czasu wolnego spędzałem grając w nogę z kolegami z osiedla.

Ile czasu poświęciłeś na przekwalifikowanie się, ile godzin dziennie/tygodniowo się uczyłeś?

Ciężko powiedzieć ile czasu poświeciłem. Po pracy siadałem codziennie tak na 2 godzinki i robiłem kursy online albo pisałem własne programy. W sobotę lubiłem wybrać się do swojej ulubionej kawiarni i tam ćwiczyć swój warsztat.

Jak długo przygotowywałeś się przed wysłaniem pierwszego CV?

Myślę, że potrzebowałem mniej więcej rok czasu. Oczywiście pierwsza rozmowa kwalifikacyjna musiała pójść źle :). Na pytania teoretyczne odpowiedziałem poprawnie, ale niestety nie dałem rady z napisaniem programu, zabrakło mi wiedzy praktycznej.

Prezentowanie siebie na rozmowach kwalifikacyjnych, to też umiejętność. Jak wszystkiego, uczymy się jej przez praktykę. Innymi słowy każda kolejna rozmowa to więcej doświadczeń, które pozwolą Ci lepiej wypaść na kolejnych rozmowach.

Dlaczego zdecydowałeś się przekwalifikować?

To w sumie wyszło bardzo naturalnie. Zawsze interesowałem się informatyką, bardzo lubię sobie upraszczać życie, a jeszcze bardziej jak coś się samo robi. Jestem samoukiem, a co jest wspaniałe w nauce programowania to to, że wszystko jest na wyciągnięcie ręki. To znaczy, że potrzebne materiały znajdziesz w większości za darmo. Jedyne czego potrzebujesz to czasu i dużej motywacji.

Od czego zacząłeś naukę programowania?

Od rozmów, wielu rozmów. Wielu moich dobrych kolegów jest z wykształcenia informatykami. Jak się spotykaliśmy to często temat schodził na programowanie. Czasem udało nam się nawet coś razem popisać. I tak od rozmowy do rozmowy odkryłem, że programowanie ma olbrzymi potencjał. Potem pojawiły się kursy na Udemy i Pluralsight, ale tak na poważnie to zacząłem swoje programowanie od książki “Symfonia C++”.

Chyba do końca życia nie zapomnę tej książki. Gwiazdkolot do tłumaczenia wskaźników, “Można żyć bez Coca-Coli, ale po co?” itp. Książka jest bardzo popularna wśród studentów. Autor w bardzo przystępny sposób tłumaczy podstawy C++. Bardziej zaawansowane konstrukcje omówione są w kontynuacji “Pasja C++”. Tę drugą zostawiłem sobie po studiach z sentymentu :).

Z jakimi technologiami aktualnie pracujesz?

Obecnie pracuję z takimi technologiami jak C# i SQL do ogarniania backend’u aplikacji webowej oraz React z TypeScript’em po stronie front-end’u.

Co sprawiało Ci największe problemy w trakcie przekwalifikowania się?

Największym problemem był wybór materiałów do nauki, ponieważ istnieje tak wiele źródeł, że teraz nie sztuką jest odszukanie materiałów, ale jak myślę trafna selekcja tych informacji.

Jak i gdzie zdobywałeś materiały do nauki? Czy możesz polecić źródła z których korzystałeś? Dlaczego akurat te?

Tak jak wcześniej pisałem, głównie kursy online na Udemy albo Pluralsight. Warto zwrócić uwagę czy kurs jest aktualny, jaką ma ocenę i ile widzów. Z całego serca radzę by samemu spróbować napisać coś choćby bardzo małego, prostego. Nie bójcie się kompilatora, on podpowiada, gdzie jest błąd :). Jest bardzo pomocny.

Podpisuję się pod tym obiema rękami i nogami. Programowania uczymy się programując. Im więcej praktyki tym lepiej, praktykę można zdobyć właśnie przez pisanie programów.

Co ułatwiało Ci naukę? Miałeś jakieś sposoby na łatwiejsze zapamiętywanie?

W programowaniu ważniejsze od zapamiętywania, jest nauczenie się szukania informacji. Niestety system edukacji w jakim zostałem wychowany nakładał wielki nacisk na zapamiętywanie. Nikt nas nie uczył, jak mamy się uczyć, jak szukać informacji, a wydaje mi się, że byłoby to bardzo pomocne. Nie przejmuj się, jeśli czegoś nie pamiętasz, jak tylko potrafsz to znaleźć w Internecie :).

Jak poszły Ci pierwsze rozmowy? Co sprawiło Ci największy problem?

O tym już wyżej pisałem. Pierwsza poszła średnio-dobrze. Dzięki niej już na kolejnej dużo mniej się stresowałem i wiedziałem czego się spodziewać.

Jakie masz wskazówki, rady dla osób, które chcą się przekwalifikować?

Życzę Wam dużo motywacji, czasu i czerpania radości z programowania, bo to naprawdę fajne! :)

Jakie masz plany dotyczące dalszej nauki/rozwoju?

Chciałbym pisać więcej po stronie backend’u. Poznać nowe możliwości C# których jeszcze nie znam.

Jak oceniasz pracę jako programista?

Jest to praca, która wymaga ciągłej gotowości do rozwoju. Codziennie może zaskoczyć Cię jakiś problem, którego w tym momencie nie potrafisz rozwiązać i musisz szukać. Koledzy z zespołu i w większości programiści są bardzo otwarci i gotowi do pomocy. Zdajemy sobie sprawę ze ktoś może czegoś nie wiedzieć. Informatyka jest tak wielką dziedziną, że jedna osoba nie jest w stanie wszystkiego wiedzieć.

I to jest super! Bo dzięki temu łatwiej prosić o pomoc drugą osobę. To jest też trudne, bo trzeba się przyznać, że się czegoś nie wie, ale warto pytać.

Jak dla mnie nie ma lepszej pracy, niż praca jako programista. Codziennie uczysz się czegoś nowego, nowe wyzwania, wspaniali ludzie, świetna atmosfera w zespole. Bardzo się cieszę z decyzji jaką podjąłem by zakończyć karierę mostową i rozpocząć karierę jako programista :).

Ania

Nie rozmawiałem z Anią na temat przekwalifikowania. Jednak jej historia jest dostępna w internecie ;). Jeśli chcesz ją przeczytać to zapraszam na blog, którego prowadzi razem z Jakubem Kobiety do kodu. Jeśli nie znałeś go wcześniej to znajdziesz tam sporo artykułów wartych przeczytania.

Podsumowanie

Mam nadzieję, że historie, które przeczytałeś będą dla Ciebie dobrą motywacją. Postaram się zebrać najważniejsze punkty:

  • przebranżowienie jest możliwe,
  • przebranżowienie wymaga bardzo dużo konsekwentnej, regularnej pracy i nauki,
  • żaden płatny kurs nie zrobi z nikogo programisty bez jego własnej pracy,
  • posiadanie mentora, osoby bardziej doświadczonej znacząco przyspiesza naukę,
  • programowanie to ciągła nauka, nawet po zdobyciu pracy w zawodzie,
  • zdobycie pierwszej pracy jest ciężkie, sam wysłałem blisko 40 CV zanim dostałem tę pierwszą,
  • pieniądze też mogą być dobrym motywatorem, jednak na dłuższą metę może być ciężko ze znalezieniem chęci do dalszej nauki, która jest kluczowa.

A teraz jeszcze kilka łyżek dziegdziu, tak żeby zgasić huraoptymizm:

  • przytoczyłem historię osób, którym się udało. Pamiętaj jednak, że ludzie nie lubią się dzielić swoimi porażkami. Innymi słowy na każdą osobę, której się udało przypada X, które nie dały rady,
  • nikt nie potrafi przewidzieć jak ta branża będzie wyglądała za 5, 10 czy 15 lat. Może uczenia maszynowe i sztuczna inteligencja rozwiną się na tyle, że praca niektórych programistów będzie zbędna i koniunktura się odwróci?
  • pamiętaj, że przebranżawiając się rywalizujesz z osobami, które kształcą/kształciły się w tym kierunku,
  • często jest tak, że osoby będące na studiach nie mają tak dużych zobowiązań jak osoba, która chce się przebranżowić. Studenci przeważnie nie mają rodziny na utrzymaniu, czy dużych zobowiązań finansowych7. Innymi słowy przebranżawiając się możesz sporo ryzykować.

Jeśli myślisz, że chcę Cię odwieść od przebranżowienia, to masz rację. Jeśli mimo tego zostaniesz, to osiągniesz to co sobie założyłeś. Tylko będąc wystarczająco zdeterminowanym możesz to osiągnąć. To jak będzie? Dasz radę przekwalifikować się na programistę? Wiesz już, że to nie jest łatwe. Wiesz, że wymaga to sporo wysiłku. Podejmiesz wyzwanie? Jakąkolwiek decyzję podejmiesz gratuluję wyboru :). Nikt tej decyzji nie podejmie za Ciebie. Podziel się swoją opinią w komentarzu, a może Tobie już udało się przekwalifikować?

Na koniec mam do Ciebie prośbę. Jeśli artykuł przypadł Ci do gustu proszę podziel się nim ze swoimi znajomymi. W ten sposób pomożesz mi dotrzeć do nowych czytelników - z góry dziękuję. Jeśli chcesz otrzymywać informacje o nowych artykułach proszę dopisz się do samouczkowego newslettera i polub Samouczka na Facebooku. Do następnego razu!

  1. Tak swoją drogą, moje domysły okazały się słuszne ;). 

  2. Język programowania składniowo bardzo podobny do Javy wypuszczony przez Microsoft. 

  3. Aplikacje okienkowe, na przykład przeglądarka internetowa może być aplikacją desktop’ową. 

  4. Back-end to programowanie po stronie serwera. Pisanie programów, które będą uruchamiane na serwerze. Dla odróżnienia front-end to część aplikacji, która uruchamiana jest przez klienty. W kontekście aplikacji webowych do front-endu używa się głównie HTML, CSS i JavaScript. Osoba pracująca zarówno z back-end’em i front-end’em często określana jest mianem full stack’a

  5. jQuery to jedna z popularnych bibliotek napisana w JavaScript, która ułatwia pracę z front-end’em. 

  6. można to przetłumaczyć jako dział badań i rozwoju (ang. research and development). 

  7. Mam świadomość, że tu mocno generalizuję. Wydaje mi się jednak, że statystycznie tak to właśnie wygląda. Tak jak piszę - wydaje mi się, więc będę wdzięczny jeśli pokażesz dane, które wyprowadzą mnie z błędu. 

Pobierz opracowania zadań z rozmów kwalifikacyjnych

Przygotowałem rozwiązania kilku zadań z rozmów kwalifikacyjnych. Rozkładam je na czynniki pierwsze i pokazuję różne sposoby ich rozwiązania. Dołącz do grupy ponad 1000 Samouków, którzy jako pierwsi dowiadują się o nowych treściach na blogu, a prześlę je na Twój e-mail.

Zostaw komentarz