W nawiązaniu do wątków, które ostatnio pojawiają się na forum o tym jak to źli pracodawcy ciemiężą kandydatów na rozmowach każąc im odpowiadać na za trudne/za proste pytania itp. chciałbym pogadać jak wg Was powinna wyglądać dobra rozmowa techniczna. W komentarzach pokazałem jakie sam stosuję pytania i zostałem mocno zjechany, że pytania bez sensu, programista praktyk nie umiałby na nie odpowiedzieć itp.
jak wygląda proces od strony HR
Na początek opiszę trochę wymagania do procesu rekrutacyjnego, z których osoby komentujące mogą sobie nie zdawać nawet sprawy. Zazwyczaj osoba techniczna przed prowadzeniem rekrutacji dostaje podstawowe info o kandydacie + ewentualnie wskazanie pozycji na jaką by miała go rekrutować (chyba, że rekrutacja ogólna). HR w rezultacie rozmowy oczekuje:
- odpowiedzi w skali 1-5 jaki jest poziom kandydata pod względem technicznym
- odpowiedzi w w skali 1-5 jakie wrażenie robi kandydat (tj. czy wpasuje się w zespół, czy nie jest kłótliwy, czy umie rozmawiać, jak reaguje na wskazanie błędu itp)
- do tego często jest lista skilli typu API, bazy danych, software design itp. - w każdym z tych tematów trzeba napisać kilka słów o poziomie kandydata.
Nawet jak kandydat nie zostanie zatrudniony na stanowisko to przez X miesięcy taki wpis leży sobie w systemi HR i osoby w firmie, które mają potrzebę "na zasób" zamiast rozpisywać rekrutację mogą przejrzeć osoby, które się przewinęły i ewentualnie odświeżyć kontakt. Sam HR też co jakiś czas wraca do kandydatów, którzy dobrze wypadli w rozmowach, ale np. nie przyjęli oferty i ich co 6-12 miesięcy pinguje, aby odświeżyć kontakt.
rekrutacja techniczna
Sama rozmowa zazwyczaj zależy w dużej mierze od osoby ja przeprowadzającej - są ludzie, którzy preferują code review, live coding albo luźną rozmowę. Ja jestem w tej ostatniej grupie. Mój skrypt na rozmowę (1,5-2h) polega mniej wiecej na:
wprowadzenie
Temat dowolny - zazwyczaj rozmowa o doświadczeniu kandydata. Tu wiele osób powie "przecież to jest w CV". Odpowiem, że robię to bo wielu kandydatów się stresuje i źle wypada w rozmowie. Jak zaczniemy od neutralnego tematu to kandydat ma szansę "wejść w rozmowę" na luzie. Dla mnie też jest istotne co kandydat robił, jakiej skali projekty ogarnial itp.
rozmowa techniczna.
Tu wiele osób zrzyma się, że część pytań jest za prosta i na przykład nie ma sensu pytać o SOLID osób z 5 letnim doświadczeniem i studiami. Sam pytam o SOLID bo:
- dobre praktyki/jakość kodu są na liście rzeczy, które muszę ocenić
- wbrew pozorom wiele osób sobie nie radzi z tymi tematami i jedyne co umie powiedzieć to sucha regułka.
Dla przykłądu u mnie pytanie o SOLID wygląda np.
- co to jest OCP
- podaj jakiś przykład w jaki zastosowałeś ostatnio OCP w praktyce (nie interesują mnie przykłady na poziomie tutoriali Dog/Animal)
- opisz jakieś mechanizmy z frameworka w którym pracujesz, a które wykorzystują OCP
Tu znowu podając ten przykład spotkałem się z krytyką, że na przykład wymagam znajomości kodu frameworka... Dla mnie zupełnie bez sensu stwierdzenie. Raz, że uważam, że trzeba znać narzędzie, w którym się pracuje a dwa, że przecież w ciemno można powiedzieć (bo praktycznie każdy framework to oferuje), że np. framework posiada eventy, które można subskrybować, posiada jakąś formę middleware, posiada konfigurację itp. Często widzę, że kandydat ma na początku problem ze wskazaniem to naprowadzam go np. podając jeden element.
Inny przykład pytania to scenki sytuacyjne, które zaczynam od prostego pytania i potem drążę. Np. wybobraź sobie, że jesteś na spotkaniu technicznym, gdzie pracujecie nad problemem z API. W pewnym momencie kolega z zespołu proponuję aby w zapytaniu typu GET dane przesłać przez body.
- pytanie 1 - czy w zapytaniu GET można przesyłać dane w body
- pytanie 2 - co byś odpowiedział na taką propozycję kolegi - uważasz, że to sensowne rozwiązanie?
- pytanie 3 - jakie problemy mogą wystąpić jeśli skorzystamy z tego rozwiązania
Ogólnie pytania staram się osadzać w jakimś kontekście, tak aby trzeba połączyć wiedzę teoretyczna z jakimiś konrketymi sytuacjami. Równie mocno patrzę na odpowiedzi jak i na proces dochodzenia do nich przez kandydata/sposób myślenia.
podsumowanie
Tutaj daję przestrzeń na zadanie pytań + daję feedback z rozmowy i o nim chwilę dyskutujemy.
Chętnie dowiem się od osób prowadzących rekrutacje jakie są ich patenty, a od osób rekrutowanych jak wg nich powinna wyglądać dobra rekrutacja. Zwróćcie proszę tylko uwagę, że wiele rzeczy, może się wydawać bez sensu (np. te proste pytania), ale maja one uzasadnienie np. w procedurze rekrutacyjnej czy doświadczeniu rekrutujacego na większej próbie przeprowadzonych rozmów.