Jak zostałem programistą - czyli droga porażek i sukcesów
Postanowiłem podzielić się swoją historię tego, jak zostałem programistą. Mam nadzieję, że komuś pomoże, doda wiary we własne możliwości i pozwoli się rozwijać. Moja historia nie jest z tych typowych, w których młody człowiek interesuje się informatyką, idzie na studia informatyczne, potem na staż, dostaje stanowisko młodszego programisty i myk, jest w sytuacji, w której wiele osób chciałoby się znaleźć. Nie jest też z tych, w których ktoś z wielką determinacją dąży do przebranżowienia, idzie na bootcamp czy kurs i w pół roku zmienia zawód. Powiedziałbym, że jestem gdzieś po środku. Ale zacznijmy od początku.
Kiedy zaczynałem myśleć o karierze, moje zainteresowania były bardzo daleko od technologii. Bardziej kierowałem się ku psychice ludzkiej, problemom ludzi i społeczeństw. Młody i naiwny myślałem, że może rozwiąże jakiś ludzki problem… Stąd też studia psychologiczne, których ostatecznie nie skończyłem, ale zamiast tego zyskałem dużo bardziej wartościowe doświadczenia zawodowe.
Opiszę krótki to, co istotne dla kontekstu, żeby móc przejść do meritum sprawy - programowania. Miałem kilka doświadczeń zawodowych (pomijając wakacyjną pracę na budowie w Niemczech), chwilę pracowałem w call-center sprzedając ‘Mini Ratkę’, byłem na stażu jako ambasador w nieistniejącym już startupie krakowskim BaseConnect i... tutaj zaczyna się historia właściwa.
Byłem na drugim roku psychologii, założyłem konto na LinkedIn z moją historią kariery i o dziwo napisała do mnie rekruterka z Ubera, czy byłbym zainteresowany stanowiskiem w dziale customer support. Warunki jak dla studenta były doskonałe, grafik na uczelni elastyczny, więc zaaplikowałem, dostałem się i zacząłem pracę.
Po kilku miesiącach zobaczyłem, jak koleżanka obok pisze coś w dziwnej konsoli i dostaje jakieś dane. Zapytałem - co to?. Kiedy sobie o tym myślę, to wydaje mi się, że bardziej krzyknąłem - ,,Ej ej ej! Co to! Ja też tak chcę!”
Od tamtego momentu zacząłem się uczyć SQL-a. Po części w internecie, po części na wewnętrznej platformie szkoleniowej i po kilku miesiącach pisałem zapytania i pomagałem sobie troszkę w pracy. Troszkę, bo wcale nie było mi to potrzebne. Po pół roku zostałem "specjalistą do spraw jakości", czyli prawdzałem pracę innych.
Po roku pracy w Uberze zaaplikowałem do Revoluta. Miałem tam kolegę i otwierali wtedy w Krakowie swoje biuro. Przeszedłem przez proces i zostałem analitykiem do spraw zgodności (compliance analyst).
Tam już korzystałem więcej z SQL-a i rzeczywiście był mi on pomocą. Po pół roku dostałem awans. Nie jestem do końca pewny, czy dzięki moim umiejętnościom, czy dzięki temu, że pożyczyłem kiedyś managerce 2 zł na bilet w autobusie i powiedziałem, że nie musi oddawać, ale niech pamięta o mnie przy awansach…
W każdym razie wziąłem udział w wewnętrznym procesie, dobrze mi poszło i zostałem analitykiem technicznym do spraw zgodności i już prawie 100% czasu spędzałem pracując z SQL-em i arkuszami Google. Uczyłem się też Pythona do analizy danych, bo myślałem że mi się przyda.
Po roku pracy w Revolucie chciałem spróbować czegoś typowo związanego z danymi i zaaplikowałem na analityka danych w AirHelpie. Proces rekrutacyjny był dość prosty (chociaż i tak zrobiłem błędy w SQL-u), ale składał się z zadań z SQL-a i stworzenia dashboardu w Excelu i odpowiedzeniu na kilka pytań związanych z danymi. Nie wiem, czy poszło mi śpiewająco, ale na tyle dobrze, że dostałem tę pracę.
Porażki, porażki, porażki…
Tutaj myślę, że zrobię mały przewrót, bo wszystko wygląda zbyt pięknie. Po drodze miałem masę rozmów rekrutacyjnych, również wewnętrznych, które skończyły się fiaskiem. Albo dlatego, że byli lepsi kandydaci, albo dlatego że g**** umiałem. Jak tak patrzę na siebie, to rzeczywiście g***** umiałem.
Najbardziej żenująca była dla mnie taka historia: składam na juniora do jednej z krakowskich firm, odpowiadam na kilka prostych pytań, ale potem robi się coraz ciężej, nie wiem, o co mnie pytają. W CV napisałem sobie rzeczy, z których robiłem tutoriale, ale nie miałem pojęcia, że to nawet w kilku procentach nie wyczerpuje tematu, więc poległem na całej prostej.
Najbardziej żenujące było jednak to, że osoby, z którymi rozmawiałem, powiedziały wyrozumiałym tonem, że możemy umówić się na inny termin i że dadzą mi tematy, o których będziemy rozmawiać. Byłem jednak na tak niskim poziomie, że nic nie rozumiałem z tych tematów… I zrezygnowałem z procesu. Kubeł zimnej wody.
To nie jedyna taka historia. W Uberze chciałem po kilku miesiącach iść do nowego projektu, ale mnie odrzucono i wzięto bardziej doświadczoną osobę. Bywa. Kiedy dostawałem awans na analityka ds. jakości, to tylko warunkowo na 3 miesiące, bo nie spodobałem się zbytnio w trakcie procesu. Na szczęście warunkowe okazało się tylko w teorii i manager, który nie chciał mi dać tego awansu, ostatecznie dał mi i stanowisko i podwyżkę. W Revolucie wziąłem udział w procesie na stażystę data scientista, ale też się nie udało. Proces był mało jasny, a ja zbyt mało zdeterminowany.
To były moje pierwsze doświadczenia porażki i powiem Wam, że były okropne, ale później jakoś porażka zaczęła mi smakować. Przestałem się przejmować tym, co ktoś o mnie myśli i traktowałem wszystko jako lekcję.
Wróćmy do AirHelpa.
Analityk danych i młodszy programista
Byłem analitykiem danych przez 1,5 roku. Pracowałem z zespołami programistów, managerami i product ownerami. Niespokojny ze mnie duch, dlatego kiedy ogarnąłem pisanie zapytań i analizę danych, zacząłem się zastanawiać, czego nowego mógłbym spróbować. Robiłem niektóre analizy z Pythonem i myślałem, że znam ten język (jak bardzo się myliłem, okazało się później), więc podjąłem kurs z web developmentu w Pythonie i powoli go przyswajałem. Równolegle robiłem kursy z uczenia maszynowego i czytałem różne książki z programowania.
Dla wielu osób praca analityka danych to spełnienie marzeń. Tak było też w moim przypadku. Świat się dla mnie zmienił, a rynek pracy stanął otworem. Bardzo polecam tę ścieżkę kariery, to ciekawy zawód i bardzo rozwojowy i łatwiejszy niż programowanie (moja osobista opinia). Jednym z powodów, dla którego chciałem zostać programistą było to, że wszyscy albo większość moich kolegów programistów potrafiłoby zrobić pracę analityka danych, a na pewno jego techniczną część, więc programowanie wyglądało jak poziom wyżej.
Wracając do tego, jak zostałem programistą, to tak naprawdę to do tej pory nie wiem, jak to się wszystko tak ładnie ułożyło. Po 1,5 roku pracy jako analityk danych wyszedłem z ,,ofertą”, że chciałbym być analitykiem na pół etatu a na pół etatu robić staż jako programista.
Możecie się już domyślać, że moja “oferta” została rozpatrzona pozytywnie i nie będę ukrywał, że miałem szczęście. Trafiłem na osoby, które nie tylko się zgodziły, żebym szedł taką ścieżką, ale też popchnęły sprawy do przodu i były bardzo pomocne. Firma była wtedy w kryzysie ze względu na coraz gorszą sytuację w pandemii, sporo osób odeszło i może to był jeden z powodów. Woleli, żebym został jako analityk jeszcze na pół etatu, niż żebym zmienił pracę.
A może po prostu mnie lubili? Ciężko mi powiedzieć. Na moją korzyść na pewno przemawiało, że byłem dobry z SQL, znałem wewnętrzne produkty, pracowałem z managerami i programistami oraz znałem Pythona, bo pisałem w nim jakieś analizy i skrypty do pobierania danych.
W zasadzie to jest clue tej historii - zostałem programistą przez robienie małych kroków w tym kierunku. Miałem stanowiska coraz bardziej techniczne, coraz bliższy kontakt z bazami danych, programowaniem w Pythonie i “dość” płynnie przeszedłem na stanowisko stażysty programisty.
Staż, czyli zderzenie z rzeczywistością
I oto jestem. Stażysta programista. Prawdę mówiąc, nie wiem co ja sobie myślałem. Pierwsze dni to był jakiś kosmos. Pamiętam, że z moim mentorem robiliśmy nową aplikację i ja nic nie umiałem. Docker, Nginx, Terraform, SQLAlchemy, mikroserwisy - to wszystko przygniotło mnie na samym początku. Próbowałem nadążać, ale to niestety nie było możliwe.
Do tej pory nie wiem, jak działają niektóre z tych rzeczy. Na szczęście miałem super mentora, który wiedział, że potrzeba czasu i tak dzień po dniu się ślimaczyliśmy.
Zacząłem powoli robić jakieś taski. Okazało się, że niektóre schematy zaczynają się powtarzać i tak właśnie się uczyłem. Myślę, że nie skłamię, jeśli powiem, że 10 -12 godzin pracy dziennie to była norma, a czasem jeszcze więcej. Co prawda nie było tego widać, bo koledzy z zespołu moje taski zrobiliby w pół godziny, ale ja musiałem doczytywać, uczyć się i siedzieć do późna, bo nic mi nie działało.
Po pół roku z pół-analityka i pół-stażysty-programisty zostałem młodszym programistą. Schemat ze stażu cały czas się powtarza - są rzeczy, które umiem zrobić i idą mi sprawnie, ale są też takie, które wciąż są dla mnie nowe i muszę się ich uczyć. Pocieszam się tym, że taka chyba jest natura pracy programisty (a na pewno na początku).
Studia, bo o tym nie wspomniałem
Samo studiowanie polecam. Na pewno studia informatyczne przydają się potem w pracy, jednak ja nie miałem żadnego tytułu, kiedy zostawałem analitykiem danych albo młodszym programistą. Byłem w trakcie studiów. Wciąż studiuję - jestem na 3 roku informatyki i ekonometrii zaocznie. Możliwe, że sam fakt studiowania jakoś zmieniał perspektywę na moją osobę. Pamiętajcie jednak, że nie musicie mieć studiów, żeby zacząć iść w kierunku programowania czy IT generalnie. Trzeba mieć za to determinację, żeby samemu się uczyć.
Jedna rzecz jest bardzo ważna - programowanie i nowoczesne systemy informatyczne są na tyle skomplikowane, że trzeba naprawdę poświęcić sporo czasu, aby zrozumieć, jak to wszystko działa. Ze studiami wymaga to sporego wysiłku, a co dopiero bez.
Podsumowanie
Tak w skrócie wyglądała moja droga do zostania programistą. Od stanowisk niezwiązanych z IT przez te coraz bardziej techniczne aż do programowania. Wszystkim polecam tą ścieżkę kariery, ale pamiętajcie, że nie jest to kaszka z mleczkiem. Trzymam kciuki za wszystkich czytających którzy też są w jej trakcie. ?