Jakie są zalety i wady dla pracodawcy pytań związanych z kodem podczas rozmowy kwalifikacyjnej? [Zamknięte]


16

Pytanie testowe Joela nr 11 brzmi: „Czy nowi kandydaci piszą kod podczas rozmowy kwalifikacyjnej?”. Jakie są argumenty za i przeciw poproszeniu nowych kandydatów o napisanie kodu podczas rozmowy i podjęcie decyzji w jego sprawie?


Pisać kod fizycznie ołówkiem i ręką, czy pisać jak na maszynie na maszynie?
Chris

Głównym oszustem jest zadawanie głupich lub bezużytecznych pytań i myślenie, że zrobiłeś to dobrze. Na przykład ktoś komentuje prośbę o napisanie listy z linkami.

Odpowiedzi:


13

Nie widzę wad. Rozmowa kwalifikacyjna składa się z wielu części, a kandydat powinien zostać poparty kilkakrotnie.

Co tydzień przeprowadzam wywiad z 10 osobami. Naprawdę, naprawdę, NAPRAWDĘ doceniam fakt, że HR wykonał całą pracę w tle i przedstawił mi mnóstwo notatek. Zanim do mnie dotrą, nadszedł czas, abym zaliczył ich testy.

Testy zależą całkowicie od pozycji. Ogólnie próbuję sondować:

  • Ogólna umiejętność programowania. Czy potrafisz efektywnie korzystać z operatorów? Czy potrafisz wyobrazić sobie system numeryczny, który ma podstawkę inną niż 10?

  • Czy wiesz, jak zrobić to, do czego Cię zatrudniamy?

  • Ocena twojego wkładu we wszystkie wymienione projekty open source

Staram się mówić krótko i dobrze się bawić. Kiedy wchodzę do biura, biorę odpowiedzi, przeglądam je, a następnie przeprowadzam wywiad. Aby zostać zatrudnionym, zazwyczaj musisz przejść trzy rozmowy.

Oceniam także, jak dobrze wtopisz się w zespół, który cię odbierze. Ten zespół liczy na to, że zrobię to skutecznie.

Jedną rzeczą jest odpowiadanie na pytania w formie meta, innym jest tworzenie kodu. Jeśli mam cię zatrudnić, naprawdę muszę zobaczyć, jak tworzysz kod.


Hmmm ... Uważam się za wykwalifikowanego programistę. Podczas moich trzech ostatnich wywiadów, kiedy zapytano mnie o coś takiego jak „co robi konkretna metoda” lub podobną rzecz, postanowiłem to porzucić. Ponieważ nigdy nie szukam pracy, w której chciałbym zrobić coś, co znam bardzo dobrze. To nie jest interesujące. Jak powiedział mój były szef: „Wielokrotnego użytku? Programiści powinni nadawać się do wielokrotnego użytku, programy - może”.
duros

@duros Przykro mi to słyszeć. Dobry ankieter powinien być w stanie sprawić, by proces był zabawny i zdać sobie sprawę, że inni programiści nie znoszą testów.
Tim Post

to nie jest tak, że nie czuję się dobrze podczas testowania. Po prostu zdaję sobie sprawę, jakie możliwości nauki i wypróbowania czegoś nowego miałbym, gdyby mieli zatrudnić mnie jako programistę ... Podczas ostatniego wysłałem ankietera, aby przeczytał javadocs ...: - / Może, ja ' m źle ...
duros

10
Kiedyś poproszono mnie w wywiadzie o napisanie akcesoriów dla połączonej listy w Perlu. W ciągu 8 lat pracy z Perlem nie spotkałem żadnego programu produkcyjnego, który korzystałby z list połączonych. Oczywiście przeglądałem i produkowałem na papierze metody insert () i remove () oraz obiekt oparty na haszowaniu, który, jak sądziłem, wykona zadanie. Pierwszą rzeczą, jaką powiedział ankieter, gdy spojrzał na gazetę, było: „Brakuje kilku średników”
leed25d

1
innym jest tworzenie kodu - tak jest, więc to prawda. Wielokrotnie byłem zaskoczony przez ludzi, którzy opisują wiarygodny algorytm, ale nie mogą nawet zacząć redukować go do kodu. To lub przeszli przez jakiś nie-algorytmiczny krok, którego nie można uniknąć podczas pisania kodu.
poolie

34

Z przeprosinami dla Scotta Whitlocka:

Cons:

  • Żaden

Plusy:

  • Oszczędza dużo czasu i cierpienia na drodze, jeśli nie możesz zatrudnić kogoś, kto nie może programować
  • Wymaga posiadania osoby technicznej w rozmowie kwalifikacyjnej

Czy „Wymóg posiadania osoby technicznej podczas wywiadu” można uznać za oszustwo?
Yeikel,

2
To zależy, czy próbujesz wypełnić rolę, czy tylko krzesło, tak myślę. Ale IMO nie, nie można tego uznać za oszustwo.
Armand

19

Gdybyś miał wynająć żonglera, byłbyś szalony, gdyby nie żonglował dla ciebie. Lub muzyk, którego miałbyś przesłuchać. W przeciwnym razie dostaniesz takie rzeczy, jak niesamowity „master” K-strass jo-jo .

Przechodzenie przez coś na tablicy jest dla programistów odpowiednikiem szybkiego żonglowania demo.


+1 za link. Nadal uważam, że żonglerka nie pamięta takich rzeczy jak podpisy metod itp., Ale po prostu jest w stanie myśleć i rozwiązywać problemy, których nigdy wcześniej nie spotkałeś ...
duros

4
Tyle że żonglerka to umiejętność natychmiastowa z kilkoma wariantami, często wykonywanymi przed publicznością. Programowanie jest trudnym, głębokim zadaniem, rzadko wykonywanym jako takie. Jest również znacznie mniej produktywny na papierze lub tablicy. To powiedziawszy, testy pseudokodu (lub ignorowanie drobnych błędów średnich) mogą być bardzo przydatne.
Bruce Alderson

10

Myślę, że jest to bardzo przydatne i zawsze to robię, ale ponieważ korzyści zostały tak dobrze uwzględnione, omówię tylko (pozorne) negatywy.

Myślę, że testy kodu raczej nie dadzą fałszywych wyników pozytywnych: prawdopodobieństwo, że ktoś, kto nie umie napisać kodu, uda się go sfałszować w wywiadzie, przynajmniej jeśli masz coraz więcej pytań. (Być może najbardziej prawdopodobny scenariusz polega na tym, że oszukują, pytając przyjaciela, czy nie jest to wywiad bezpośredni).

Problemy są raczej po stronie fałszywie negatywnej: czy testy kodu doprowadzą do odrzucenia osoby, która faktycznie jest najlepszym kandydatem?

Trema

Możesz mieć kogoś, kto jest naprawdę dobrym programistą, ale bardzo denerwuje się tym wywiadem, i zasadniczo przeraża go scena. Wykonywanie pod presją jest do pewnego stopnia ważne, ale radzenie sobie ze scenicznym przerażeniem nie jest tak kluczową częścią bycia programistą (w porównaniu do innych zawodów) i niefortunnie byłoby odrzucać kogoś, kto cierpi z tego powodu. Może się to spotęgować: jeśli dana osoba nie będzie w stanie odpowiedzieć na pytanie, o którym wie, że powinna na nie odpowiedzieć, może bardziej się zaciągnąć. Lub, jak w tym pytaniu , czują, że nie mogą jednocześnie rozmawiać i kodować.

łagodzenie: zacznij od kilku pytań na temat ich pochodzenia, celów itp., zanim przejdziesz do pytań technicznych. Być może zacznij od kilku łatwiejszych pytań technicznych, aby nabrać tempa. Nie bądź kutasem podczas wywiadu (kłótnie o średniki itp.).

To hałaśliwy środek

Interesujące pytania kodowe mogą zawierać więcej niż jedną poprawną odpowiedź. Jeśli jedna osoba pisze poprawną odpowiedź, a inna pisze poprawną i bardziej efektywną odpowiedź, ile powinieneś na to włożyć?

W pewnym stopniu jest to problem z niektórymi „zagadkowymi” pytaniami: osoba albo ma wgląd, albo nie, i otrzymujesz prawie binarny wynik. Inteligencja prawdopodobnie wpływa na prawdopodobieństwo uzyskania takiego wglądu, ale próbkowanie tylko kilka razy daje w przybliżeniu miarę.

Niepokoi mnie to w związku z pytaniami dotyczącymi kodu (choć nadal ich używam). Najlepszym sposobem na złagodzenie tego problemu jest jak największa liczba możliwych rozwiązań: osoba może przynajmniej napisać brutalną odpowiedź na brutalną siłę lub odpowiedź na część problemu. Uświadomienie sobie, że to lepsze niż nic, jest dobrym znakiem. Następnie, jeśli odkryją więcej, mogą sprawić, że kod będzie bardziej wydajny lub bardziej elegancki. O ile to możliwe, unikaj zadawania pytań, które otrzymują odpowiedzi binarne.

To nie jest tak naprawdę reprezentatywne

Programowanie nie polega na rozwiązywaniu dziesięciominutowych problemów algorytmicznych jeden po drugim: jest o wiele więcej pracy na temat rozumienia i projektowania większych systemów oraz koncentracji przez dłuższy czas, nie mówiąc już o umiejętnościach interpersonalnych. Pytania kodowe tak naprawdę tego nie testują.

Ale pytania dotyczące kodu nie są jedynymi pytaniami, które należy zadać: możesz spojrzeć na ich pochodzenie, referencje, pracę open source (jeśli w ogóle), aby znaleźć dowody nieustannego wysiłku, kreatywności i umiejętności interpersonalnych.

Umiejętność rozwiązywania małych problemów algorytmicznych i sprowadzania ich do kodu jest koniecznym, ale niewystarczającym warunkiem: jeśli nie możesz rozwiązać małych problemów i nie umiesz pisać nietrywialnych kodów, to całe myślenie wielkoformatowe na świecie nie jest sprawi, że będziesz produktywnym programistą.

Każdy może to rozwiązać

Nie, najwyraźniej nie. Jak zauważa słynny post FizzBuzz , problemy, które możesz pomyśleć, są trywialną pułapką nie tylko dla nowych absolwentów, ale i osób z wieloletnim doświadczeniem w branży. Nie wiem dlaczego. Albo test kodu jest kiepską miarą (co jest możliwe, choć myślę, że to mało prawdopodobne), albo nie wnieśli dużego wkładu w projekty na ich wznowieniu, albo robili dużo, kopiując i wklejając kod algorytmiczny (co jest możliwe.)

Warto przyznać, że naprawdę można wiele zrobić bez pisania kodu algorytmicznego. Ludzie zarabiają dużo pieniędzy na aplikacjach, których wartość leży w grafice lub logice biznesowej, a nie w czymś, co można by nazwać „programowaniem”, i to jest w porządku. Ale jeśli naprawdę potrzebujesz programistów, nie jest to dobre dopasowanie.

Może nie być dobrze skalibrowany

Jeśli pojawi się pytanie, odpowiedź może wydawać się łatwa. Jeśli jednak zostaniesz zadany niespodziewanie porównywalne pytanie lub pytanie, które nie jest skierowane w stronę twoich szczególnych zainteresowań i pochodzenia, może być znacznie trudniejsze.

łagodzenie: Przeprowadź testy nad niektórymi programistami, których już znasz, i zobacz, jak to robią. Być może ktoś z twojego zespołu, o którym wiesz, że jest bardzo mądry, będzie miał problem z jednym z nich i możesz rozważyć jego zmianę. Być może wymyślą lepszą lub inną odpowiedź.

To zbyt podobne do ciekawostek

Myślę, że pytania o kod z pewnością mogą dostać się do ciekawostek, jeśli nalegasz, aby ludzie znali niejasne interfejsy API na pamięć, otrzymali doskonałą składnię lub pamiętali dokładną definicję nietrywialnego algorytmu. Wszystkie są uzasadnione, aby polegać na dokumentach, wyszukiwaniach internetowych lub błędach kompilatora, i mają niewielką korelację z prawdziwą wiedzą specjalistyczną. Nawet nie wiadomo, gdzie API może się znajdować, może być wskazówką, że dana osoba ostatnio go nie używała, ale niekoniecznie jest to problem, o ile nie kłamie.

Odpowiedź na to pytanie jest bardzo prosta: nie zadawaj trywialnych pytań i nie przejmuj się trywialnymi błędami. Przypomnij kandydatowi, jak się nazywa API lub pozwól mu to sprawdzić; naprawić błędy składniowe; nie testuj dla osób zapamiętujących definicje struktury danych.

Jak się porównujesz?

Jeśli masz dwóch kandydatów i obaj dobrze odpowiadają na pytania, jak wybierasz między nimi? Możesz wybrać tego, który skończył najszybciej, ale być może zaczynasz wybierać zające zamiast żółwi. Możesz zrobić kolejną rundę i zadawać o wiele trudniejsze pytania, ale nie jestem tego pewien. Być może po prostu dajesz im oboje A + i próbujesz wybierać między nimi na podstawie innych kryteriów (lub próbujesz znaleźć pieniądze na ich zatrudnienie).


7

Jedną z wad, o których mogę myśleć, jest to, że trudno jest „zakodować na głos” przed innymi ludźmi. Trudno mi nawet pisać z kimś spoglądającym przez ramię i nie jestem sam. Zauważyłem, że kiedy ktoś dzwoni do mnie na stanowisko pracy, aby coś w czymś pomóc, nagle zaczynają pisać literówki, wybierają niewłaściwe uzupełnianie kodu, a nawet popełniają oczywiste błędy - z których żaden by nie popełnił, gdybym tam nie siedział. Do diabła, widziałem, jak ludzie zaczęli używać menu do operacji wycinania i wklejania, tylko dlatego, że byli obserwowani. To nie jest normalne zachowanie, a kodery, o których mówię, są doskonałymi programistami i poza tym całkiem sprytni.

Niedawno miałem wywiad, w którym ankieter zapytał mnie, jak kodować określoną operację, a on powiedział: „Po prostu pokaż mi matematykę”. Cóż, musiałem najpierw pomyśleć o problemie, zanim dojdę do jego matematyki, więc to mnie zawaliło i ziewnęło. To, co początkowo umieściłem na białej tablicy, było krępujące i czułem, że w tym momencie przegrywam. W końcu dostałem moment A-ha i znalazłem odpowiedź (właściwie kiedy w końcu dotarło do mnie to, o co tak naprawdę prosił), ale „bałagan”, który zrobiłem przed przyjazdem, sprawił, że czułem się bardzo nieswojo. Mimo to dostałem pracę, ale gdyby ankieter był mniej cierpliwy, mógłbym nie mieć.

Myślę, że jeśli powierzysz rozmówcom zadanie kodowania, daj im trochę czasu na samodzielne wypracowanie ich na komputerze, być może nawet w IDE, które znają. Pozwól im napisać kod dla ciebie, a następnie o tym porozmawiać. Zapytaj ich, dlaczego zrobili coś w określony sposób i czy inny sposób może nie być lepszy. Dowiesz się więcej z tego rodzaju procesu, niż prosząc ich, aby sikał (mówiąc w przenośni) do sikania do filiżanki tuż przed sobą.


4
W porządku. Celem wywiadu programistycznego nie jest testowanie umiejętności pisania na klawiaturze ani nawet doskonała znajomość interfejsu API. Literówki i czegokolwiek można zignorować, a zamiast tego skupiasz się na procesie myślowym kandydata i znajomości podstaw programowania. Na przykład byłem kiedyś częścią wywiadu, który wykazał całkowitą niezdolność kandydata do myślenia o kilka kroków do przodu (rozwiązaliby jeden mały problem, zdawali sobie sprawę, że stworzył inny problem itp.).
Adam Lear

2
„Trudno jest kodować przed innymi ludźmi”? W porządku. Zatrudniam tylko ludzi, którzy potrafią robić trudne rzeczy. Jednym z nich jest możliwość omawiania kodu (tj. Programu) z (przed) innymi ludźmi.
kevin cline

1
@kevin cline: Tęsknisz za moim celem. Czy dbasz o to, jak ludzie osiągają wyniki, czy tylko chcesz, aby osiągali wyniki zgodnie z twoimi zachciankami? Wiele osób potrafi dobrze kodować w środowisku zespołowym, ale potrzebuje „samotnego czasu”, aby uzyskać maksymalną wydajność. Brzmisz jak facet, który nie zatrudniłby Marka Zuckerberga, ponieważ musiał być „podłączony” do maksymalnej wydajności.
Robusto,

1
@Robusto: Nie zadaję głębokich pytań w wywiadzie. Muszę tylko zobaczyć, jak ktoś rozwiązuje prosty problem za kilka minut. Potrzebuję ludzi, którzy mogą pracować w zespole. Oznacza to zdolność i chęć rozmowy o kodzie. Jasne, że mogę przegapić świetnego programistę, który po prostu nie jest w stanie poradzić sobie z presją wywiadu. W porządku. Ale zły wynajem jest katastrofalny.
kevin cline,

6

Minusy: brak. Za każdym razem, gdy spędzisz konfigurację komputera, zaprojektowanie testu kodu i przejrzenie go, zaoszczędzisz niewyobrażalny ból głowy w przyszłości.

Plusy: „Ufaj, ale weryfikuj” - Ronald Regan. Tak wiele razy widziałem i słyszałem o ludziach, którzy w końcu wypuścili się ze stanowiska, w którym w wywiadzie wydawało się, że dostajesz gwiazdę rocka. Dowód jest w budyniu; Chcę zobaczyć, co mogą zrobić. Przedstawi to, co się stanie, gdy zainwestujesz czas i pieniądze w zatrudnienie kogoś i naklejesz przed nim nowy projekt.


4

Cons:

  • Wymaga posiadania osoby technicznej w rozmowie kwalifikacyjnej

Plusy:

  • Oszczędza dużo czasu i cierpienia na drodze, jeśli nie możesz zatrudnić kogoś, kto nie może programować

25
Jeśli przeprowadzasz wywiady z programistami bez udziału osób technicznych, i tak jesteś skazany.
David Thornley

@David: Zgadzam się, myślę, że plusy tutaj znacznie przewyższają wady, ale to był tylko „con” mogę myśleć.
Scott Whitlock,

4

Kiedy przeprowadziłem wywiad na temat mojej obecnej pracy, osoba rekrutująca dostała listę pytań do napisania kodu. Byłem pod wielkim wrażeniem, ponieważ pytania zostały oczywiście napisane przez kogoś, kto miał głęboką znajomość SQL, więc działa to w obie strony.


2

Ty naprawdę chcesz mieć kod osoba pisać w wywiadzie - nawet lepiej, aby je do programu pary z członkiem w zespole do kwoty X czasu (co można wygodnie sobie pozwolić w czasie / siły roboczej).

Jest to właściwie jeden z niewielu sposobów, w jaki możesz stwierdzić, czy dana osoba może kodować, czy nie.

Nieco wolę programowanie w parze, ponieważ pokaże pracę ich zespołu, daje im prawdziwe IDE do pracy i pozwala im pracować nad „prawdziwym” problemem (inna osoba w parze może poprowadzić ich przez wszelkie specyfiki środowiskowe, z którymi rozmawia rozmówca nigdy nie mogłem rozsądnie wiedzieć).

Zaczęliśmy stosować tę politykę zatrudniania i jesteśmy bardzo zadowoleni z wyników.


+1 za testowanie par: dowodzi zarówno zdolności do pracy z kolegą z drużyny / i / / umiejętności kodowania.
Bruce Alderson

2

Oceniasz ptaka po piórach, a programistę po jego / jej kodzie.

Kiedy zaczynałem od obecnej firmy, dla której pracuję, poprosili mnie o napisanie kodu C, który generuje lub sprawdza bit parzystości jakiegoś wejścia binarnego (w zależności od tego, czy kodujesz, czy dekodujesz). To było pytanie do wywiadu właśnie dlatego, że tego rodzaju problemy są rozwiązywane podczas pracy. Oczywiście nie myślę o sprawdzaniu parzystości, ale raczej o pracy na niskim poziomie.


2

Wszystkie dotychczasowe odpowiedzi (które przeczytałem) nie dotyczyły faktu, że Test Joela NIE jest (tylko) listą najlepszych praktyk dla przedsiębiorców, ale listą kontrolną ułatwiającą ocenę potencjalnego pracodawcy .

Chodzi o to, że ... jeśli dokładnie przetestują swoje kandydatki, prawdopodobnie zatrudnią ludzi, którzy znają się na swoich rzeczach ... to znaczy dla ciebie

  1. mniej bólu głowy, a także
  2. zwiększona szansa na nauczenie się czegoś od współpracowników

zamiast naprawiać błędy po nich ...


1

Powiedziałbym:

Plusy

  • Demonstruje, że kandydat posiada przynajmniej zadowalającą wiedzę na temat programowania, ponieważ CV można sfabrykować / upiększyć
  • Jeśli ankieter omawia kod z kandydatem, w przeciwieństwie do bardziej przypominającego test pisemny, może to być dobry wskaźnik tego, w jaki sposób „łączysz” społecznie i czy kandydat dobrze pasuje do firmy / firmy, a zespół jest dobry pasuje do kandydata

Cons

  • Może być obraźliwe dla kandydatów, jeśli pytania są bezsensowne / trywialne bzdury, które nigdy nie pojawią się w trakcie pracy (np. „Napisz sortowanie bąbelkowe”, gdy wszystkie współczesne ramy, których używałbyś w pracy, mają wbudowane sortowanie ”,„ Odwróć ciąg ” „gdy istnieje wbudowana Reversemetoda lub podobne, lub w przypadku testów pisemnych rzeczy takie jak„ Jakie są argumenty Foometody metody Bar”, gdy dowolny idiota mógłby Google to wykorzystać lub skorzystać z dokumentacji) w przeciwieństwie do pytań architektonicznych / projektowych, które pokazują kandydat może załatwić sprawy i rozwiązać problemy biznesowe .

1
Myślę, że „Odwróć ciąg” jest doskonałym pytaniem początkowym w wywiadzie programistycznym. Jeśli nie wiedzą, od czego zacząć (a niesamowita liczba osób tego nie wie), prawdopodobnie nie chcesz ich zatrudnić. Jeśli używają metody wbudowanej, to dobrze - mówi ci, że nie będzie próbował zbudować własnego koła, jeśli takie jest, ale przedstawi hipotetyczną sytuację, w której metoda wbudowana ma błąd, więc trzeba pisać własne. Następnie możesz użyć ich kodu jako punktu wyjścia do zadawania innych pytań, takich jak naprawianie błędów, zużycie pamięci, czas działania itp.
Gabe

0

Jednym z pro jest to, że pokazuje, że ktoś ma podstawową wiedzę na temat programowania lub cokolwiek innego (kiedy ostatni raz się z tym spotkałem, byłem zaskoczony, jak podstawowe było pytanie SQL). Może również służyć jako podstawa do dyskusji technicznej, pytając, dlaczego kandydat zrobił to i to, i jak można to poprawić.

Rozmowa wymaga czasu, który można wykorzystać do innych celów. Co więcej, pisanie kodu na tablicy nie jest środowiskiem naturalnym, a niektóre osoby będą miały z tym coraz mniej poważnych problemów. Może to spowodować, że przegapisz programistę, który denerwuje się bez zwykłych narzędzi lub referencji.


3
Jeszcze bardziej zaskoczyłoby Cię to, ile osób nie mogło odpowiedzieć na to podstawowe pytanie, niż kto.
HLGEM

0

Programowanie jest wysoce techniczną umiejętnością z szeregiem wyraźnych „rezultatów”. Kandydat może lub nie może ich dostarczyć. Więc nie ma „wad” zadawania pytań technicznych. Jest to całkowicie po to, by powiedzieć „pokaż mi kod dla tej aplikacji” lub „pokaż mi kod aplikacji, którą JUŻ JUŻ napisałeś”.

NIEprzestrzeganie tego może prowadzić do następujących rezultatów: Bogaty człowiek przeprowadził wywiad z nauczycielem, aby nauczyć swoje dzieci gry w szachy (jako ćwiczenie poszerzające umysł). Nauczyciel otworzył szachownicę i zaczął mówić o 64 kwadratach, ale nie dotknął kawałka szachowego. W każdym razie ojciec zmuszony do czasu wynajął korepetytora. Nauczyciel nauczył dzieci grać w warcaby.


To tylko pokazuje przykład niekompetentnego ankietera, a nie konieczność gry w szachy podczas wywiadu. Bogacz mógł po prostu poprosić mnie o „wyjaśnienie Castlinga” lub coś podobnego i od razu zorientować się, co nauczyciel wiedział.
GrandmasterB,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.