Od zera do Backend Developera

W pierwszym wpisie na tym blogu opisałem drogę, jaką musiałem przejść, żeby zostać programistą. Jeżeli jeszcze nie czytałeś tego artykułu, to gorąco Cię do tego zachęcam Jak zostałem programistą – historia prawdziwa. Pamiętam doskonale, jak wiele pozytywnych emocji towarzyszyło mi podczas otrzymania pierwszej propozycji pracy. Świetne uczucie, szczególnie dlatego, że w ogóle się tego nie spodziewałem. Przez długi okres byłem bardzo zadowolony z pracy i nie wyobrażałem sobie wykonywania innych obowiązków. Ala jak to często bywa, apetyt rośnie w miarę jedzenia…

W pierwszej pracy zajmowałem się głównie tworzeniem dodatków do systemu klasy ERP enova365 Desktop oraz wsparciem sieci wdrożeniowej w zakresie migracji danych. Praca bardzo mi odpowiadała, ale z czasem chciałem czegoś więcej. Oczywiście priorytetem dla mnie był rozwój. Chciałem mieć możliwość nauki od innych, czerpania z ich doświadczenia. Z czasem zadania stały się coraz bardziej powtarzalne i czułem, że stoję w miejscu. Nie miałem się od kogo uczyć dobrych praktyk programowania. Drugą kwestią były zarobki. Wtedy moje wynagrodzenie wynosiło około 2000 zł miesięcznie. Chciałem zarabiać więcej. Po przepracowaniu tego roku moje umiejętności programistyczne bardzo mocno wzrosły. Ponadto poznałem specyfikę pracy i klientów, przez co nie byłem osobą, którą będzie bardzo łatwo zastąpić. Przez ten pierwszy rok udało mi się domknąć kilka projektów programistycznych i pomóc przy wykonaniu kilku wdrożeń. Trzecią kwestią były kiepskie warunki pracy, Dało się odczuć, że pracujemy w nisko budżetowym startupie. To jednak był dla mnie najmniejszy problem. Ważne, że mogłem robić to, co lubię.

Na przełomie roku 2016/2017 postanowiłem poszukać nowej pracy. Zdałem sobie sprawę z tego, że jeśli chcę pójść do przodu i się rozwijać, to nie ma innego wyjścia. W lutym kończyła mi się umowa u obecnego pracodawcy, więc miałem około 2-3 miesięcy na znalezienie nowego miejsca zatrudnienia. Ponadto w tym samym czasie kończyłem studia inżynierskie, więc lada chwila mogłem zacząć pracę na pełny etat. Z tyłu głowy miałem myśl, że nawet jeżeli nie uda mi się znaleźć nowej pracy, to nic złego się nie stanie, bo obecny pracodawca z chęcią przedłuży ze mną umowę. Zacząłem przeglądać oferty pracy i niestety nie mogłem znaleźć zbyt wiele ogłoszeń odpowiadających moim kwalifikacjom. W zdecydowanej większości ofert głównym wymaganiem była znajomość technologii webowych, z którymi nie miałem żadnego komercyjnego doświadczenia. Na co dzień zajmowałem się programowaniem aplikacji desktopowych, więc szukałem pracy o takim profilu. Znalazłem trzy oferty pracy, w których firmy poszukiwały kandydatów, mających zająć się programowaniem aplikacji desktopowych. Wysłałem CV i po jakimś czasie otrzymałem zaproszenia na rozmowę kwalifikacyjną do wszystkich trzech firm. Rozmowa kwalifikacyjna to było dla mnie zupełnie nowe doświadczenie. Pojawiłem się na dwóch rozmowach, ale finalnie nie otrzymałem żadnej propozycji zatrudnienia. Może za słabo się przygotowałem? Może zbyt wysoko oceniłem swoje umiejętności? Może miałem za dużo na głowie? Przecież w tym samym czasie kończyłem pisać pracę dyplomową i przygotowywałem się do obrony. Chcąc nie chcąc, musiałem to odnotować jako drobne niepowodzenie. Tak naprawdę nic wielkiego się nie stało. Trzeba wyciągnąć wnioski, zakasać rękawy i próbować dalej. Sytuacja wbrew pozorom nie była zła. Obroniłem pracę dyplomową i uzyskałem tytuł inżyniera. Podpisałem kolejną umowę na okres 8 miesięcy i dostałem podwyżkę w wysokości 400 zł. I w końcu mogłem w pełnym wymiarze godzin zaangażować się w pracę. Miałem też więcej czasu po pracy, na naukę programowania.

W ramach pracy dyplomowej postawiłem sobie za zadanie zaprojektowanie i zaimplementowanie systemu informatycznego do obsługi elektronicznych wniosków urlopowych. Projekt zrealizowałem przy użyciu technologii webowych – ASP.NET Web Forms oraz Bootstrapa. Chciałem nauczyć się programowania webowego i pomyślałem, że chyba nie będzie lepszej okazji. Spędziłem wiele godzin nad realizacją tego projektu, ale też bardzo wiele się nauczyłem. Zdecydowanie lepiej szło mi programowanie samej logiki aplikacji, ponieważ nie różniło się to aż tak bardzo, od tego, co robiłem na co dzień w pracy. Tworzenie interfejsu użytkownika aplikacji internetowej to już zupełnie inna bajka. Było to dla mnie zupełną nowością, ale jakoś sobie poradziłem. Byłem bardzo zadowolony z efektu końcowego. Wtedy też pierwszy raz przez myśl przeszło mi, że mógłbym wykonywać podobne projekty w ramach pracy zawodowej. Niestety nie miałem takiej możliwości, ponieważ w pracy zajmowałem się tylko i wyłącznie programowaniem aplikacji desktopowych w WinForms. Dosłownie kilka tygodni później na horyzoncie pojawił się do realizacji prosty projekt aplikacji webowej – dedykowany system do zgłaszania usterek i awarii. Od razu wykazałem wielką chęć realizacji tego zadania. Bardzo szybko mogłem wykazać się umiejętnościami zdobytymi podczas pisania pracy dyplomowej.

W wakacje 2017 podjąłem drugą próbę zmiany pracy. Oczywiście dalej szukałem pracy przy programowaniu aplikacji desktopowych, bo w tym obszarze miałem zdecydowanie największe doświadczenie. Znalazłem ogłoszenie, którego wymagania w 100% pokrywały się z moimi umiejętnościami. Opis stanowiska wskazywał na niemalże taki sam zakres obowiązków, jaki miałem do tej pory. Bez większego zastanowienia wysłałem CV. Dokładnie tego samego dnia miała miejsce inna bardzo ciekawe sytuacja. Zadzwoniła do mnie rekruterka z firmy, do której wysłałem CV kilka miesięcy wcześniej. Otrzymałem wtedy zaproszenie na rozmowę kwalifikacyjną, ale z pewnych względów nie pojawiłem się na niej. Rozmawialiśmy o mojej sytuacji zawodowej i zapytała mnie, czy chciałbym wziąć udział w rozmowie rekrutacyjnej. Byłem zszokowany. Zgodziłem się. Tym razem wynik rozmów był zupełnie inny niż kilka miesięcy wcześniej. Obie rozmowy poszły mi dobrze i w obu przypadkach otrzymałem propozycję zatrudnienia. Byłem przeszczęśliwy i zadowolony, że udało mi się zrealizować mój cel. Również w tym samym czasie obecny pracodawca zaprosił mnie na rozmowę, podczas której zaproponował mi przedłużenie umowy oraz podwyżkę. Odmówiłem i podziękowałem za współpracę. Miałem jeszcze ponad miesiąc, żeby dokończyć rozpoczęte tematy oraz przekazać moje obowiązki innej osobie. Zdecydowałem się na wybór pracy z ogłoszenia, które znalazłem w Internecie. Podjąłem taką decyzję z kilku powodów. Firma korzystała z nowszych technologii, oferowała pracę w znanym mi obszarze systemów ERP, zapewniała lepsze wynagrodzenie i warunki pracy. Dodatkowo ludzie wywarli na mnie bardzo pozytywne wrażenie podczas pierwszego spotkania.

Praca w drugiej firmie przez cały okres zatrudnienia sprawiała mi wiele przyjemności i dawała dużo satysfakcji. Do moich głównych obowiązków należało tworzenie dodatków do systemów Comarch ERP XL oraz Comarch ERP Optima, a także rozwój i utrzymanie rozwiązań autorskich. Zadania były zróżnicowane. Przede wszystkim tworzyłem dodatki do systemów ERP oraz rozwijałem aplikacje desktopowe. Miałem także okazję pracować przy tworzeniu aplikacji webowej, służącej do obsługi zamówień i magazynu. Bardzo dużo nauczyłem się przez te półtora roku, które spędziłem w tej firmie. W zespole miałem zdecydowanie bardziej doświadczonych kolegów, a dzięki temu miałem się od kogo uczyć. Atmosfera wśród pracowników była bardzo pozytywna. Byłem również zadowolony z zarobków (około 50-70 tys. zł. rocznie), które w tamtym momencie w pełni mnie satysfakcjonowały. Niektóre znajomości zawiązane podczas pracy w tej firmie przetrwały do dnia dzisiejszego.

Jednym z zadań, które otrzymałem swojego czasu do wykonania, było stworzenie REST’owego API (Interfejs programowania aplikacji). Chodziło o prosty serwis pozwalający na pobieranie, dodawanie, modyfikowanie i usuwanie kontrahentów oraz zamówień z systemu ERP. Wtedy właśnie zaczęła się moja przygoda z WebAPI. Poznawanie technologii ASP.NET Core Web API i realizacja zadania tak mnie wciągnęły, że dosłownie ciężko było mi wyjść z biura. Po pracy cały wolny czas poświęcałem na rozwijanie się w temacie programowania REST API na platformie ASP.NET Core. Wsiąkłem na dobre. Niestety praca nad tym małym projektem trwała tylko miesiąc i potem trzeba było wrócić do programowania aplikacji desktopowych. Wtedy zamarzyłem sobie, że chciałbym na co dzień pracować przy tworzeniu API. Powoli zdawałem sobie sprawę, że jeśli chcę spełnić to marzenie, to pewnie niedługo trzeba będzie rozejrzeć się za nowym pracodawcą. Zastanawiałem się, czy w ogóle jest możliwe, żeby znaleźć taką pracę, w której programista zajmuje się tylko i wyłącznie tworzeniem API. Zacząłem czytać nieco więcej o specjalizacji w programowaniu webowym i wyszło na to, że chcę zostać Backend Developerem.

Backend Developer to programista, który zajmuje się programowaniem logiki aplikacji i jest odpowiedzialny za to, czego na pierwszy rzut oka nie widzi użytkownik danej strony czy aplikacji. Odpowiada za poprawne działanie danego systemu po stronie serwerowej, zapewniając jego funkcjonalności od strony technicznej.

Wiedziałem już, jaki jest mój cel i w którym kierunku chcę podążać. Od czasu do czasu przeglądałem oferty pracy dla programistów .NET. Starałem się być w tej sprawie w miarę na bieżąco. Ilość ofert pracy dla programistów desktopowych z każdym miesiącem była coraz mniejsza. W zdecydowanej większości pracodawcy poszukiwali programistów webowych. Obawiałem się, że kiedyś może dojść do takiej sytuacji, że będę chciał zmienić pracę i nie będę miał zbyt wielu możliwości. Albo co gorsza, w ogóle już nie będzie ofert pracy dotyczących desktopa. Po kilku miesiącach kontynuacji nauki programowania webowego (ASP.NET Web Forms, ASP.NET MVC, ASP.NET Web API) zacząłem poszukiwać nowego pracodawcy. W końcu wpadłem na ogłoszenie, na którym oczekiwano od kandydata znajomości ASP.NET oraz WinForms. Pomyślałem, że to coś dla mnie. Wysłałem CV. Otrzymałem zaproszenie na rozmowę kwalifikacyjną, którą udało mi się przejść pozytywnie. Poinformowano mnie, że trafię do jednego z dwóch zespołów. Albo będę rozwijał aplikację destopową w WinForms, albo aplikację webową w ASP.NET Web API i Angularze. Podczas testu technicznego rozwiązywałem zadania dotyczące programowania webowego, więc byłem przekonany, że dołączę właśnie do zespołu webowego. Nie mogłem się doczekać.

W trzeciej firmie spędziłem rok. Dlaczego tak krótko, skoro w końcu mogłem w pełni zająć się programowaniem aplikacji webowych? No bo niestety nie mogłem. Trafiłem do zespołu desktopowego, ponieważ brakowało im ludzi, a pracy było aż zanadto. Bardzo szybko wdrożyłem się w nowe obowiązki. Również w tej firmie byłem bardzo zadowolony z pracy. Zadania były dość wymagające. Ludzie z zespołu byli sympatyczni i pomocni. Miałem okazję zobaczyć, jak wygląda praca w korporacji. Zaliczyłem też wzrost zarobków (około 80 tys. zł. rocznie). Niby nie miałem powodu do narzekań, jednak nie zajmowałem się tym, czym chciałem się zajmować. Niestety nie miałem możliwości zmiany zespołu, przez co podjąłem decyzję, że po raz kolejny muszę porozglądać się za nową pracą.

Po okresie próbnym wróciłem do intensywnej nauki programowania webowego. Przerobiłem różne książki i tutoriale dotyczące ASP.NET Core Web API. Przeczytałem masę artykułów opisujących dobre praktyki tworzenia REST API. Napisałem kilka małych projektów. Stwierdziłem, że jestem w miarę gotowy na poszukiwanie nowych wyzwań. Wysłałem CV do pięciu firm. Zaproszenie na rozmowę kwalifikacyjną otrzymałem od czterech z nich. Pierwsza rozmowa poszła mi fatalnie i nie otrzymałem oferty pracy. Druga rozmowa poszła zdecydowanie lepiej, ale okazało się, że firma szuka kogoś z większym doświadczeniem. Trzecia rozmowa poszła naprawdę dobrze, ale nie dogadałem się w kwestiach finansowych. I ostatnia czwarta rozmowa, która na szczęście poszła najlepiej. Otrzymałem propozycję zatrudnienia i bez wahania ją przyjąłem.

I tak trafiłem do firmy, która świadczy usługi dla firm z sektora SMB, dużych przedsiębiorstw oraz instytucji publicznych. Do moich głównych obowiązków należy rozwój i utrzymanie dedykowanego systemu wsparcia sprzedaży dla jednej z najbardziej rozpoznawalnych grup mediowych w Polsce. Zajmuję się tworzeniem API, wykorzystując do tego język C# i ASP.NET Core Web API. W końcu mogę zajmować się tym, co chciałem robić już od dawna. Muszę przyznać, że okres wdrożenia był zdecydowanie trudniejszy, niż w przypadku pozostałych firm. Ale to pewnie wynikało z tego, że z mojej perspektywy całkowicie zmieniły się technologie i podejście do wytwarzania oprogramowania. Z uwagi na okoliczności (Koronawirus COVID-19) niemalże od samego początku pracuję zdalnie i jestem bardzo zadowolony z takiego modelu pracy. Udało mi się także zwiększyć zarobki o około 20%. W końcu czuję, że jestem w odpowiednim miejscu 🙂

Podsumowanie

Na samym początku chcę Ci podziękować drogi czytelniku, że znalazłeś czas i ochotę na przeczytanie tego artykułu. Mam nadzieję, że treści w nim zawarte będą dla Ciebie pomocne i przydatne. Niezależnie od tego, na jakim etapie swojej programistycznej kariery się znajdujesz, to życzę Ci dużo cierpliwości, wytrwałości i determinacji. Na moim przykładzie możesz zobaczyć, że ścieżka do osiągania celów i spełniania marzeń może być naprawdę kręta. Po drodze niejednokrotnie przydarzają się porażki, ale bez względu na to trzeba iść do przodu i nie wolno się poddawać. Czasem po prostu potrzeba trochę więcej czasu. Jeżeli chcesz zostać programistą, to nim zostaniesz. Jeżeli chcesz się przebranżowić to, to zrobisz. Znajdziesz sposób. Wykorzystasz swoją szansę. W końcu osiągniesz swój cel. Trzeba tylko w to mocno wierzyć i ciężko na to pracować.