Moja droga do pierwszej pracy

Od początku do końca


Minęło sporo czasu od ostatniego postu. Przez ten okres całkowicie poświęciłem się nauce Javy i jej technologii, aby jak najszybciej mieć szansę na dostanie pracy. I udało się! Chciałem się tym tutaj podzielić i przedstawić całą drogę od początku do końca.

Jak zaczynałem

Programowania zacząłem się uczyć (tak bardziej na poważnie, z myślą bycia programistą) gdzieś na początku 4 klasy technikum informatycznego (2016 rok). Wcześniej nie byłem jeszcze pewien, co chciałbym robić w przyszłości. Jak pewnie w większości techników, programowanie opierało się na programowaniu webowym, czyli wokół HTML, CSS i Javascript. Były to jednak takie podstawy, że praktycznie nie było możliwe napisanie czegoś konkretnego z taką wiedzą. O OOP to nawet nie słyszałem. Dlatego zacząłem interesować się tym tematem i uczyć się na własną rękę. Wtedy trafiłem na kursy M. Zelenta, które były dla mnie po prostu idealne. Ponadto, dzięki nim dostałem tyle motywacji i tak mnie zachęciły do działania, że o niczym innym już nie myślałem i to właśnie z programowaniem chciałem wiązać przyszłość (trwa to do dziś). Jednak po jakimś czasie okazało się, że wiedza wyniesiona z technikum (przynajmniej w moim wypadku) oraz częściowo z kursów okazała się stertą złych praktyk, o czym szybko się przekonałem dzięki zakładaniu wątków na Forum Pasja Informatyki z moimi projektami - pisanymi w celu nauki technologii webowych. Dzięki wielu osobom z forum, m.in. Krzycho92, argeento oraz później Comandeer i Ivan, wiele się nauczyłem i po części feedback z forum motywował mnie do dalszej pracy.

Moje projekty

Zrobiłem listę moich projektów, żeby mieć się z czego pośmiać za parę lat, ale też z myślą, że ktoś zobaczy jak wygląda mniej więcej progres projektów i na jakim etapie można się starać o pierwszą pracę.

I tak na początku pomijając jakieś śmieszne stronki na ocenę do szkoły, moim pierwszym projektem była gra kółko i krzyżyk zrobiona w HTML, CSS i Javascript. Miałem tu też pierwszą styczność z Gitem. Później w tych samych technologiach razem z kolegą zrobiliśmy kopię Game of Life Johna Conwaya (Ciężko to nazwać grą :D).

Gdzieś w między czasie wygrałem konkurs świąteczny (100zł na książkę :D) zajmując 1 miejsce z 72 głosami (drugie miało 35), którego celem było wykonanie animacji znaków ASCII w dowolnej technologii zorganizowany przez Forum Pasja Informatyki. Animacja w HTML, CSS, Javascript wyglądała tak:

Animacja świąteczna

Dało mi to sporo satysfakcji :D

Po drodze, na potrzeby szkolne, wykonaliśmy z kolegą aplikację webową symulującą szkolne rysowanie obrazów w zwierciadłach i soczewkach.

Następnym moim projektem, już nieco większym, który rozwijam do dziś, była strona jaki-jezyk-programowania.pl. Prace wystartowały w styczniu 2017 roku. To tu, podczas budowania strony, nauczyłem się najwięcej z technologii webowych. Poznałem Bootstrapa i jQuery. Zacząłem używać ES6 i buildować projekt z pomocą webpacka. O jakość kodu dbał mi ESLint. Nie mówiąc już ile pochłonąłem wiedzy teoretycznej na temat różnych technologii. Jest to projekt na który poświeciłem największą ilość czasu.

Zacząłem pisać tego bloga dzięki inicjatywie DajSiePoznac2017 z wykorzystaniem narzędzia Jekyll - opisywałem to wcześniej na blogu. Był to nieco burzliwy okres, gdyż częstotliwość postów była 2 na tydzień, w między czasie rozwijałem jaki-jezyk-programowania.pl. Na dodatek byłem niedługo przed maturą i poświęcałem masę czasu na naukę do rozszerzeń - matematyki i informatyki, przez to bardzo mało czasu zostawało mi na programowanie. Dosłownie katowałem się tym, a koniec końców nie udało mi się uzyskać satysfakcjonującego wyniku z matury - o tym później. Co do blogowania to było to miłe doświadczenie i chyba do tego wracam ;)

Jako odskocznia od typowych projektów zacząłem tworzyć remake retro gry Battle City/Tank 1990 w Phaserze. Pewnie każdy ją kojarzy z dzieciństwa. Gra nie jest dokończona, zatrzymałem się na podstawowych elementach mechaniki gry (bez leveli, różnych czołgów i zbierania ulepszeń) by zająć się w pełnym wymiarze tym czym zacząłem się uczyć w między czasie - Javą, jej technologiami i OOP. Tworzenie gry było ciekawym doświadczeniem, myślę, że kiedyś do niej wrócę lub zabiorę się za jakąś nową.

Tak więc, moim kolejnym celem była Java. W tej technologii chciałem pracować i miał to być mój główny język programowania.

Zbliżały się wakacje, więc pomyślałem, że może znajdę jakieś praktyki żeby nabrać trochę doświadczenia. Niestety, mieszkam w Kielcach, gdzie jest bardzo mało ofert pracy dla programistów - tym bardziej Juniorów. O dziwo, była jedna oferta praktyk. Uradowany zaaplikowałem, jednak spóźniłem się, bo rekrutacja już się zakończyła. Zaproponowano mi, że jeśli czuję się na siłach to mogę zaaplikować na stanowisko Juniora. Dopiero zaczynałem z Javą, więc tego nie zrobiłem.

Po opanowaniu podstaw Javy zabrałem się za tworzenie nowego projektu – aplikacji do zarządzania “todo” listami. Coś w rodzaju Trello. Był to świetny projekt do nauki, mogłem wykorzystać większość technologii, które miałem w planach się nauczyć. I tak kolejno poznałem technologie: Servlet, JSP, JSTL, Spring, Hibernate, zarządzanie zależnościami w Maven i podstawy testowania z JUnit i Mockito. Projekt stawiałem z wykorzystaniem Tomcata.

Podczas swojej nauki przeczytałem kilka książek i obejrzałem wiele tutoriali. Kindle miałem praktycznie zawsze przy sobie i jak tylko nadarzyła się okazja to się uczyłem.

Seria porażek i…

W między czasie, na początku budowania aplikacji, odbywały się rekrutacje na studia. Po przeanalizowaniu +/- praca vs studia, chciałem mimo wszystko studiować, ale złożyłem aplikację na wcześniej wspomniane stanowisko tak z ciekawości, żeby zobaczyć, na czym stoję i mieć ewentualną alternatywę - jeśli udałoby się z pracą, a nie ze studiami.

Pewnego dnia, miła Pani z HR zadzwoniła do mnie w odpowiedzi na aplikację. Myślałem, że rozmowę kwalifikacyjną odbędę w firmie, a przez telefon ustalimy tylko kiedy. Myliłem się :D. Pierwsza wstępna rozmowa jest przez telefon. Musiałem odpowiedzieć na szereg pytań technicznych i rozmawiać po angielsku. Stresowałem się niesamowicie, w ogóle nie spodziewałem się takiej rozmowy. Kilka pytań technicznych pomieszałem, a część anglojęzyczna poszła w miarę. Pani z HR powiedziała, że mojej wiedzy jest jeszcze trochę za mało, żeby przejść dalszy proces rekrutacji i zasugerowała spróbowanie jeszcze raz za jakiś czas, jak będę umiał więcej. Trochę mnie to przygasiło, ale niedługo potem dało kopa do dalszej pracy ;)

Tak więc, moim celem było dostanie się na informatykę do Wrocławia na PWR - i tylko tam. Nie złożyłem aplikacji nigdzie indziej. Miałem ambicję na jakąś lepszą uczelnie, żeby nie iść na jakąś zapchaj dziurę i coś właściwie z niej wynieść. PWR vs AGH w Krakowie vs PW w Warszawie było optymalnym wyborem, jeśli chodzi o trudność dostania się. Również było to atrakcyjne miasto. Miałem nadzieję, ze mi się uda. Nie wiem czy to było dobre myślenie, bo niestety nie dostałem się z pierwszej rekrutacji.

Po tej porażce, zacząłem na maksa poświęcać się na nauce Javy przy wspomnianej aplikacji. Skupiałem się na technologiach, które były wymagane w tej ofercie. Miałem jeszcze nadzieje na dostanie się na PWR z kolejnych rekrutacji, jednak mimo wytrwania do ostatniej - 5 (każdorazowo zdzierali ze mnie 80zł za rekrutacje), nie dostałem się. Progi dużo skoczyły w tym roku - a matura mimo włożonego trudu nie poszła najlepiej. Tak więc straciłem możliwość studiowania w tym roku.

Później biłem się z myślami i mówiłem sobie, że mogłem iść gdzieś indziej, choćby PK w Krakowie. Rodzice mówili to samo, bo przecież jak to bez studiów. Może to i racja, bo studia aż tak programowania nie udoskonalają, a i tak bym sam się rozwijał na boku. Przynajmniej studia mniej wymagające zabierałyby mi mniej czasu, więc miałbym go więcej na samorozwój. No ale wybór pozostał jeden - szukanie pracy. Dobrze, że stale rozwijałem się i uczyłem bo pozostałbym z niczym. Musiałbym chyba skoczyć na budowlankę :D.

Przygotowałem CV, rozpisałem swoje projekty, umiejętności i nic po za tym. Nie umieszczałem żadnych kwalifikacji zawodowych ani odbytych praktyk - miały mało związku z programowaniem i były dla mnie bezwartościowe.

Z aktualnym stackiem technologicznym, który poznałem do tej pory - przynajmniej na poziomie podstawowym, spełniałem wymagania kilku ofert pracy dla Junior Programistów Javy. Jednak największym moim problemem był brak komercyjnego doświadczenia, a większość firm tego wymaga nawet dla Juniorów. Sporo ofert pracy w wymaganiach miało też ukończenie szkoły wyższej. Jest to dla mnie troszeczkę ironiczne, ale stawiam ze firmy mają jakieś plusy z tego, żę biorą studentów.

Postanowiłem więc, że poszukam lokalnie oraz w Krakowie, bo nie mam aż tak daleko, a to miasto jest zdecydowanie atrakcyjniejsze jeśli chodzi o pracę. Przeglądając oferty pracy natrafiłem na ofertę, na którą wcześniej aplikowałem z niepowodzeniem. Pracowałem intensywnie przez ostatnie miesiące - nadrobiłem sporo zaległości i poznałem nowe technologie, więc uznałem, że spróbuję jeszcze raz. Zgodnie z zaleceniami :D. Byłem jednak sceptycznie do tego nastawiony. Niestety była to jedyna oferta dla Juniorów w Kielcach. Oprócz jednej - która miała nieco większe wymagania. Mimo wszystko złożyłem aplikację tu i tu. Poza tym znalazłem kilka ofert w Krakowie. Również na nie zaaplikowałem.

Pierwszą odpowiedź dostałem po kilku dniach - mailowo. Była to anglojęzyczna firma z Krakowa. Zostałem poproszony o wykonanie testu programistycznego - napisanie aplikacji konsolowej do zamawiania jedzenia. Wykonałem to, ale koniec końców dostałem odpowiedź, że napisany przeze mnie program nie spełnia ich oczekiwań. Poprosiłem o feedback, żeby wiedzieć, co było nie tak i ku mojemu zdziwieniu otrzymałem dobrze opisaną listę rzeczy (nawet z linkami do książek/konferencji), nad którymi mógłbym popracować i zachęcano mnie do aplikowania po jakimś czasie.

Inne firmy się nie odzywały, pewnie ze względu na brak doświadczenia i że jestem zaraz po technikum, bez studiów. Wiele firm obawia się tego, że po krótkim czasie uciekniemy od nich (choćby na studia), po tym jak oni zainwestują w nasz rozwój. Nie wiedziałem, co ze sobą zrobić. Nie mogłem się na niczym skupić, cały czas myślałem o pracy.

Dopiero po 2 tygodniach dostałem telefon od firmy, do której już wcześniej aplikowałem z niepowodzeniem. Tym razem poszło mi o wiele lepiej. Zostałem zaproszony na rozmowę. Firma bardzo mi się podobała wizualnie - był to nowy budynek. Również ludzie wydawali się całkiem mili. Tam czekała mnie jednogodzinna rozmowa techniczna, po części po angielsku oraz 3 godziny na napisanie jakieś przykładowej aplikacji konsolowej. W moim przypadku była to symulacja prostego “systemu bankowego”. Zakładanie kont użytkowników (w tym admina, który zarządzał kontami). Tworzenie i przypisywanie im kont bankowych. Zapisywanie i odczytywanie tych danych z xml i jakieś proste przelewy między kontami. To tak mniej więcej. Rozmowa poszła mi bardzo dobrze. Z aplikacją było już trochę gorzej. Robiłem ją trochę chaotycznie i na stresie. Na koniec jednak, gdy musiałem wychodzić, powiedziałem co zrobiłbym tu inaczej i było wzięte to pod uwagę.

Po całym procesie miałem mieszane uczucia. Nie byłem pewny czy poszło mi wystarczająco dobrze. Na odpowiedź musiałem czekać prawie 2 tygodnie i zaczynałem dostawać świra. To była moja jedyna szansa na pracę w tym momencie. Firma wydawała mi się idealna, na dodatek na miejscu, więc do wypłaty mogłem sobie doliczyć bez problemu minimum jakieś 1200 zł - ze względów na brak kosztów utrzymania się w innym mieście.

W końcu, pewnego dnia zadzwonił telefon. Byłem tak zestresowany, że ciężko mi było mówić. Powiedzieli mi, że rozmowa poszła mi dobrze, z językiem angielskim raczej nie będę miał problemu (firma ma klientów zagranicznych), jednak napisana przeze mnie aplikacja nie była idealna. Mimo wszystko, po chwili dowiedziałem się, że DOSTAŁEM PRACE! Ulga jaką poczułem była nie do opisania. Dostałem dobrą rekomendację od programisty, z którym miałem rozmowę kwalifikacyjną, wydawałem im się na ambitną osobą i uznali, że dadzą mi szansę. W dodatku, podobno jestem pierwszą tak młodą osobą przyjętą do pracy w historii firmy. To też fajne uczucie :D

Pracę zaczynam od nowego roku. Umowę mam już podpisaną. Jestem zadowolony, że mi się udało. Mam nadzieję, że przyjemnie będzie mi się tam pracowało, nabiorę sporo doświadczenia i będę to miło wspominał.

Podsumowanie

Nie uważam, że przyszło mi to jakoś łatwo. Poświęciłem na to dużo wolnego czasu i włożyłem w to sporo wysiłku. Pracę znalazłem stosunkowo szybko, nawet w mieście takim jak Kielce, gdzie rynek dla programistów jest ubogi. Więcej trwał proces czekania na odpowiedź niż szukałem pracy.

Co do studiów, to żałuję i nie żałuję. Z jednej strony fajna sprawa, z drugiej cieszę się, że mogę sobie pracować nad własnymi rzeczami i wreszcie zacznę zarabiać w swoim zawodzie, a co najważniejsze – nabierać komercyjnego doświadczenia. Jak słyszę moich znajomych jak to mają na studiach to chyba nawet bardziej jestem za tą pracą :D Oczywiście jeszcze nie jest powiedziane, że kiedyś na nie nie trafię.

Może ktoś przez ten wpis zda sobie sprawę, że już pora wyjść z jaskini i zacząć się rozglądać za pierwszą pracą? Kto wie ;)

Swoją drogą, planuję kiedyś zrobić wpis właśnie na temat praca vs studia ;) Powstał już post technikum vs liceum, więc to będzie dobre uzupełnienie.


Jeśli uważasz, że to co robię jest przydatne, polub stronę bloga na Facebooku. Wrzucam tam m.in. informacje o nowych wpisach, o promocjach dla programistów i inne.