Rekrutacja z perspektywy programisty z 3-letnim doświadczeniem.

Ostatnio brałem udział w kilku rekrutacjach na stanowisko programisty (Java/Angular). W tym wpisie chciałbym podzielić się moimi doświadczeniami z tych procesów.

Rekrutacja

Niedawno minęły trzy lata, od kiedy zacząłem pracować jako programista. Cały ten okres spędziłem w jednym software house-ie. W tym czasie pracowałem przy dwóch głównych i kilku mniejszych projektach. Od pewnego czasu zacząłem zauważać, że tempo mojego rozwoju zwolniło. Projekt, nad którym pracowałem, był już raczej stabilny pod względem technologicznym. Wiele powtarzających się problemów zostało w nim obsłużonych. Dlatego duża cześć zadań była bardzo powtarzalna. Pod względem biznesowym tempo rozwoju projektu było bardzo dynamiczne, ale możliwości do badania/poznawania nowych rozwiązań i technologii były ograniczone. Zaczęło to wpływać negatywnie na moje ogólne zadowolenie z wykonywanej pracy. Próbowałem co prawda poświęcać więcej wolnego czasu na badanie nowych podejść i technologii. Jednak nie łatwo znaleźć do tego motywację po całym dniu siedzenia przed monitorem. Dlatego uznałem, ze zmiana projektu może być dla mnie dobrym rozwiązaniem.

Postanowiłem rozejrzeć się na rynku ofert pracy i zacząłem rozmawiać z rekrutami piszącymi na LinkedIn. Po wymianie kilku wiadomości z następowało zazwyczaj rozpoczęcie procesu, który z mojej perspektywy można podzielić na 3 etapy:

  • Wstępne rozmowy z rekrutem
  • Weryfikacja kompetencji technicznych
  • Rozmowa z osobami z zespołu

Wstępne rozmowy z rekrutem

Aktualnie liczba ofert skierowanych do programistów posiadających nawet niewielkie doświadczenie komercyjne jest bardzo duża. Dodatkowo rekruterzy sami aktywnie szukają programistów, więc znalezienie ofert nie powinno być trudnym zadaniem. Warto jednak od razu mieć przygotowane CV (najlepiej po polsku i angielsku). Nawet jeśli nie będziemy aplikowali sami, tylko zostaniemy wyłowieni przez rekrutera, to prawdopodobnie zostaniemy poproszeni o przesłanie CV. Zdaje sobie sprawę z tego, że z perspektywy osoby chcącej zdobyć pierwsze doświadczenie komercyjne proces ten może wymagać większego zaangażowania. Jednak dla osoby już posiadającej doświadczenie samo rozpoczęcie rekrutacji jest bardzo proste. Wstępna rozmowa z rekruterem to etap z kategorii "łatwych prostych i przyjemnych". Pierwsze rozmowy z rekrutami odbywają się zazwyczaj telefonicznie (ew. przez komunikator do wideokonferencji) i trwają od ok. 10 do 30 minut. Na tym etapie omawiane są takie zagadnienia jak: opis stanowiska i projektu, wymagania i oczekiwania obu stron. Później przychodzi czas na umówienie nieco dłuższego (jednak najczęściej nadal zamykającego się w ramach jednej wideokonferencji) etapu mającego na celu weryfikację naszych kompetencji technicznych.

CV

r/ProgrammerHumor

Część techniczna

Do tej pory pracowałem jako programista full-stack (Java/Angular). Większość rekrutacji, w których brałem udział dotyczyła właśnie pozycji full-stack developera (w zbliżonym stosie technologicznym), albo back-end developera (języki z JVM-a). Część techniczna rekrutacji była już bardziej wymagającym etapem procesu. Zazwyczaj trwała ona godzinę (chociaż w jednym procesie było w sumie 3,5h).

Pytania, z którymi się spotykałem, dotyczyły głównie:

  • Podstaw języków programowania (Java/JavaScript/Typescript)
  • Framework-ów (Spring, Hibernate, Angular)

rzadziej zdarzały się pytania z:

  • Baz danych
  • Bezpieczeństwa aplikacji
  • Wydajności

Ze względu na charakter (weryfikacja wiedzy) etap ten można uznać za najbardziej stresujący. Większość rozmów odbywałem zaraz po pracy, co miało zarówno plusy jak i minusy. Z jednej strony nie maiłem czasu na myślenie o nich i stresowanie się przed ich rozpoczęciem, z drugiej ten tydzień był męczący. Będąc przy temacie stresu, to same rozmowy techniczne są prowadzone raczej "na luzie". Nadal jest to forma pytań i odpowiedzi, ale częściej przyjmują one formę wymiany poglądów i doświadczeń, a nie odpytywania. W przypadku dłuższych procesów zdarzały się nawet części warsztatowe, gdzie miałem okazję rozwiązywać konkretny problem wspólnie z prowadzącym. Generalnie jest to etap który może przynieść wiele korzyści niezależnie od tego jaki będzie wynik procesu rekrutacyjnego. W moim przypadku byłem w stanie namierzyć kilka obszarów, w których warto się rozwinąć nieco bardziej. Do tej pory pracowałem przy projektach dostępnych głownie w sieci wewnętrznej, które nie obsługiwały bardzo dużej liczby akcji w jednym momencie. Dlatego tematy związane z bezpieczeństwem i wydajnością nie były w nich aż tak rozwinięte jak w projektach z domen bankowych/e-commerce.

Rozmowa o projekcie z osobą/ami z zespołu

Kolejnym etapem występującym w większości rekrutacji była rozmowa z członkami zespołu. W zależności od organizacji procesu była to część rozmowy technicznej, albo oddzielne spotkanie. Jest to etap na którym można uzyskać informacje "z pierwszej ręki" na temat projektu. Niezależnie od tego jak szczegółowe informacje na ten temat uzyskamy juz na samym starcie procesu rekrutacji, zawsze dobrze mieć możliwość odbycia rozmowy z potencjalnymi przyszłymi kolegami z projektu. Jest to etap, na którym można również wstępnie ocenić czy będziemy w stenie skutecznie i komfortowo komunikować się z członkami zespołu.

Praca pod presją

r/ProgrammerHumor

Brak feedbacku w przypadku odpadnięcia z procesu

Decyzje po części technicznej podejmowane są zazwyczaj bardzo szybko (najkrócej na ofertę / zaproszenie na kolejny etap czekałem 3h, a najdłużej 4 dni). Ale mowa tu tylko o decyzjach pozytywnych. W przypadku, gdy odpadłem z procesu musiałem sam się tego dowiadywać. Chociaż wcześniej zapewniano feedback niezalanie od wyniku. Będąc przy temacie wyników nauczyłem się, że nie zawsze można tu polegać na swoich przeczuciach. Odpadłem w rekrutacji, która (w mojej ocenie) poszła mi najlepiej, a przeszedłem pozytywnie proces, który oceniałem jako swój najgorszy. Podejrzewam, że znaczenie może mieć tu zapotrzebowanie do danego projektu / zespołu.

Oczekiwanie odpowiedź

Meme Generator

Przebieg procesu

Aktualnie szukanie pracy to proces w 100% zdalny, co niesamowicie ułatwia to zadanie. Dodatkowo wiele ofert dotyczy pracy zdalnej, co znacząco zwiększa możliwość wyboru (ale także potencjalną konkurencję). Sam udział w części technicznej może być świetnym sposobem na weryfikację własnej wiedzy/znajomości technologii i wytyczenie dalszej ścieżki rozwoju. Dodatkowo na plus jest to, że zazwyczaj są to luźne rozmowy skupiające się na zagadnieniach występujący w codziennej pracy, a nie na znajomości na pamięć dokumentacji. Dzięki temu nie wymagają specjalnego przygotowywania się do nich, a mogą pomóc zidentyfikować obszary, którym warto poświęcić więcej uwagi.

Duża część procesu rekrutacji prowadzona jest przez osoby nietechniczne i tu pozytywnie zaskakuje poziom ich wiedzy o technologicznej o konkretnych projektach. Dowiedzieć można się można nie tylko szczegółów na temat technologii wykorzystywanych w projekcji, ale nawet wersji danych narzędzi i planów związanych z migracjami. Wynika to chyba z tego, że prowadzanie rekrutacji na stanowiska techniczne stało się samo w sobie zawodem. Przez to ludzie wykonujący te zadanie są na prawdę dobrze do niego przygotowani. Nigdy też nie zdarzyło mi się, żeby umówione spotkanie zostało przełożone w ostatniej chwili, albo ktoś się na nim wcale nie pojawił.

CV pokemon

r/ProgrammerHumor

Studia / certyfikaty

Z moich doświadczeń wynika, że ukończenie studiów na kierunku niezwiązanym z inżynierią oprogramowania aktualnie nie stanowi większego problemu problemu. Sam studiowałem mechanikę i budowę maszyn. Pewna część ofert ma zaznaczone preferencje dotyczące wykształcenia / certyfikacji, jednak w większości przypadków nie jest to sztywny wymóg. Prawdopodobnie są to czynniki mogące zwiększać szanse w rekrutacji, jednak nie trafiłem na proces, gdzie studia / certyfikaty byłyby wymogiem koniecznym. Mam wrażanie że umiejętności techniczne i doświadczenie są jednym z głównych kryteriów, zaraz obok umiejętności miękkich i chęci rozwoju. Nie oznacza to, że kończenie studiów / zdobywanie certyfikatów nie ma sensu, są to świetne czynniki motywujące do rozwoje i poznawani nowych zagadnień. Jednak posiadanie ich nie gwarantuje zdobycia pracy, a ich brak tego nie uniemożliwia.

Brak kwalifikacji

Daily LOL Pics

Forma współpracy

Na koniec chciałbym napisać kilka zdań o formie oferowanego zatrudnienia. W przypadku software house-ów i firm body leasing-owych dominujące jest B2B. Ma to sens, bo często jest to forma współpracy wychodząca korzystniej finansowo niż UoP. Pracując na B2B można wliczać cześć wydatków jako koszt prowadzania działalności i łatwo o większą elastyczność czasu pracy. Z drugiej strony wiąże się to z pewną ilością dodatkowej pracy związanej z wykonywaniem opłat, groszami warunkami urlopu chorobowego, często brakiem płatnego urlopu. UoP proponowany głownie w przypadku bezpośrednie zatrudnienia w większej firmie, może być opcją na pierwszy rzut oka nieco mniej atrakcyjną finansowo, jednak ogólnie wygodniejszą i bardziej "bezstresową". Niezależnie od osobistych preferencji nie powinno być problemu ze znalezieniem procesu na stanowisko oferujące odpowiadającą nam formę współpracy, jednak mam wrażenie, że dominuje B2B.