Sytuacja kobiet w IT w 2024 roku
22.03.20248 min
Hugo Rocha

Hugo RochaEngineering LeadFarfetch

Moje rady dla kandydatów po przeprowadzeniu 100+ rozmów technicznych w IT

Poznaj rady doświadczonego programisty, które pomogą Ci w pomyślnym przejściu rozmowy technicznej w IT.

Moje rady dla kandydatów po przeprowadzeniu 100+ rozmów technicznych w IT

Rozmowa kwalifikacyjna - to ta niezręczna i stresująca rzecz, która oscyluje między 12 pracami Heraklesa a sztuczkami zwierzęcia w cyrku. Nie cierpimy ich, ale w naszym profesjonalnym życiu nie da się ich uniknąć. Podczas mojej przygody z rozmowami kwalifikacyjnymi prędko zorientowałem się, że ocenianie umiejętności inżyniera oprogramowania w 2, czy 3 godziny jest tak samo skuteczne, jak średniowieczna metoda zakładająca, że jeśli ktoś zacznie krwawić, przy ofierze, to znaczy, że jest jej mordercą. 

Zawsze zastanawiałem się jednak, jak to jest siedzieć po tej drugiej stronie i jak ustalić, czy dany programista będzie pasował do jakiegoś konkretnego stanowiska. W ostatnich latach przeprowadziłem ponad 100 rozmów technicznych. Pomimo że każda firma ma raczej swój własny, unikalny proces, to przedstawię tutaj kilka powszechnych pułapek, w które każdy wpada. 

Poniżej znajdziecie moje rady na temat tego, jak ich unikać.

Dobry inżynier oprogramowania

“To, co sprawiło, że odniosłeś sukces, może również spowodować, że przegrasz” - Colin R. Davis


Nie ma żadnej unikalnej definicji dobrego inżyniera oprogramowania. Wszystko zależy od wymagań dla danej pozycji oraz różnorodności i dojrzałości firmy. Nowy startup potrzebowałby pewnie krótkiego czasu, aby wejść na rynek, a bardziej dojrzała firma, która ma wielu klientów, musi się pewnie mierzyć z problemami ze skalowaniem i architekturą. 

Tworzenie danego produktu, rozumiejąc, co jest lepsze dla jakiejś firmy, to co innego, niż rozwiązywanie skomplikowanych problemów technicznych. Inżynier perfekcjonista, który zwraca uwagę na szczegóły, to co innego, niż taki, który szybko iteruje. Musisz zrozumieć to, czego dana firma akurat potrzebuje i wpasować się w to swoim zachowaniem i dyskursem. 

Nie wysyłaj takich samych CV. Zamiast tego wysyłaj dopasowane do firmy, do której aplikujesz. Jeśli musisz coś zaprezentować (tak czy siak to robisz), to zrób to w taki sposób, aby pokazać, że będziesz dla danej firmy kimś naprawdę cennym. Postaraj się zrozumieć, po co danej firmie stanowisko, na które aplikujesz - zadaj sobie pytanie, czy Cię to motywuje - jeśli tak, działaj w zgodzie ze swoją motywacją.

Zrozum, co oznacza, być dobrym dla danej firmy - pokaż, jak Twoja wiedza, doświadczenie i podejście do tego pasują.

Odrób pracę domową

“Będąc nieprzygotowanym, przygotowujesz się na porażkę” - Benjamin Franklin


Pójście na rozmowę kwalifikacyjną bez żadnej wiedzy o firmie, to jak pójście na randkę i gadanie tylko o sobie - nie oznacza to, że drugiej randki nie będzie, ale nie pozostawia to zbyt dobrego wrażenia. Postaraj się trochę i dowiedz się czegoś o danej firmie - zwróć uwagę na ich cele, misję, strategię i rezultaty. Jeśli ktoś by tego nie wiedział, to raczej bym go nie oblał, ale takie coś fajnie pokazuje motywację kandydatów.

Jest to również standardowe kryterium oceny dla HR. Poza celami biznesowymi zapoznaj się również z blogiem technicznym danej firmy - jeśli takowy posiadają. Dowiedz się również czegoś o ich stosie technologicznym. Kandydaci rzadko pokazują zainteresowanie daną firmą - jeśli jest na odwrót, to jest to wspaniały sposób na wyróżnienie się. 

Bądź krytyczny

“Cechą wykształconego umysłu jest umiejętność ustosunkowania się do myśli bez akceptowania jej.” - Arystoteles


Spotkałem się z niesamowitymi ekspertami technicznymi, a każdy z nich był na swój sposób wyjątkowy. Wszyscy mieli jednak jedną cechę wspólną - każdy z nich postępował wbrew statutowi quo i ulepszał technologię oraz procesy. 

Tak wielu kandydatów zapytanych o to, czy mają jakieś pytania, odpowiada przecząco. Uważam, że kandydaci sporo wtedy tracą - wykorzystaj ten moment na zadanie pytań odnośnie decyzji technicznym w firmie oraz wyzwań organizacji. Przedyskutuj również, jak wygląda kompromis z korzystania z każdej z technologii.

Przykłady:

  • Czy rozważają już przejście do HTTP/3?
  • Czy przechodzą do architektury mikroserwisów opartej na zdarzeniach? Jakiego używają message brokera? Dlaczego nie użyć Kafki zamiast RabbitMQ?
  • Z jakiej technologii bazy danych korzysta dana firma? Jakie były przypadki użycia? Czy ElasticSearch byłoby dobrą alternatywą dla SQL’a w tym konkretnym przypadku użycia?


I tak dalej, i tak dalej. Kwestionowanie takich rzeczy związanych z technologią pokazuje, że je znasz i że wiesz, kiedy należy ich używać oraz że umiesz myśleć krytycznie i zależy Ci na ulepszaniu danej aplikacji. 

Wyzwania techniczne

"Nie ma takiej liczby, która określa ilość eksperymentów, mogących dowieść, że mam rację. Jeden eksperyment może jednak dowieść, że się mylę." - Albert Einstein


Przeraża mnie niewdzięczność i niesprawiedliwość obecnych rozmów technicznych. Na większości rozmów wymaga się rozwiązania jakiegoś problemu algorytmicznego, który odnosi się do podstaw informatyki - np. przeszukiwanie grafu, czy sortowanie jakiegoś algorytmu. 

Na rozmowie kandydat musi zaimplementować przechodzenie po drzewie przy minimalnym zużyciu zasobów, a kiedy dostanie pracę, pierwszą rzeczą, jaką zrobi, będzie debugowanie dziesięcioletniego monolitu. To się nadaje na niezłą anegdotę.

Zarówno jako kandydat, jak i osoba przeprowadzająca rozmowę kwalifikacyjną, uważam tę pretensjonalną próbę gloryfikowania złożoności naszej pracy za zniechęcającą. Tego typu wyzwania najprawdopodobniej zniechęcą senior developerów, którzy nie są na świeżo z takimi koncepcjami, nawet jeśli mają ogromne doświadczenie w tej roli.

Zgadzam się, tego typu ćwiczenia nie są całkowicie bezużyteczne; zdolność do szybkiego rozwiązywania małych problemów wiąże się ze zdolnością do rozwiązywania tych złożonych. Te dwie rzeczy zasadniczo się jednak różnią.

Przebieg rozmowy kwalifikacyjnej powinien najlepiej odzwierciedlać rzeczywistość codziennej pracy. Niektóre procesy obejmują znajdowanie i łatanie bugów w prawdziwej aplikacji, programowanie w parach lub wdrażanie testów automatycznych, które uważam za znacznie bardziej odpowiednie niż jakiś ezoteryczny problem algorytmiczny.

Upewnij się wtedy, że dobrze znasz język programowania danej firmy i nie bój się zadawać pytań, aby zrozumieć pełny obraz Twojego wyzwania. Jednak w przypadku większości procesów będziesz miał/miała do czynienia z pewnym problemem algorytmicznym lub strukturą danych, którego nie da się obejść, chyba że masz solidną wiedzę na temat podstaw informatyki.

Takie zasoby jak książka pt. Cracking the Coding Interview, Leetcode lub Pramp mogą być dobrymi referencjami.

Tak czy siak, pamiętaj, aby wyjaśnić swoje rozumowanie.

Zwykle problemy narastają jeden na drugim i nie ma znaczenia, czy polegniesz z jedną rzeczą, o ile jesteś w stanie pokonać resztę problemu. Prowadzący rozmowę pomoże Ci, jeśli gdzieś utkniesz. Ważne jest, aby kandydat wychodził z mniej sobie znanej rzeczy i radził sobie dobrze z resztą.

Ponadto, doświadczony rekruter może przejść od zadawania pytań do nauczania, gdy masz jakieś problemy - nie interpretuj tej zmiany jako porażki; zmiana kontekstu pomaga odblokować większość ludzi. Rekruter jest po to, aby Ci pomóc, a także cię ocenić, a nie osądzać. Postrzegaj go jako dobrego kolegę, który doradza Ci w rozwiązaniu jakiegoś problemu. Pamiętaj, aby omówić różne rozwiązania i kompromisy - pokaże to, jak dobrze znasz dany temat.

Nie demotywuj się

"Sukces polega na tym, że wstajesz jeszcze po ostatnim upadku." - Oliver Goldsmith


Miałem kiedyś kandydata, który był mocno rozdygotany i niepewny podczas rozmowy kwalifikacyjnej. Pomimo tego, poradził sobie całkiem nieźle i dostał pracę. W samej pracy okazał się jednak osobą bardzo pewną siebie - prowadził nawet dyskusje i doradzał zespołowi przy różnych problemach technicznych. 

Później zapytałem, dlaczego był taki niepewny w czasie rozmowy. Powiedział, że przeszedł przez bardzo wiele złych rozmów kwalifikacyjnych - w tamtym czasie nie radził sobie za dobrze z odrzuceniem. Odrzucenie to część całego procesu - nie możesz pozwolić, aby Cię to zdołowało. 

Niestety nie da się ocenić każdej umiejętności, którą chcemy u kandydata sprawdzić, w kilka godzin. Na każdej rozmowie sprawdzamy najlepiej, jak potrafimy, tylko te, które są istotne dla danej firmy - mogą to być akurat te, w których jesteś dobry, albo nie. 

Porażka rekrutacyjna to coś złego dla całej firmy, a zwłaszcza dla zespołu, do którego dołączają i dla ich całego morale. Tacy ludzie są z resztą kosztowni. 

Dodajmy do tego fakt, że wiele firm nie ma swojego standardu, jeśli chodzi o procesy rekrutacyjne (zawsze porównujemy kandydatów, dlatego każdy rekruter powinien poruszać ten sam temat. Powinien również istnieć ten sam proces dla każdego rekrutera) - zostajemy wtedy z dużą liczbą fałszywych ujemnych.  

To, że źle Ci pójdzie na jakiejś rozmowie, nie oznacza, że jesteś gorszy - po prostu Twoje umiejętności nie bardzo pasowały do procesu, który akurat jest w firmie. 

Takie myślenie zawsze wydawało mi się bzdurą. Całe życie starałem się walczyć. 

Był jednak taki moment w moim życiu, kiedy przegrałem zbyt wiele walk. Wojownik, który ciągle przegrywa, to zwykły worek treningowy. Czasem trzeba znaleźć w sobie siłę, odbić się od dna i wydostać na powierzchnię. Walcz i nie poddawaj się.

Tak naprawdę liczy się pasja

“Twoje życie będzie w dużej mierze wypełnione pracą. Jedynym sposobem na prawdziwą satysfakcję jest wiara w to, że wykonujesz ją dobrze. A jedynym sposobem na to jest pokochanie tego, co robisz. Jeśli jeszcze tego nie znalazłeś, to szukaj. Nie zadowalaj się byle czym. Serce, jak zawsze, da Ci znać, czy to już to.” - Steve Jobs


Gdy przechodzimy przez życie, nie możemy się doczekać momentów, w których czas się zakrzywia, a rzeczywistość zanika - to właśnie w tych momentach podejmujemy jakieś wyzwanie lub wykonujemy jakieś zadanie.  

W takim momentach czas leci nieubłaganie szybko. 

Tak właśnie programowanie działa na mnie i na wielu innych. To właśnie to poczucie pasji zagwarantuje nam sukces. Widziałem kandydatów, którzy świetnie sobie radzili podczas rozmowy tylko po to, aby być średnimi pracownikami. Nie zrozumcie mnie źle - byli utalentowani i mieli wiedzę, ale ich wyniki były takie sobie. 

Czasami jesteś dobry w rzeczach, które Cię nie obchodzą - to pasja doprowadzi Cię do sukcesu. Nie jest łatwo to ocenić u inżyniera oprogramowania. Ale gdybym zapytał Cię, jakie masz projekty poboczne lub jaki był najlepszy projekt, nad którym kiedykolwiek pracowałeś, prawdopodobnie byłbyś w stanie rozmawiać o kilku projektach przez całe popołudnie.

I nie ma znaczenia, czy była to platforma z milionami użytkowników, czy poboczny projekt, który ledwo działa. Programista, który ma pasję, z radością i nostalgią opisywałby każdy zastosowany przez siebie wzorzec, każde wyzwanie, które podjął, a nawet każdy hack i porażkę, której doświadczył.

Wtedy każdy rekruter będzie wiedział, że osoba po drugiej stronie stołu jest taka jak on/ona - ktoś z pasją do programowania.

To widać w oczach i w mowie ciała. Albo się tym pasjonujesz, albo nie. Jeśli tak, pamiętaj, aby porozmawiać o projektach, które Cię w jakiś sposób poruszają - może to sprawić, że Twoja rozmowa kwalifikacyjna będzie niesamowita.

Podsumowanie

Zawsze mi się wydawało, że stresującą częścią bycia kandydatem była świadomość, że muszę dostać tę pracę i udowodnić, że jestem wystarczająco dobry. Rola rekrutera też nie jest całkowicie pozbawiona stresu - musi on mieć mocne powody, aby kogoś przyjąć lub oblać, aby decyzję można było na spokojnie przemyśleć - w moim przypadku zawsze tak jest, szczególnie przez moje sumienie.

Większość rekruterów też była kiedyś rekrutowana - istnieje więc szansa, że wykażą się empatią. Mam nadzieję, że powyższe informacje pomogą Ci w zdobyciu pracy, o której marzysz.


Oryginał tekstu w języku angielskim możesz przeczytać tutaj

<p>Loading...</p>