Sposób N7 Mobile na rekrutację techniczną
Planując proces rekrutacyjny na stanowisko programisty, często spotykamy się z pytaniem: co naprawdę jest najważniejsze podczas oceny umiejętności kandydata? Jak w najbardziej efektywny sposób wykorzystać te dwie godziny rozmowy technicznej, aby jak najlepiej zweryfikować dopasowanie do firmy lub projektu?
W N7 uważamy, że rozmowa techniczna może być czymś więcej niż tylko testem wiedzy o szczegółach wybranego frameworka czy najnowszych funkcjach Android SDK. Naszym zdaniem cenniejsze jest spojrzenie na ogólną wiedzę programistyczną i umiejętność rozwiązywania problemów technicznych.
Rozmowy techniczne, które prowadzimy w różnych projektach, wyglądają u nas bardzo podobnie. Istotna jest baza wiedzy technicznej – konkretne narzędzia bywają kwestią wtórną. Dlaczego? Ponieważ programista z solidnymi podstawami i ciekawością działania systemu ma większy potencjał do rozwijania się, szybkiego przyswajania nowych technologii i płynnego przechodzenia między zespołami w przyszłości. W środowisku softwarehouse’owym jest to bardzo istotne.
Dlaczego fundamenty są ważne?
Technologia zmienia się bardzo szybko. Frameworki i narzędzia, które dziś są standardem, za kilka lat mogą zostać zastąpione nowszymi rozwiązaniami. Dlatego umiejętność "uczenia się, jak się uczyć" oraz solidne podstawy programistyczne są kluczowe dla osób, które chcą rozwijać się w branży IT.
Nie oznacza to jednak, że znajomość technologii specyficznej dla projektu jest nieistotna. W wielu sytuacjach i projektach oczekiwania biznesowe mogą wymagać od kandydata dużej biegłości w określonym narzędziu. Kluczowym pytaniem jest - jak odnaleźć ten złoty środek?
Ogólna wiedza – obejmująca podstawy algorytmiki, struktury danych czy wzorce projektowe – pozwala kandydatom myśleć abstrakcyjnie, rozwiązywać różnorodne problemy i lepiej przystosować się do nowych wyzwań technologicznych. Dzięki temu nawet przy pracy z nieznanym wcześniej kodem kandydat (a później pracownik) jest w stanie szybko zrozumieć, jak działa i w jakim kontekście może być użyty. Co więcej, potrafi znaleźć ukryte błędy, nieprawidłowości oraz zarekomendować usprawnienia jednocześnie podając uzasadnienie, co stanowi ogromną wartość dla całego projektu.
Testowanie konkretów czy potencjału?
Wiele rozmów technicznych przebiega w sposób, który przypomina zamknięty test z pulą dostępnych odpowiedzi – HR na początku ma spisane wymagania techniczne i odhacza checkboxy podczas rozmowy. Następnie rekruterzy techniczni przechodzą przez listę standardowych pytań, które mają na celu ocenę wiedzy o konkretnym narzędziu. W przypadku, gdy kandydat nie miał okazji pracować z konkretnym narzędziem czy framerowkiem stosowanym w projekcie, często nie ma możliwości zaprezentowania swoich umiejętności. Rozmowy rekrutacyjne często też bywają stresujące dla kandydatów, przez co nietrudno o pomyłki lub chwilowe zapomnienie odpowiedzi, nawet o rzecz, z którą pracuje się od lat.
Naszym zdaniem takie podejście może prowadzić do przegapienia kandydatów z dużym potencjałem. Przerzucenie się z jednego, podobnego narzędzia, na drugie to często kwestia paru godzin zaznajomienia się z danym programem. Jednak zdajemy sobie sprawę, że nie zawsze jest możliwe odejście od technologicznych szczegółów, szczególnie gdy projekt wymaga eksperta w określonej dziedzinie i/lub konieczne jest bardzo szybkie wdrożenie, z uwagi np. na pilną potrzebę zastąpienia nieobecnego pracownika.
Nasze podejście
Po latach pracy w technologiach mobilnych wypracowaliśmy inne podejście. Podczas rozmowy, poza standardową pulą pytań oo technologię, przekonaliśmy się, że warto zadać pytania o zasady działania kluczowych mechanizmów oraz o to, czy kandydat „zagląda pod maskę”, czy może jest jedynie odtwórcą. Na przykład:
- Czy kandydat wie, jak działa garbage collector w JVM?
- Czy rozumie, jak działa system zarządzania zasobami na Androidzie?
- Czy potrafi wyjaśnić, dlaczego architektura MVVM lepiej sprawdza się w niektórych projektach niż MVP?
Takie pytania sięgają głębiej i pozwalają ocenić, czy kandydat rozumie zasady działania oprogramowania, a nie tylko zna ich powierzchowną implementację.
Obszary, które warto poruszyć
Podczas rozmowy rekrutacyjnej dobrze jest zweryfikować, jak kandydat radzi sobie z uniwersalnymi tematami programistycznymi. Przykłady takich obszarów to:
- Struktury danych: Czy kandydat rozumie, jak działają listy, stosy, kolejki, drzewa i zbiory?
- Algorytmy i złożoność obliczeniowa: Czy potrafi wskazać najbardziej efektywne rozwiązanie problemu?
- Zasady programowania obiektowego i wzorce projektowe: Czy rozumie zasady SOLID, DRY, czy wzorce, takie jak Singleton, Observer czy Factory?
Programista z wiedzą ogólną i pasją do technologii ma szansę być nieocenionym wsparciem w zespole i wnosić wartość do każdego projektu, nad którym pracuje. Warto, aby rozmowa techniczna była czymś więcej niż testem wiedzy – pozwalała ocenić zarówno aktualne umiejętności, jak i potencjał kandydata.
Każda firma ma swoje unikalne podejście do rekrutacji. W N7 Mobile wierzymy, że odwołanie się do podstaw programowania, przynajmniej w jednym z etapów oceny technicznej, przynosi bardzo dobre rezultaty. Dzięki temu udaje nam się zatrudniać fantastycznych kandydatów, którzy żadnego wyzwania się nie boją.