W poszukiwaniu nielicznych elit — znajdowanie i zatrudnianie najlepszych programistów w branży
Opublikowany: 2022-03-11Wyzwanie
Zatrudnianie talentów programistycznych – prawdziwych talentów – to wieloaspektowa umiejętność, która leży na skrzyżowaniu sieci społecznościowych, biegłości technicznej, zarządzania procesami i intuicji. Każdy, kto kiedykolwiek był odpowiedzialny za rekrutację, doskonale rozumie zakres i głębokość wyzwania rekrutacyjnego.
Szczególnym wyzwaniem jest fakt, że cechy charakterystyczne wyjątkowych kandydatów w zakresie inżynierii oprogramowania są niezwykle trudne do oceny. Jak zbadać zdolność kandydata do innowacji i kreatywnego myślenia? Jak ustalić, czy jest graczem zespołowym? Jak diagnozujesz jej zdolność do przyjmowania konstruktywnych informacji zwrotnych? Jak badasz czyjeś włókno moralne?
Chociaż ocena tych „miękkich” kryteriów nie jest łatwym zadaniem, jest to niezbędne w dążeniu do zatrudniania najlepszych. Jednak zbyt często próby oceny tych kluczowych, ale nieuchwytnych atrybutów składają się z pytań lub wyzwań, które są wystarczająco przejrzyste, aby „prawidłowe” odpowiedzi były oczywiste dla większości kandydatów. Tak więc, prosząc ich, nie osiąga się niczego istotnego.
Częstą pułapką wynikającą z tego jest zamiast tego zbytnie skupianie się na drobiazgach technicznych, zamiast oceniania zdolności kandydata do rozwiązywania problemów, kreatywnego myślenia i zgodnej pracy z resztą zespołu.
Trzeba przyznać, że skuteczne rozmowy kwalifikacyjne i zatrudnianie zaawansowanych programistów jest w równym stopniu sztuką, co nauką. Niemniej jednak istnieją podejścia i metodologie do oceny bardziej subtelnych wymiarów umiejętności i zdolności inżyniera oprogramowania.
Stosowane łącznie, te techniki rekrutacyjne zapewniają wysoce skuteczny proces przesiewowy z udokumentowaną historią sukcesu w zatrudnianiu etatowych lub niezależnych programistów. Ten proces jest tym, o czym jest ten post.
Pierwsze kroki: wypełnienie rurociągu najlepszymi
Proces znajdowania i zatrudniania nielicznych elit zaczyna się na długo przed samym wywiadem. W rzeczywistości systematyczne podejście do właściwej identyfikacji potencjalnie wykwalifikowanych kandydatów może znacznie usprawnić i zwiększyć wydajność całego procesu rekrutacji.
Bez wątpienia najlepszym źródłem wykwalifikowanych kandydatów jest nawiązywanie kontaktów osobistych, ponieważ ludzie o wysokiej jakości mają tendencję do kojarzenia się z ludźmi wysokiej jakości. Osobiste polecenia dominują jako najbardziej produktywne źródło udanych nowych pracowników (źródło).
Inne cenne źródła najwyższej klasy talentów technicznych obejmują:
- Blogi i wpisy techniczne online. Blogi deweloperskie mogą być świetnym źródłem silnych kandydatów. Stanowiska techniczne często zapewniają cenny wgląd w wiedzę techniczną programisty, podejście do rozwiązywania problemów i umiejętności pisania, z których wszystkie są ważnymi kryteriami identyfikacji najlepszych kandydatów.
- Współtwórcy otwartego kodu źródłowego. Przeglądanie projektów open source w witrynach takich jak GitHub i SourceForge może dostarczyć wysoko wykwalifikowanych kandydatów. Dodatkową zaletą tego podejścia jest to, że pozwala zobaczyć i ocenić próbki kodu kandydata przed podjęciem decyzji o nawiązaniu kontaktu.
- Konferencje. Prelegenci konferencji i współuczestnicy odpowiednich konferencji technicznych często stanowią cenne źródło informacji dla wykwalifikowanych kandydatów. Jeśli nie możesz wziąć udziału, przejrzyj program online i rozważ skontaktowanie się z prezenterami. Może się zdarzyć, że skontaktujesz się z nimi „we właściwym czasie” lub mogą skierować Cię do kogoś innego, kto ma wysokie kwalifikacje.
Piękno tych zasobów polega na tym, że dostarczają kandydatów inżynierskich, których zweryfikowałeś w taki czy inny sposób, jeszcze przed rozmową kwalifikacyjną. Albo ktoś z Twojej firmy, albo ktoś, kogo znasz, zna ich i bardzo ich poleca. Lub sprawdziłeś ich otwarty kod źródłowy i jesteś pod wrażeniem. Albo ich posty na blogu sugerują dojrzały poziom wiedzy technicznej i zrozumienia (a najlepiej nawet poczucie humoru :-) ). Kluczem jest tutaj to, że w momencie nawiązania kontaktu kandydat jest już czymś znacznie więcej niż „tylko kolejnym życiorysem”.
Ponadto rozważ użycie szablonów opisów stanowisk pracy (takich jak te do SEO, tworzenia stron internetowych front-end i tworzenia stron internetowych zaplecza), które określają wysokie oczekiwania względem kandydatów, których potrzebujesz.
Ocena umiejętności technicznych programistów
Skuteczne określenie biegłości technicznej wykracza daleko poza niuanse konkretnego języka programowania lub technologii. Chociaż te szczegóły techniczne z pewnością nie powinny być ignorowane, zazwyczaj nie są one najważniejszym elementem procesu oceny.
To podstawowa siła techniczna i zrozumienie kandydata, kreatywne myślenie i rozwiązywanie problemów, które mają kluczowe znaczenie dla oceny.
Najlepsi programiści nie tracą czasu na zapamiętywanie tego, co można łatwo znaleźć w specyfikacji języka lub dokumencie API. Co więcej, nauka nowego języka, technologii lub wzorca projektowego jest stosunkowo trywialnym ćwiczeniem dla silnego programisty (i jest w rzeczywistości podstawową umiejętnością, biorąc pod uwagę przyspieszone tempo wprowadzania nowych technologii i zdobywania udziału w rynku). Dlatego kluczowe znaczenie dla oceny mają fundamentalna siła techniczna i zrozumienie kandydata, kreatywne myślenie i rozwiązywanie problemów.
Sprawdzoną metodą osiągnięcia tego jest postawienie wyzwania programistycznego bez ograniczeń językowych . Przedstaw kandydatowi problem i poproś go o zakodowanie rozwiązania w wybranym przez siebie języku. Jedyne wymagania powinny polegać na tym, aby rozwiązanie było dokładne i poprawne, w tym uwzględniało wszelkie warunki brzegowe lub potencjalne błędy. Pamiętaj, że celem jest tutaj ocena (a) umiejętności kandydata do rozwiązywania problemów, (b) znajomości informatyki oraz (c) stylu kodowania. Nie jesteś na tym etapie oceniania umiejętności w konkretnym języku programowania. (Dodatkową zaletą tego podejścia, nawiasem mówiąc, jest to, że unika się wymagania od osoby przeprowadzającej rozmowę kwalifikacyjną, aby była ekspertem w zakresie języka, w którym koduje kandydat.)
Istnieje wiele zasobów internetowych, z których możesz wybrać takie wyzwania programistyczne, które chcesz włączyć do procesu rozmowy kwalifikacyjnej. Te, które skupiają się na algorytmach (zamiast znajomości konkretnego języka programowania) ułatwiają ocenę podstaw informatyki i umiejętności rozwiązywania problemów kandydata. Niektóre godne uwagi przykłady to hakerrank.com, projecteuler.net i beatmycode.com. Pamiętaj jednak, że nie musisz korzystać z tych witryn do administrowania testami; możesz po prostu wykorzystać je jako zasoby, z których wybierasz wyzwania, a następnie poprosić kandydata o kodowanie rozwiązania podczas osobistej rozmowy kwalifikacyjnej (na białej tablicy itp.).
To powiedziawszy, testy online mogą być cennym dodatkowym elementem procesu rozmowy kwalifikacyjnej. Jednak podczas korzystania z usług testowania online ważne jest, aby uniknąć ryzyka zbytniego koncentrowania się na wynikach kandydata generowanych przez witrynę, a nie na specyfice jego rozwiązań. Po pierwsze, możesz nie zgadzać się z metrykami oceny stosowanymi przez usługę testową. Co więcej, mogą istnieć aspekty rozwiązania, które uważasz za szczególnie sprytne lub eleganckie, na które zautomatyzowany proces oceny może być całkowicie nieświadomy.
Istnieje również możliwość wystąpienia „fałszywych wyników pozytywnych” lub „fałszywych wyników negatywnych” z ocenami dostarczanymi przez usługi testowania online. Z jednej strony wyniki fałszywie pozytywne mogą skutkować stratą czasu i zasobów na rozmowy kwalifikacyjne z niewykwalifikowanymi kandydatami, podczas gdy wyniki fałszywie negatywne mogą zdyskwalifikować kandydatów, którzy byli wysoce godni rozważenia. Na dłuższą metę ta ostatnia ma poważniejsze konsekwencje i dlatego należy uważnie monitorować.
Ogólnie rzecz biorąc, testy przeprowadzane osobiście są z natury bardziej wiarygodne niż te przeprowadzane online, ponieważ zmniejszają możliwość oszustwa. Co więcej, testowanie osobiste daje możliwość obserwowania, jak kandydat na inżyniera oprogramowania działa pod presją. Niemniej jednak, korzystanie z usług testowania online może być skutecznym elementem bardziej kompleksowego rodzaju procesu przesiewowego zalecanego w niniejszym dokumencie, który obejmuje inne techniki pomagające wyeliminować nieuczciwych lub niewykwalifikowanych kandydatów.
Testy programistyczne online mogą również służyć jako cenny filtr wstępny, eliminujący zdumiewająco wysoki odsetek kandydatów, których umiejętności techniczne są znacznie poniżej normy. Co ciekawe, wielu takich kandydatów rezygnuje z procesu, nawet nie próbując przystąpić do testów, z powodu braku pewności siebie. To powiedziawszy, pewność siebie nie zawsze jest najlepszym barometrem nastawienia, o czym świadczy efekt Dunninga-Krugera.
Inną niezwykle cenną techniką oceny biegłości technicznej jest poproszenie kandydata o dostarczenie listy projektów open source, które są jego autorami lub przynajmniej przyczyniły się do tego, w witrynach takich jak GitHub i SourceForge (jeśli był tylko współtwórcą, poproś go o wskazać Ci, które fragmenty kodu są ich autorami). Następnie możesz przyjść na rozmowę kwalifikacyjną po zapoznaniu się z ich kodem, przygotowanym, aby zapytać ich o konkretne decyzje projektowe, style kodowania, zastosowane wzorce i tak dalej. Taka dyskusja może być znacznie bardziej wartościowa niż zwykłe wypytanie kandydata o szczegóły techniczne języka.

Mówiąc o języku…
Członkowie nielicznej elity są nie tylko doświadczeni technologicznie, ale są wytrawnymi profesjonalistami od tworzenia oprogramowania, którzy komunikują się jasno, skutecznie i zwięźle, zarówno werbalnie, jak i pisemnie.
Umiejętności komunikacji werbalnej są łatwe do oceny podczas rozmowy kwalifikacyjnej, zarówno osobiście, jak i przez telefon. Podczas gdy umiejętności werbalne są wprawdzie mniej krytyczne w pewnych technicznych rolach „zaplecza”, które nie wymagają kontaktu z użytkownikiem, nadal są ważne dla maksymalizacji efektywnych interakcji w zespole i wymiany pomysłów.
Umiejętności komunikacji pisemnej można najlepiej ocenić, prosząc kandydata o dostarczenie próbek pisemnych. Zdecydowanie preferowane są próbki pisania technicznego, ponieważ pokazują one nie tylko umiejętności pisania, ale także techniczną jasność. Poproszenie o te próbki przed wywiadem może być szczególnie przydatne. Po pierwsze, daje to możliwość przejrzenia i przeanalizowania ich pisarstwa z wyprzedzeniem, dzięki czemu możesz przyjść na rozmowę z nimi przygotowany, aby omówić i skrytykować ich pisanie. Ponadto niektórzy techniczni kandydaci będą „zniechęceni” prośbą o napisanie próbek, co samo w sobie może służyć jako wartościowy filtr.
Dylemat moralny
Jest taki stary dowcip o ojcu, który chce nauczyć syna etyki. Ojciec mówi synowi, że on i jego partner mają biznes pralni chemicznej. Pewnego dnia, mówi ojciec, klientka przychodzi do naszego sklepu, żeby odebrać jej pranie chemiczne. Gdy klient odwraca się do wyjścia, zdaję sobie sprawę, że przepłaciła 10 dolarów. OK, więc zaczyna się etyka… mam powiedzieć partnerowi, czy nie?!
Natomiast prawdziwe dylematy etyczne – dylematy moralne – często bywają niejasne i złożone iz całą pewnością prezentują się w biznesie. Najsilniejszy programista może siać niewyobrażalne spustoszenie w projekcie, jeśli brakuje mu odpowiednio skalibrowanego kompasu moralnego. Ten wymiar kandydata ma zatem kluczowe znaczenie dla oceny.
Bardzo skuteczną techniką osiągnięcia tego celu jest postawienie kandydata przed hipotetycznym dylematem moralnym i pytanie, co by zrobił w tej sytuacji. Aby było to skuteczne, konieczne jest, aby dylemat nie miał oczywistej odpowiedzi. W idealnym przypadku każda możliwa odpowiedź powinna być niedoskonała i nieco problematyczna. Odpowiedź, jakiej kandydat udziela na takie pytanie, może dostarczyć ogromnego wglądu w to, jak myślą, jakie są ich standardy etyczne i priorytety.
Oto przykład:
Firma, w której pracujesz, została zatrudniona do pracy nad projektem przez inną firmę. Projekt wymaga skorzystania z konkretnego podwykonawcy. Pracowałeś wcześniej dla tego podwykonawcy i dlatego wiesz z pierwszej ręki, że często nadrabiają godziny i przepłacają swoim klientom za ich czas. Jeśli jednak zrobią to w tym projekcie, nie zaszkodzi to Twojej firmie, ponieważ te koszty zostaną przeniesione na klienta Twojej firmy. Wspomniałeś o tym swojemu szefowi, a on poradził ci, abyś nic nie mówił klientowi, zwłaszcza że część projektu podwykonawcy stanowi tylko niewielką część całkowitego budżetu. Masz jednak bardzo bliskiego przyjaciela, który pracuje dla klienta. Pewnego dnia podczas lunchu twój przyjaciel pyta cię, co wiesz o tym podwykonawcy, ponieważ wie, że kiedyś tam pracowałeś. Jak odpowiadasz i co mu mówisz?
Piękno polega na tym, że nie ma wyraźnie „właściwej” odpowiedzi, a sytuacja odzwierciedla moralną złożoność prawdziwego życia i świata biznesu. Prawidłowo poproszona odpowiedź na taki „dylemat moralny” może być jedną z najbardziej wymownych i wartościowych części procesu rekrutacji przy zatrudnianiu programistów.
Poznawanie Ciebie (Kim naprawdę jesteś?)
Jedną z nieodłącznych wad procesu rozmowy kwalifikacyjnej jest to, że tak naprawdę nie ma sposobu, aby dowiedzieć się, jak to będzie pracować z osobą, dopóki nie zaczniesz z nią pracować. Jednak uzyskanie realistycznego wyczucia osobowości i temperamentu kandydata jest kluczowe dla pomyślnego zatrudnienia.
Elita techniczna jest nie tylko lepsza technicznie, ale także wysoce profesjonalna. Poszukiwanie ich nie ogranicza się zatem do stricte technicznej oceny.
Mając to na uwadze, oto kilka technik rozmowy kwalifikacyjnej, które mogą być korzystne dla oceny osobowości i profesjonalizmu kandydata…
Po pierwsze, rozważ celowe rozpoczęcie procesu rozmowy kwalifikacyjnej od wstępnego prześwietlenia przez członka personelu nietechnicznego (na przykład asystenta administracyjnego). Następnie możesz zapytać tego członka personelu, jak kandydat potraktował ich, gdy zorientowali się, że nie są techniczni. Czy byli poniżający, niecierpliwi i protekcjonalni, czy też mili, cierpliwi i pełni szacunku? To, co pracownik ci przekazuje, może być bardzo wymowne. Chcesz wiedzieć, czy kandydat traktuje innych z szacunkiem, niezależnie od tego, kim są.
Podczas rozmowy kwalifikacyjnej szukaj możliwości dostarczenia kandydatowi konstruktywnej informacji zwrotnej. Obserwuj uważnie reakcję, jaką to wywołuje. Czy informacje zwrotne są doceniane, czy kandydat wydaje się w ogóle przybierać postawę defensywną?
Angażuj się w nietechniczną „pogawędkę” przez pierwsze 5 lub 10 minut rozmowy, aby uzyskać wgląd w osobowość kandydata. Kandydat może pomyśleć, że jest to po prostu wstęp do właściwej rozmowy kwalifikacyjnej i dlatego będzie bardziej skłonny „rozpuścić włosy”. Możesz w ten sposób dostrzec zaskakującą ilość ich osobowości w tym czasie. I oczywiście, jeśli wykazują poczucie humoru, to zawsze dobry znak. :-)
Oprócz tych ogólnych technik zatrudniania inżynierów, oto kilka przykładowych pytań, które pomogą ocenić osobowość, pewność siebie, uczciwość i profesjonalizm kandydata :
- Kiedy spojrzysz wstecz na swoją karierę, jaka konkretna trudna sytuacja, z którą się spotkałeś, utkwiła ci w pamięci? Opisz szczegółowo wyzwanie i sposób, w jaki sobie z nim poradziłeś. Co czujesz, że poradziłeś sobie szczególnie dobrze? Co mógłbyś zrobić inaczej, gdybyś miał okazję zrobić to jeszcze raz?
- Jak myślisz, jaki jest największy błąd, jaki kiedykolwiek popełniłeś w swojej karierze?
- Co najbardziej lubisz w tworzeniu oprogramowania? Co lubisz najmniej?
- Gdybyś mógł namalować dla siebie idealną pozycję, co by to było? Jak by to wyglądało, biorąc pod uwagę Twoją rolę i zakres obowiązków, wielkość i rodzaj firmy, środowisko pracy itd.?
- Jakie są Twoje największe atuty? Co byśmy zyskali zatrudniając Cię?
- Nikt z nas nie jest idealny. Jakie są niektóre aspekty Twojej osobowości, nad którymi pracujesz nad poprawą?
- Gdybym zadzwonił do twojego obecnego szefa i zapytał go o ciebie, co by mi powiedział?
- O co powinniśmy się martwić, zatrudniając Cię?
Łącznie udowodniono, że te pytania i techniki sprzyjają znacznie silniejszemu i głębszemu zrozumieniu tego, kim naprawdę jest kandydat, co jest niezbędne do podjęcia skutecznej decyzji o zatrudnieniu.
Czy uczucie jest wzajemne?
Więc znalazłeś kandydata na A+. Wysoko wykwalifikowani. Pozytywna, optymistyczna osobowość. Doskonałe dopasowanie kulturowe. To wspaniale! Jednak…
Pozostaje jeszcze jedno kluczowe pytanie, na które należy odpowiedzieć: W jakim stopniu kandydat jest szczególnie zainteresowany Twoim dostępnym stanowiskiem i pracą w Twojej firmie? Odpowiedź na to pytanie ma ogromne znaczenie dla pomyślnego zatrudnienia. Jednostronne relacje nie działają lepiej w biznesie niż w jakimkolwiek innym aspekcie naszego życia.
Znowu samo zadawanie pytania wprost ma minimalną wartość, ponieważ w kontekście procesu rozmowy kwalifikacyjnej należy być podejrzliwym wobec szczerości kandydata w odpowiedzi na takie pytanie. Jest to raczej coś, co należy spróbować ustalić za pomocą innych, mniej bezpośrednich środków.
Po pierwsze, sposób, w jaki kandydat podchodzi do Ciebie od samego początku, jest dość wiarygodnym wskaźnikiem zainteresowania. Czy kandydat oferuje przekonujące, przekonujące wyjaśnienie, dlaczego jest szczególnie zainteresowany Twoją firmą i dostępną możliwością? Jeśli tak, oznacza to nie tylko prawdziwe zainteresowanie, ale także poziom dojrzałości zawodowej i wyrafinowania. Taki kandydat najwyraźniej wykonał przynajmniej pewien poziom wcześniejszego badania Twojej firmy i możliwości, zanim się z Tobą skontaktował (zamiast po prostu „wystrzelić swoje CV po mieście”).
Kandydaci, którzy przystępują do procesu zatrudniania programistów po odrobieniu pracy domowej na temat firmy oraz jej produktów lub usług, stanowią przydatny wskaźnik zarówno zainteresowania, jak i wiedzy. Na szczególną uwagę zasługują kandydaci, którzy posunęli się nawet do zaawansowanych badań ankietera (np. przeczytali jego biografię, profil na LinkedIn, wpisy na blogu itp.). Bardziej wyrafinowani kandydaci postara się ujawnić te informacje w trakcie rozmowy kwalifikacyjnej. Dla innych proste pytania otwarte, takie jak „Co wiesz o naszej firmie?” oraz „Co w szczególności Cię interesuje w naszej firmie i na tym stanowisku?” może rzeczywiście wywołać bardzo wymowne odpowiedzi.
Wreszcie kandydat, który jest naprawdę zainteresowany, prawdopodobnie będzie zadawał pytania w trakcie rozmowy kwalifikacyjnej. Niezależnie od tego zawsze dobrze jest zakończyć rozmowę kwalifikacyjną, pytając, czy kandydat ma jakieś pytania. Brak jakichkolwiek pytań może być sygnałem ostrzegawczym, nawet dla kogoś, kto w innym przypadku zostałby uznany za kandydata na piątkę z plusem.
Zakończyć
Opisane tutaj techniki mogą służyć jako cenny podstawowy proces wyszukiwania i zatrudniania najlepszych w branży programistów. Należy jednak pamiętać, że efektywne zatrudnianie nie jest celem, ale podróżą. Należy nieustannie dokonywać ponownej oceny i ulepszać ich proces, ponieważ statyczny proces ma stać się procesem martwym.
Podróż każdej firmy będzie inna, w oparciu o własną kulturę i priorytety. Znajdź ścieżkę odpowiednią dla swojej organizacji i wykonaj ją. Odniesiesz sukcesy i będziesz mieć porażki, ale dopóki będziesz się uczyć od tych ostatnich, możesz mieć pewność, że jesteś na dobrej drodze.