Rozmowa kwalifikacyjna programisty

Rozmowa kwalifikacyjna programisty

Podzielę się dziś z Wami, jak mniej więcej może wyglądać rekrutacja na stanowisko programisty. Oczywiście jest to pewien schemat. Dokładny proces rekrutacyjny w każdej firmie wygląda trochę inaczej. Etapów może być mniej albo więcej, ich kolejność może być inna. Gdy biorę udział w jakiejś rekrutacji, to jednym z moich pierwszych pytań jest, jak wygląda cały proces i czego się spodziewać.

Warto też pamiętać, że rozmowa rekrutacyjna wygląda inaczej dla osób z doświadczeniem zawodowym, a inaczej dla tych, którzy szukają pierwszej pracy w zawodzie.

Wstępna rozmowa z osobą z działu rekrutacji / HR

Na wstępie rekruter zapyta o różne podstawowe informacje. Zwykle padają pytania o doświadczenie, umiejętności konkretnych technologii oraz inne, na które CV nie odpowiada bezpośrednio. Dodatkowo pytania o dostępność, wymiar czasu pracy, rodzaj umowy. Zwykle też dostaniemy informacje o firmie, stanowisku itd.

Czasem zdarza się, że padnie kilka pytań technicznych. Zwykle są to pytania z jednoznacznymi odpowiedziami, które rekruter ma przed sobą w czasie rozmowy. Ma to na celu wstępne sprawdzenie kandydatów, zanim rozpocznie się dalszy, czasochłonny (i kosztowny) proces rekrutacyjny.

Możemy być też poproszeni o określenie swoich oczekiwań finansowych już na tym etapie. Warto dobrze temat przemyśleć przed rozmową i zrobić rozeznanie jak wygląda aktualna sytuacja w branży. Stawki mogą się różnić pomiędzy miastami oraz pomiędzy różnymi technologiami. Jeśli masz kogoś znajomego na podobnym stanowisku, spróbuj podpytać jakiego poziomu wynagrodzenia możesz oczekiwać, przynajmniej zgrubnie. Zobacz ogłoszenia z widełkami na portalach z ogłoszeniami (np. justjoin.it) lub grupach Facebookowych.

Zadanie rekrutacyjne

Tutaj są różne możliwości. Jedni używają serwisów w stylu Codility (https://www.codility.com/). W Codility test możemy zrobić w zasadzie w dowolnym momencie, ale od czasu rozpoczęcia mamy określoną ilość czasu na skończenie zadania np. 3 godziny. Po skończeniu testu dostajemy automatyczną ocenę naszego kodu - poprawność względem różnych danych wejściowych, ocenę wydajności, czas wykonania itd. Firma, która nas rekrutuje, dostanie nasz kod i ocenę bezpośrednio z Codility.

Jeśli macie przed sobą test na Codility lub podobnej stronie, warto skorzystać najpierw z demo i oswoić się z jego obsługą. To oszczędza czas i pomaga zapoznać się z sytuacją w mniej stresujących warunkach.

Niektóre firmy tworzą własne zadania rekrutacyjne. Tu tak naprawdę jest pełna różnoroność, ograniczona tylko kreatywnością pracujących tam programistów :) Niektóre problemy będą zbliżone do tych, które pojawiają się w codziennej pracy programistycznej. Może się pojawić do rozwiązania kilka mniejszych zadań albo jedno duże, ale bardziej złożone, w którym trzeba wykazać się różnymi umiejętnościami (projekt bazy danych, projekt API).

Spotkałam się z zadaniami świetnie dodefiniowanymi, gdzie były załączone przykłady danych wejściowych i wyjściowych, to jednak była mniejszość. Większość jest nieco mglista. Dlatego warto dopytać o szczegóły oczekiwanego rozwiązania, jeśli coś jest dla nas niejasne.

To, co na pewno będzie oceniane to: poprawność, optymalność, czystość kodu. Warto zapytać co jest dla rekrutujących najważniejsze w tym zadaniu - np. eleganckie rozwiązanie problemu algorytmicznego, kompleksowa analiza potencjalnych scenariuszy, kompletność rozwiązania itd. Sama spotkałam się z różnymi oczekiwaniami w różnych firmach.

Rozmowa techniczna

Może się odbywać na żywo w siedzibie firmy lub online np. poprzez Skype albo Google Hangout. Tu też można się spotkać z całym wachlarzem możliwości.

Warto przejrzeć sobie popularne pytania odnośnie technologii, które były wypisane w wymaganiach na dane stanowisko. Jeśli aplikujemy na stanowisko programisty Python to warto wiedzieć np. co to generator, znać hierarchię dziedziczenia, być w stanie napisać własny dekorator. Pojawią się też zapewne pytania bardziej ogólne: wzorce projektowe, dobre praktyki programistyczne, może coś z algorytmów albo struktur danych.

Jest też sporo artykułów z zebranymi przykładowymi pytaniami z danej technologii. Np. Essential Python Interview Questions. Wpisując "Python interview questions" w ulubioną wyszukiwarkę dostaniemy jeszcze więcej wyników.

Możemy też zostać poproszeni o napisanie fragmentu kodu na kartce. Nie powinien to być zwykle długi kod. Na początku warto zapytać o: założenia początkowe, co jest spodziewanym wynikiem, co w sytuacjach brzegowych (np. brak danych wejściowych, dane niezgodne z zakresem itd.).

Umiejętność pisania kodu bez wspomagania edytorem warto poćwiczyć wcześniej w domu - na kartce lub w zwykłym edytorze tekstowym bez kolorowania składni i podpowiedzi. To może się wydawać trywialne, ale sprytne edytory przyspieszają codzienną pracę, ale uczą nas lenistwa. Może się okazać, że np. zapomnimy składni dodawania elementu do słownika, co totalnie podetnie wiarę w swoje możliwości i odwróci uwagę od ważniejszych części zadania.

Jest duża szansa, że zostaniemy zapytani o poprzednie projekty - zawodowe lub te prywatne. Ma to m.in. na celu sprawdzenie z jakimi problemami i skalą się do tej pory spotkaliśmy. Warto przed rozmową poukładać sobie w głowie dotychczasowe projekty i co przydatnego pod kątem obecnej pracy można o nich powiedzieć. Być może nie masz doświadczenia komercyjnego w danym frameworku, ale np. stworzyłeś w nim projekt po godzinach związany z zainteresowaniami.

Rozmowa ogólna

Może odbywać się razem z rozmową techniczną, a może być przeprowadzana przez zupełnie inną osobę. Niektóre firmy wolą, żeby z rekrutowanym spotkało się kilka różnych osób. Wtedy wrażenia i oceny można porównać, więc mają szansę być bardziej obiektywne.

Wiele rozmów, na których byłam otwierało pytanie: "Powiedz nam coś o sobie". Warto przygotować sobie przed rozmową chronologiczny spis stanowisk, wykształcenia, projektów oraz informacji o obecnej sytuacji zawodowej, żeby płynnie przejść przez taką część. Jeśli obecnie jesteśmy zatrudnieni w innej firmie, może paść pytanie dlaczego chcemy zmienić obecne stanowisko. Wiele osób mówi wtedy o tym, że chciałoby się rozwijać, robić coś innego itd. Warto przemyśleć dlaczego tak naprawdę chcemy zmienić pracę? Jeśli nasza odpowiedź będzie wydumana i nieszczera, to niekoniecznie zrobi dobre wrażenie na rekruterach. Przed rozmową zastanów się nad swoją prawdziwą motywacją, ale przedstaw ją w pozytywnym świetle.

Pod koniec warto zapytać, kiedy można się spodziewać odpowiedzi. Różne poradniki polecają wysłać maila z podziękowaniem za rozmowę po. Szczerze powiedziawszy sama nigdy tego nie robiłam, bo wydaje mi się to sztuczne i jest to kolejny mail w skrzynce zapracowanych osób. Zawsze dziękuję jednak za rozmowę, gdy z niej wychodzę.

Nasze pytania

W zasadzie na każdym etapie mamy możliwość zadania pytań. Te również warto przygotować wcześniej na podstawie tego, co nas faktycznie interesuje. Ja zwykle pytam o rzeczy związane z codziennymi obowiązkami, ilością spotkań, architekturą aplikacji, procesem wydawania, ciekawymi wyzwaniami, szkoleniami itd.

Więcej o pytaniach można poczytać tutaj: Tech interview handbook- Questions to ask

Opcjonalne:

Poniższe etapy zdarzają się rzadziej, ale warto o nich wspomnieć:

  • referencje - czy możesz skontaktować firmę z kimś z poprzedniej pracy, kto Cię zarekomenduje i opowie jak się z Tobą pracuje itd.
  • dodatkowe rozmowy z zespołem
  • dzień testowy - możesz przed zatrudnieniem przyjść do biura i zobaczyć jak realistycznie wygląda codzienna praca i zadania
  • screening - potwierdzenie poprzedniego zatrudnienia, wykształcenia, licencji, certyfikatów itd. Zwykle firma powinna zapytać o Twoją zgodę przed.

Uwagi

Na koniec kilka moich uwag przed rekrutacją.

  • Pamiętaj, że po drugiej stronie siedzą osoby, z którymi potencjalnie możesz potem pracować. Będą oceniać (świadomie lub nie) czy faktycznie chcą z Tobą pracować w jednym zespole. Pomimo stresu i oficjalnej sytuacji nie zapominaj być sobą :) Nie każdemu się spodobasz, ale jeśli na codzień jesteś wesołkiem, a całą rozmowę przesiedzisz z kamienną twarzą, to możesz nie pokazać autentycznego siebie.
  • Nie w każdej firmie chcesz pracować. Jeśli strona rekrutująca zachowuje się agresywnie, lekceważąco albo próbuje Ci udowodnić, że nic nie wiesz, to pytanie czy chcesz, żeby tak wyglądała Twoja współpraca na co dzień?
  • Poćwicz pisanie bez edytora, bez podpowiedzi, na kartce lub zwykłym edytorze tekstowym. Poćwicz pisanie kodu w jakimś IDE online np.: Ideone, Repl
  • Przygotuj dobre pytania przed - takie, które autentycznie są dla Ciebie istotne
  • Zobacz czym zajmuje się firma, zastanów się gdzie mogą leżej jej największe problemy techniczne? Jeśli masz informację z kim będziesz mieć rozmowę, zobacz profil tej osoby na LinkedIn - jakie ma stanowisko, ile pracuje w tej firmie, ile ma lat doświadczenia. Będziesz wiedzieć z kim masz do czynienia.
  • Poczytaj o rekrutacji do firm IT z "Wielkiej Czwórki" (Facebook, Google, Amazon, Apple) np. tu: Get that job at Google i zobacz jak wygląda przykładowe zadanie rekrutacyjne: "https://www.youtube.com/watch?v=XKu_SEDAykw Materiałów w tym temacie jest w internecie mnóstwo.

Podsumowanie

A Ty jakie masz doświadczenia rekrutacyjne? Cały powyższy artykuł jest bardzo subiektywny, oparty na moich własnych doświadczeniach. Na pewno da się o rozmowie kwalifikacyjnej i rekrutacji opowiedzieć jeszcze dużo innych rzeczy. Czuję, że ten artykuł wciąż jest niekompletny, ale jest pewnym zarysem tematu. To, co napisałam powyżej wydawało mi się najbardziej ogólne i przydatne dla innych.

0 Komentarze