Chciałem to napisać po prostu w ""Rekrutacyjne WTF" ale nie wiedziałem jak to ująć, bo raczej nie miałem problemu z jakimiś konkretnymi rekrutacjami. Miałem problem z prawie każdą i to zwykle ten sam. Dodatkowo, mam wrażenie że to, że rekrutacja była przeprowadzona w przyjemny i logiczny sposób bardzo pozytywnie wpłynęło na mój ostateczny wybór firmy. Gadałem z kilkoma znajomymi, którzy uważają tak samo jak ja. Po rekrutacji natrafiłem jeszcze na poniższy filmik, który dokładnie ujął to co chciałem przekazać, ale mówił o rynku programistów w USA.
Standardowa rekrutacja
TL;DW: Algorytmiczne interview polegają na wkuwaniu na pamięć, a to co sprawdzają czyli kodowanie na czas i pod presją, nie przyda się w 90% firm.
W Polsce mamy podobnie, ale często zamiast algorytmicznych problemów dostajemy dosłownie pytania które sprawdzają czy kandydat wie coś, co można wygooglować w 5 sekund. I tutaj mamy jeszcze dodatkowy problem z rekrutacjami on-line, gdzie faktycznie jest to możliwe, nawet bez wiedzy rekrutera. W niektórych rekrutacjach dosłownie udzielałem odpowiedzi "nie wiem, ale jak chcesz to wygoogluje Ci odpowiedź jak dasz mi 10 sekund" i obstawiam że nie było to pozytywnie odbierane.
Jak zostać w Polsce Programistą 15k
- zapisz się na 15 interview na Seniora, najlepiej żeby były zdalne
- Na każdym zapisuj pytania i wkuwaj na pamięć odpowiedzi (albo po prostu miej je spisane na drugim ekranie)
- Na pierwszych pięciu prawdopodobnie Cię 'wyśmieją, ale zapisuj pytania i nie przejmuj się.
- ???
- Profit! Na kolejnych dziesięciu dostaniesz ofertę pracy jako Senior Developer, możliwe że z wyższą stawką niż początkowo chciałeś.
Naprawdę żaden z rekruterów nie widzi problemu z takim podejściem? Z moich rozmów wynika że doskonale zdają sobie sprawę że kandydat bierze udział w wielu procesach rekrutacyjnych, ale powtarzalność pytań rzadko zdaje się im zapalać nad głową lampkę.
Inne typy rekrutacji, albo czy da się jeszcze pogorszyć ten proces
Tutaj będzie moja sekcja "Rekrutacyjnych WTF":
- Kodowanie w Google Docs, oczywiście na czas i głównie sprawdzające jakie metody/funkcje znasz
- Kodowanie na czas gdzie jednocześnie wymaga się rozwiązania dobrego i przemyślanego, ale również kompilującego się i działającego.
*Śmieszna anegdotka, miałem dwa "kodowania na czas" w rekrutacji do tej samej firmy, z innymi osobami. Po rekrutacji dostałem feedback:
w pierwszym za bardzo skupiłem się na zadawaniu pytań żeby dostarczyć optymalne rozwiązanie i przez to nie dostarczyłem działającego rozwiązania na czas (w skrócie, koduj szybciej),
w drugim co prawda dostarczyłem działające rozwiązanie, ale powinienem więcej czasu poświęcić na zastanowienie się nad algorytmem, bo nie był optymalny. You just can't win... - Kodowanie na czas w którym główny nacisk nakłada się na używanie jednej, konkretnej klasy z którą ktoś mógł nigdy nie mieć do czynienia.
- Interviewer siedzi nad tobą i patrzy jak kodujesz, ale na pytania CO DO TREŚCI ZADANIA odpowiada lakonicznie lub wcale
Dobre typy rekrutacji
Jak można więc ten proces poprawić? Spotkałem się z kilkoma firmami które kompletnie inaczej podchodzą do rekrutacji i według mnie kilka kroków które bardzo pozytywnie wpłynęły na sprawdzenie wiedzy i satysfakcje kandydata:
- Wypytywanie z wiedzy w formie luźnej rozmowy o doświadczeniu do tej pory lub pracy w ostatniej firmie. Zadawanie pytań na podstawie tego co opowiada kandydat, na przykład: pracowałeś w TDD? To opisz jak to wyglądało. Zmieniłbyś coś? Co według ciebie było złego/dobrego w tym podejściu.
- Kodowanie NIE NA CZAS!!! Daj kandydatowi problem do rozwiązania i kilka dni na dostarczenie rozwiązania. Oczywiście szanujmy się i niech to będzie maks 2h kodowania, prosty problem. W ten sposób kandydat nie musi kodować pod presją i może zapoznać się z problemem, klasami, czymkolwiek co jest potrzebne.
*Żeby upewnić się że to kandydat to pisał, zrób follow up call w którym mówisz "Klient zmienił troche wymagania, jak byś to wprowadził?" Albo po prostu wypytaj dlaczego tą część kodu napisano w taki sposób a nie inny, czy gdyby wymagania były takie i takie to zrobiłbyś to inaczej? - "System design" interview, prawdopodobnie dopiero przydatne na wyższe stanowiska, ale bardzo dobrze sprawdza wiedzę z wielu zakresów. Według mnie interview z kodowania można by również poprowadzić w tym kierunku, tzn. rozmawianie o tym jakie rozwiązanie byś tu zaimplementował i dlaczego, bez pisania konkretnego kodu (albo tylko pseudokodu). Ale niestety nie spotkałem się z czymś takim
Am I being crazy?
Czy tylko ja widzę te problemy? Na pewno nie jestem ani najbardziej doświadczonym, ani (NA PEWNO) najbardziej błyskotliwym programistą. Nie jestem też jedynym programistą który chodzi na rekrutacje. Dlaczego pomimo tego wszystkiego, rekrutacje dalej wyglądają tak samo w 70% firm? Czy może ktoś mi to rozjaśnić i dać pozytywne strony tego na co właśnie narzekam?