Próbki kodu i wywiady? [Zamknięte]


23

Widziałem wiele pytań, odkąd tu jestem, gdzie w odpowiedzi ktoś twierdził, że nigdy nie użyłby portfolio lub próbek kodu zakodowanych poza procesem rozmowy kwalifikacyjnej w celu oceny kandydata, ponieważ istnieje taka możliwość kod został napisany przez kogoś innego. Jestem tym zaskoczony.

Z mojego punktu widzenia, jeśli poproszę kogoś, aby wszedł i rozwiązał prosty problem na miejscu, niewiele mogę się z niego nauczyć. Nie pracuję w firmie takiej jak Google, w której poszukuje się pracy i mogę zażądać czyjegoś dnia. Ale znaczna część kodu napisanego dla hobby może mi wiele powiedzieć.

Tak, istnieje możliwość plagiatu, ale będą musieli być bardzo dobrze wyszkoleni, aby przejść godzinną dyskusję na temat tego kodu. I w takim przypadku będą musieli bardzo szybko się uczyć, aby przejść 3-miesięczny okres próbny (podczas którego mogę się ich pozbyć bez powodu i bez powiadomienia). Jeśli staną się dobrymi programistami, to szybko, wystarczająco uczciwie, zostałem oszukany, ale nadal mam dobrego programistę.

Ostatecznie koszt naszej firmy i korzyść dla kandydata na plagiat są bardzo minimalne.

To skłoniło mnie do myślenia o innych branżach. Artyści, fotografowie, projektanci korzystają z portfolio i nikt nie martwi się zbytnio plagiatem. Autor otrzyma fundusze na książkę opartą na rozdziałach, które napisał we własnym czasie. Nie poprosiłbyś architekta, aby wszedł i narysował specyfikacje projektowe domu podczas wywiadu.

Co nas wyróżnia? Dlaczego tak ważne jest, aby postawić kogoś przed komputerem i zmusić go do kodowania scalania danych lub kalkulatora czynnikowego, czasem bez dostępu do narzędzi, których używamy na co dzień, takich jak Internet? Co jest złego w koncepcji portfela kodu?

Jestem naprawdę zainteresowany, aby wiedzieć, na wypadek, gdy popełniam ogromny błąd, który jeszcze mnie nie spalił.

Odpowiedzi:


14

Mój sprzeciw wobec portfela nie ma nic wspólnego z ryzykiem, że firma zostanie oszukana przez kogoś, kto kopiuje kod z Internetu lub, co bardziej prawdopodobne, przekazuje kod napisany przez zespół programistów jako swoją pracę. Jak słusznie zauważyłeś, możesz nauczyć się co najmniej tyle samo, rozmawiając przez programistę o projekcie, który jest im ogólnie znany przez godzinę, jak możesz, kodując kalkulator czynnikowy od zera.

Mój sprzeciw wobec portfela polega na tym, że wymaganie portfela eliminuje wielu utalentowanych programistów z rozważań. Ponieważ, w przeciwieństwie do artysty lub fotografa, nie zachowuję praw autorskich do tworzonego przeze mnie kodu - należy on do mojego pracodawcy i / lub firmy, która zawarła umowę z moim pracodawcą - nie mogę pokazać zdecydowanej większości „ ciekawy kod, który napisałem. Jeśli koduję w swoim czasie, to na ogół będzie to poboczny projekt w pracy, który ułatwi moje życie lub po prostu mnie zepsuje, czego znowu nie będę mógł pokazać w portfolio. Mam mnóstwo postów na różnych forach, ale większość z nich jest z założenia stosunkowo płytka. Istnieje dość pokaźna populacja stałych programistów, którzy znajdują się w podobnej sytuacji - ich interesujący kod jest własnością kogoś innego. I jeśli ty'

Wywiad techniczny, w którym wszyscy kandydaci proszeni są o kodowanie czegoś od zera, zapewnia przynajmniej równe warunki działania. Zakładając, że wykonujesz rozsądną robotę, wykonując ekran telefonu i że możesz zawęzić listę kandydatów do rozsądnej listy, wolałbym, aby jako kandydat miał problem do rozwiązania, o którym wiesz, że zajmie to 8 godzin wysiłku niż stworzenie spójnego portfolio zabawkowych aplikacji, które nie mają problemów z prawami autorskimi.


1
+1 Dobra odpowiedź. Dalsze pytanie: jeśli poproszę o próbkę kodu, co uniemożliwi opisanemu kandydatowi spędzenie 8 godzin na rozwiązywaniu własnego problemu, a nie przez mój wymyślony problem? Szanuję to bardzo.
pdr

3
Powszechny, wymyślony problem, taki jak konkretny problem z Project Euler, powinien zapewnić lepsze wyniki i być bardziej ostrożnym w stosunku do kandydatów niż wymyślić własne problemy. Jest to dobre dla kandydatów, ponieważ istnieje dobrze określony punkt zatrzymania - nikt nie będzie odczuwał presji, aby spędzać mnóstwo czasu na ulepszaniu interfejsu użytkownika lub dodawaniu „jeszcze jednej funkcji”. Jest to dla ciebie lepsze, ponieważ o wiele łatwiej jest porównywać kandydatów, gdy rozwiązują podobne problemy. W przeciwnym razie trudno nie wpływać na to, kto miał najfajniejszy pomysł lub czyja grafika była najlepsza.
Justin Cave

To prawda, że ​​próbki kodu są bardziej rozsądnym oczekiwaniem dla twórców stron internetowych po stronie klienta, ale najlepszy format wywiadu, jaki kiedykolwiek spotkałem, polegał na siadaniu i przeglądaniu napisanego przeze mnie kodu, dzieleniu się przemyśleniami na temat rzeczy, które lubię, chciałem Radziłem sobie lepiej itp., A potem patrzyłem na kod napisany przez programistów przeprowadzających wywiady i robiłem to samo. Znacznie większa wartość dla obu stron niż wywiad w stylu drużyny strzeleckiej, IMO. Podejście Google do przyjęcia fałszywych negatywów jest powodem, dla którego nie chciałbym dla nich pracować. Jest niezdarny, nieelegancki i marnotrawny. Podobnie jak ich JavaScript.
Erik Reppen

6

Przede wszystkim jesteśmy inżynierami, a nie artystami. Pracujemy w zespole, więc zgodnie z naszym prawdziwym doświadczeniem zawodowym „nasz” kod jest często wynikiem pracy zespołowej, ponieważ tak zwykle wykonuje się prawdziwą pracę. Nie ma takiego profesjonalnego kodu, za który mógłbym rościć wyłączną własność.

Po drugie, większość kodu w moim hipotetycznym portfolio to kod, którego nikomu nie mogę pokazać, ponieważ jest poufny. Kod, który stworzyłem dla moich osobistych projektów domowych niekoniecznie odzwierciedla wszystkie moje umiejętności i moje typowe zachowanie w pracy.


4

Przeprowadziłem wywiady z wieloma osobami, kiedy byłem praktykiem oprogramowania. Doszedłem do punktu, w którym uważam, że quizy i zadania związane z programowaniem zabawek są marnotrawstwem cennej przepustowości. Quizy i zadania związane z programowaniem zabawek służą jedynie do sprawdzenia wiedzy ankietera. Nie są one dokładnym sposobem oceny tego, co wie kandydat. Na tym etapie mojej kariery akceptuję tego rodzaju bzdury tylko wtedy i tylko wtedy, gdy mam możliwość przeprowadzenia własnego testu na koniec rozmowy.

Najlepszym sposobem oceny umiejętności specjalisty ds. Oprogramowania jest rozmowa z nim spokojnym, uspokajającym głosem. Poproś kandydata o omówienie jego obecnego stanowiska. Gdy kandydat pojawia się w obszarze zainteresowania, poproś go o rozwinięcie tego obszaru. Celem jest, aby kandydat stracił czujność. Żadna ilość coachingu nie może przygotować kandydata na przesłuchanie „miękkiego dotyku”. Prędzej czy później pętla zacisnie się na szyi kandydata, który próbuje przebić się przez wywiad.


2

Proszę o próbkę kodu dla wnioskodawców, która otrzymuje referencje podczas rozmowy kwalifikacyjnej. Jednak zwykle przywiązuję większą wagę do kodowania tablicy wykonanej podczas wywiadu.

Każdy wywiad z deweloperem, który przeprowadzam, obejmuje chodzenie do tablicy w celu wdrożenia rozwiązania prostego problemu. Istnieją jednak zasady:

Wnioskodawca musi omówić implementację podczas jej wykonywania.

  • Mogę ocenić, jak podchodzą do problemu.
  • Widzę, jak dobrze można się komunikować.
  • Mogę ocenić, jak szybko są z wyraźnym celem.

Mam trzy problemy, których implementacje są podobne, i daję im do zrozumienia, że ​​mogą ponownie użyć lub zmienić kod, który napisali.

  • Widzę, czy mogą się wycofać, aby spojrzeć na większe zdjęcie.
  • Widzę, czy implementują i refaktoryzują, czy przechodzą do uogólnienia.
  • Mogę lepiej zrozumieć, jak dobrze uporządkować ich myśli.

Istotą tego wszystkiego w każdej rozmowie jest próba dobrego zorientowania się w możliwościach kandydatów i tym, w jaki sposób mogą dopasować się do pracy. „Praktyczna” część wywiadu z mojego doświadczenia bardzo pomogła pod tym względem. Pomaga mi również ocenić przykładowy kod, ponieważ wiem o wiele więcej o sposobie działania programu.


1

Próbka kodu jest dość skutecznym sposobem na wyeliminowanie kandydatów - mogę ocenić próbkę kodu w ciągu 5-10 minut, ale nawet ekran telefonu zajmuje 15 minut i wymaga planowania (i nie jest szczególnie przydatny w usuwaniu czegokolwiek oprócz samego dno stosu z mojego doświadczenia).

Myślę, że główne zastrzeżenia do próbek kodu są dwojakie i można je łatwo pokonać:

  • wymaganie próbki kodu stanowi sztuczną barierę dla niektórych utalentowanych programistów

Oczywiście to prawda. Każda bariera w procesie rekrutacji lub rekrutacji może potencjalnie wyeliminować pożądanego kandydata. Ważne jest, aby poznać swoich odbiorców - jeśli masz 1000 CV na jedno otwarcie, możesz pozwolić sobie na fałszywe negatywy w służbie wydajności. Jeśli masz pięć CV, możesz sobie pozwolić na pewną nieefektywność procesu kontroli.

Myślę jednak, że większość osób tęskni za tym, że przeprowadzanie wywiadów i zatrudnianie to w zasadzie gra „znajdź powód, dla którego nie zatrudnisz tej osoby”. Przy każdej przyzwoitej pracy jest wielu wykwalifikowanych kandydatów - ten ostatni, który stoi, jest zwykle tym, który nie wyrzucił żadnych czerwonych flag po drodze. Łatwo jest dostrzec to, co najlepsze w ludziach lub być niezobowiązujące, ale nie pomaga ci to w zatrudnianiu, ponieważ skończysz z 10 różnymi kandydatami, z którymi czujesz się swobodnie. To nie przybliża cię do decyzji.

Każdy zbierany smakołyk podczas przeglądu, przeglądu, wywiadu itp. Może potencjalnie spowodować decyzję o braku zatrudnienia. Musisz zrównoważyć czułość swojego wyzwalacza bez wypożyczenia z obecnymi (i potencjalnymi przyszłymi) perspektywami. Jeśli pracujesz w nudnej branży, z dużą ilością starszego kodu, biurokracją i niskimi zarobkami (często rzeczy poza twoją kontrolą), twój wyzwalacz musi być mniej wrażliwy niż, powiedzmy, Google. W przeciwnym razie ryzykujesz, że nigdy nikogo nie zatrudnisz.

Osobiście uważam, że najłatwiejszym dla mnie kompromisem było żądanie, ale nie wymaganiepróbka kodu. Jeśli go dostanę, to tylko dodatkowy punkt danych do oceny kandydata. Podobnie, jeśli zdarzy się, że mam znajomego, który pracował z kandydatem w przeszłości, przywiążę trochę wagę do jego opinii. Brak współpracy z kimś, kogo znam, z pewnością nie dyskwalifikuje żadnych kandydatów - oznacza to po prostu, że moja praca w ich ocenie jest nieco trudniejsza (i prawdopodobnie obejmie kodowanie, jeśli przejdą na rozmowę kwalifikacyjną). Jeśli twoja próbka jest kiepska (lub mój znajomy źle ci mówi), to prawie nie do wypożyczenia. Ci, którzy dostarczają próbkę, mogą, ale nie muszą, mieć niewielką przewagę nad tymi, którzy nie są w początkowej fazie przesiewania - w zależności od jakości i ilości stosu wznowienia i próbek, więcej informacji może być lepszych lub gorszych niż brak informacji.

  • że próbki można łatwo sfałszować

No tak. Więc są wznawiane - ale nadal je zbieramy. Czemu? Z trzech głównych powodów - słabe wznowienie lub próbka jest łatwym zakazem wypożyczenia, przyłapanie na udawaniu wznowienia lub próbki jest łatwym zakazem wypożyczenia i są to dobre tematy rozmowy w wywiadzie. Im szybciej zdołam odkryć, że kandydat jest głupcem, tym lepiej dla wszystkich.

Jeśli jesteś wystarczająco mądry, aby plagiatować dobrą próbkę bez przyłapania, inteligentnie o tym porozmawiaj i przejdź przez rozmowę kwalifikacyjną - szczególnie nie mam problemu z tym, jak udało ci się przejść badanie. Mogą istnieć pewne obawy etyczne, ale tak naprawdę nie jest to moja specjalizacja, więc nie robię nic, aby ocenić moralny charakter podczas wywiadu. Dla mnie jest to właściwie to samo, co mój szef proszący mnie o rozmowę z kimś, kto nie przeszedł przez proces kontroli jako przysługi. Kiedy jesteś na etapie rozmowy kwalifikacyjnej, nie ma znaczenia, jak się tam dostałeś, ponieważ jest o wiele więcej lepszych informacji, które zostaną ujawnione podczas rozmowy.

TL; DR - próbka kodu jest doskonałym narzędziem do sprawdzania, ale należy dokładnie przemyśleć, czy możesz tego wymagać, czy nie. Po zakończeniu badań przesuń wywiad znacznie wyżej niż próbka.

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.