HRakterna środa — jak przygotować się do rozmowy technicznej
Rekrutacja w świecie IT to niekończący się proces pozyskiwania świeżej krwi do firmy lub konkretnego projektu. W zależności od organizacji machina rekrutacyjna może wyglądać zgoła odmiennie. Czasami proces jest podzielony na wiele etapów, a czasami ogranicza się do jednej rozmowy. Jedne firmy działają “na czuja”, a inne stawiają na metodyczne podejście. Jeden aspekt jest jednak stały i niezmienny: pozyskanie nowej osoby do zespołu, która spełni wszystkie nasze wymagania nie jest proste. Specyfika pracy w IT dodatkowo nie ułatwia sprawy.
Artur Chmaro. Full stack developer z zamiłowaniem do React oraz Ruby. Pasjonuje się nowymi technologiami od kiedy pamięta. Wierzy, że pewnego dnia blockchain zmieni świat w nieco lepsze miejsce. Właściciel portalu o grach mmorpg.org.pl i e-sporcie — esportivo.net. W wolnym czasie dzieli się wiedzą na kanale YouTube, na którym znajdziemy materiały dotyczące np. podstaw JavaScript, GraphQL czy ReactJS-a.
To, że ktoś przedstawia się jako Senior Developer PHP z 10 letnim doświadczeniem nie jest równoznaczne, z tym, że taka osoba faktycznie zasili nasz zespół z siłą jakiej pożądamy. Projekty oraz procesy wytwórcze różnią się. Senior Developer w jednej organizacji może reprezentować poziom wiedzy Juniora w innej. Z tej właśnie przyczyny rekrutacja w branży IT mocno opiera się na weryfikacji technicznych zdolności osoby aplikującej. Weryfikacja ta zwykle jest przeprowadzana przez osobę “techniczną” obecną już na projekcie. Rekrutacja mało komu kojarzy się bezstresowo. Nie jest to komfortowa sytuacja zarówno dla aplikujących jak i osób przeprowadzających techniczny wywiad. Stres i napięcie można jednak minimalizować poprzez solidne przygotowanie się.
Jak przygotować się do “technical interview”?
Zarówno kandydat, jak i rekruter powinni odrobić swoje zadanie domowe. Nikt nie lubi tracić czasu, a nie ma nic gorszego niż rozmowa z kimś zupełnie nie przygotowanym do swojej pracy. Trzeba pamiętać, że proces rekrutacji to także wizytówka firmy. Profesjonalna atmosfera, przygotowanie do rozmowy, odpowiedni ubiór, właściwe wprowadzenie zawsze zostaną docenione, nawet jeśli finalnie nie dojdzie do współpracy. Drukowanie CV chwile przed spotkaniem i czytanie go na głos przed kandydatem nie wpisuje się w profesjonalizm. Tłumaczenie się deadline’ami, brakiem czasu, ciężkim klientem, deployem, releasem też nie. Uważam, że minimum jakie musi “zrobić” rekruter przed spotkaniem to:
1. Przeczytanie CV tyle razy ile potrzebuje
2. Zapoznanie się z profilem LinkedIN
3. Zapoznanie się z Githubem
4. Sprawdzenie projektów, w których kandydat wcześniej brał udział
5. Przygotowanie listy pytań bazując na wcześniej podjętych krokach
6. Podstawowa wiedza o projekcie i stosie technologicznym, na który odbywa się rekrutacja
7. Znajomość sposobu rozliczenia, benefitów, zasad współpracy oraz kolejnych kroków/etapów rekrutacji
Powyższa lista może nieco inaczej wyglądać w przypadku stanowisk juniorskich. Juniorzy mogą nie mieć githuba lub listy projektów, które zrobili. Warto wtedy “drążyć” temat nauki. Zawsze można zapytać o podjęte kroki i wnioski. Punkty 6 i 7 są ważne ponieważ trzeba pamiętać, że w trakcie rekrutacji nie tylko rekruter zadaje pytania. Osoby rekrutowane zawsze chcą dokonać najlepszego (dla siebie) możliwego wyboru. Osoby te mogą jednocześnie prowadzić wiele rozmów z innymi organizacjami. Wątła wiedza o projekcie, brak wiedzy na temat szczegółów zatrudnienia i następnych kroków w rekrutacji mogą rozdrażnić kandydata/kę i spowodować dokonanie przez nich innego wyboru. Celem pytań “na rozgrzewkę” jest rozładowanie atmosfery oraz poznanie drugiej osoby. Poniżej lista pytań, które można zadać :
1. Jak zaczęła się Twoja przygoda z programowaniem?
2. Jakie napotkałeś/aś problemy?
3. Jak poradziłeś/aś sobie z problemem “XYZ”?
4. Na czym polegała Twoja poprzednia praca?
5. Jaki był Twój największy sukces w nauce / poprzedniej pracy?
6. Dlaczego zdecydowałeś/aś się na pracę w React/Vue/Java/Rails/Angular? Za co najbardziej lubisz tę technologię?
7. Jak lubisz się uczyć?
8. Skąd czerpiesz wiedzę?
9. Czy masz swoich idoli powiązanych z IT (autorzy książek, youtuberzy, blogerzy)?
10. Jaki projekt byłby Twoim wymarzonym?
11. Gdybyś miała/miał nieograniczony budżet co byś poprawił/a w poprzednim projekcie?
Warto pamiętać o nie przerywaniu oraz pomyśleć o zaplanowaniu czasu na spotkanie (rezerwacja sali, poinformowanie członków zespołu o nieobecności). Pośpiech w niczym nie pomoże. Jedna osoba odpowie na wszystkie pytania w 45 sekund wyrzucając słowa jak karabin, a inna będzie potrzebować nieco więcej czasu. W przypadku małomównych kandydatów zawsze warto po każdym pytaniu dopytać: “Czy było może coś jeszcze? Czy coś oprócz XYZ? Dodałabyś jeszcze coś do tego?”. To bardzo prosta technika, a niezwykle często pozwala uzyskać odpowiedzi, których w przeciwnym razie nigdy byśmy nie usłyszeli. Odpowiedzi i wnioski warto zapisać sobie na kartce by móc później do nich łatwo wrócić. Po serii powyższych pytań czas na bardziej techniczne pytania. Zanim jednak przejdziesz do nich warto zaproponować chwilę przerwy lub po prostu coś do picia.
Pytania techniczne
Internet jest pełen artykułów typu “JavaScript interview questions 2019”, “Ruby on Rails interview 2019”. Dostęp do tych artykułów jest bardzo łatwy i mają go zarówno rekruterzy, jak i aplikujący. Uważam, że warto zapoznać się z tymi materiałami. Nie jestem zwolennikiem przeprowadzania quizu ABCD składającego się z 100 pytań, bądź kodowaniem przy tablicy, ale z tych materiałów zawsze da się wyłowić parę ciekawych pytań. Warto zwrócić uwagę na zamieszczone odpowiedzi (często krótkie i niepełne) i upewnić się, że kandydat faktycznie wie o czym mówi. Osobiście jestem zwolennikiem pytań otwartych dotyczących problemów które na co dzień możemy spotkać w pracy:
1. W jaki sposób korzystasz z bazy danych?
2. Jak debugujesz swój kod?
3. Jakich używasz narzędzi / pluginów w swojej codziennej pracy?
4. Jak dodałbyś/aś funkcję logowania przez Facebook do swojej aplikacji?
5. Jak testujesz swój kod?
6. Twoja ulubiona biblioteka w XYZ to?
7. Na co należy zwrócić uwagę przy doborze biblioteki/plugina do projektu?
8. Co to jest dług technologiczny i jak można mu zapobiec?
9. Czym jest linter i jakie są korzyści/wady z jego używania?
10. Czy korzystałaś/eś z XYZ? Jakie są korzyści tego rozwiązania?
Można także zawsze zadać pytania typowo związane z technologią, której znajomość jest wymagana. W trakcie rozmowy warto oprócz zwykłych pytań i odpowiedzi spróbować pójść krok dalej:
1. Poproś kandydata o pokazanie swoich wykonanych projektów w sieci
2. Pokaż fragment kodu (klasa, funkcja, kontroler) i poproś analizę (co ten fragment robi, czy są w nim jakieś potencjalne problemy, co warto przetestować)
3. Zepsuj w prosty sposób test i poproś rekruta o próbę naprawy go lub przeanalizowanie o co może chodzić w tym błędzie
4. Pokaż fragment kodu programu open-source (np. na platformie Github) i zapytaj czemu autor zrobił daną rzecz “tak, a nie inaczej”
Rekrutacja nie jest właściwym miejscem do przechwałek i uświadamiania komuś niewiedzy. Należy więc pamiętać by pytania były zadawane bardzo precyzyjnie i nie były nazbyt podchwytliwe. Jak kandydat nie zna odpowiedzi to zawsze można podpytać o kroki jakie należy podjąć w celu rozwiązania problemu. Na koniec warto zapytać kandydata czy on/ona nie posiada pytań. Pytania zadane przez kandydata także świadczą o wiedzy i oczekiwaniach danej osoby. Osoba doświadczona zada zupełnie inne pytania niż ktoś kto szuka swojej pierwszej wymarzonej pracy.
O co zapytać rekrutera?
Każdy doskonale sobie zdaje sprawę, że w IT panuje rynek pracownika. W skrócie oznacza to tyle, że przy odpowiednich kompetencjach i doświadczeniu w ofertach można sobie przebierać. To kandydat wybiera pracodawcę, nie na odwrót. Przed akceptacją oferty warto więc zadać parę pytań:
1. Jaka struktura panuje w zespole, do którego mam dołączyć?
2. Jak wygląda proces planowania i przyznawania zadań?
3. Jakich używać narzędzi do testowania?
4. Jak wygląda proces wdrożenia nowej wersji aplikacji?
5. Skąd będę wiedzieć czy dobrze wykonuje swoją pracę?
6. Załóżmy, że zrobię nową funkcję XYZ. Co dalej?
7. Proszę o podanie przykładowego zadania jakie bym mógł np. jutro otrzymać.
8. Co się dzieje w sytuacji gdy coś nie działa, a jest pierwszy dzień świąt albo niedziela?
9. Jak często są delegacje i w jaki sposób są rozliczane?
10. Wysyłacie mnie do Kazachstanu do klienta i podróż trwa 2 dni. Czy ten czas liczy się do mojego czasu pracy?
11. W jaki sposób raportuje czas swojej pracy?
12. Jak wygląda procedura przyznania urlopu?
13. W jaki sposób mogę się rozwijać w Waszej firmie?
Wymijające odpowiedzi lub uśmieszki pod nosami należy traktować jako znaki ostrzegawcze. Kwestie, które są dla Was fundamentalne warto mieć zapisane w umowie lub przynajmniej uzgodnione zawczasu.
Powyższy tekst jest efektem ubocznym wywiadu z Bartoszem Szczecińskim, którego zapytałem o kulisy rekrutowania ludzi. Bartosz napisał świetny artykuł o procesie rekrutowania React developerów. Rozmowie możecie przysłuchać się tutaj:
Zdjęcie główne artykułu pochodzi z stocksnap.io.
Komentarze