Test kodowania wstępnego - Jak długo jest rozsądny? [Zamknięte]

22

EDYTOWAĆ

Po długim zastanowieniu i autorefleksji na ten temat zdałem sobie sprawę, że większość zagadnień poruszonych w tym pytaniu dotyczy wyłącznie osobistej, a nie zawodowej perspektywy. Dlatego moderatorzy odłożyli to pytanie ze względu na bardzo osobisty, subiektywny charakter problemu, o którym starałem się mówić. Myślałem o przeredagowaniu pytania, ale tak naprawdę nie mogłem znaleźć sposobu na wyrażenie tego w bardziej obiektywny sposób, aby mógł być przedmiotem dyskusji, w której odpowiedzi mogą być poparte dowodami lub referencjami.

Ze względu na tych, którzy są nadal zainteresowani, staram się przedstawić streszczenie dyskusji wynikającej z tego pytania:

  • 4-godzinny wywiad wstępny, test programowania poza siedzibą nie jest zwykle, ale
  • wiele osób zwróciło uwagę, że w przypadku niektórych firm przeprowadzacie wywiady znacznie dłużej niż wszystkie razem
  • to jest nasza osobista decyzja, czy przeprowadzimy test, czy nie, i możemy to ocenić na podstawie naszych okoliczności i postrzeganych korzyści płynących z zatrudnienia w firmie
  • wszystkie firmy są różne, podobnie jak ludzie, i może być całkowicie uzasadnione, aby firma zastosowała dłuższy test wstępny poza miejscem rozmowy, jeśli jest to zgodne z ich potrzebami lub okolicznościami

Chciałem, aby moje pierwotne pytanie dotyczyło tego, jak rozsądnie oczekiwać 4 godziny ode mnie i jak etycznie wydać problem, aby rozwiązanie (nie kod, ale projekt) mogło zostać wykorzystane w firmie. Jak teraz widzę, oba te pytania można (najlepiej) zbadać w dyskusji na forum, zamiast używać narzędzia społeczności typu pytanie-odpowiedź, takiego jak stackexchange.

Jednak wszystkie twoje odpowiedzi były dla mnie cenne i dziękuję za podzielenie się.

ORYGINALNY POCZTA

Przeprowadzam rozmowę kwalifikacyjną na kilka stanowisk, a większość z nich obejmuje fazę wstępnej kontroli, w której muszę przesłać test na kodowanie, zanim odbędzie się rozmowa telefoniczna lub rozmowa na miejscu. Przyzwyczaiłem się do tego pomysłu i uważam za rozsądne, że firmy oczekują, że to zrobię, aby mogły sprawdzić, jaki rodzaj pracy mogę wykonać samodzielnie.

Zasadniczo z mojego doświadczenia wynika, że ​​tego rodzaju ćwiczenia kodujące to w większości małe zadania programistyczne. Zrób logikę, może zaimplementuj mały algorytm, otwórz plik i odczytaj / zapisz dane, i tak dalej. Nawet najprostsze zadanie można zrealizować za pomocą dobrego oddzielenia logiki, testowalnych komponentów itp., Aby zobaczyć, jak kandydat koduje, i ogólnie, jak dobrze jest przygotowany do rodzaju pracy, którą firma chce wypełnić.

Ostatnio natknąłem się na firmę, która wysłała mi test kodowania z opisem całej strony z całego ćwiczenia, prosząc mnie o rozwiązanie rzeczywistego problemu ich działalności (nie chcę mówić o szczegółach w celu ochrony firmy, ale test było mniej więcej o tym, co robią). Opisali dość skomplikowany system do wdrożenia, obejmowali rzeczywiste dane, a na koniec doszli do wniosku, że test kodowania nie powinien zająć więcej niż 4 godziny .

Czy rozsądne jest, aby firma spodziewała się, że spędzę 4 godziny pracując nad swoim imitacją w wolnym czasie, nawet zanim się ze mną przywitają? (osoba rekrutująca wysłała mi test kodowania)

Nie zrozum mnie źle, jestem zmotywowany do znalezienia nowej pracy i nowych wyzwań, ale większość firm oczekuje, że spędzę maksymalnie 1-2 godziny na takim zadaniu, a takie zadania zawsze były o wiele mniej skomplikowane.

Jako wniosek w tej firmie wymyśliłem, że:

1) Moja motywacja nie jest dobra i prawdopodobnie szukają kogoś innego

2) Nie szanują swoich przyszłych pracowników, którzy oczekują tak długich testów kodowania nawet bez przywitania się z nimi

3) Chcą po prostu ujawnić jeden z problemów, nad którymi pracują, i sprawdzić, czy istnieje entuzjastyczny młody facet, który rozwiązałby je za darmo (znowu, nie zrozumcie mnie źle, nie jestem teoretykiem spisku, ale mam słyszałem takie historie ...)

Jak myślisz, ile uzasadnione jest, aby firma spodziewała się, że kandydaci spędzą czas na testach kodowania fikcyjnego, nie rozmawiając z nimi? Jakie jest Twoje ogólne doświadczenie?

Aston
źródło
Twój komentarz jest sprawiedliwy. Jestem jednak zainteresowany tym, co myślisz o tym, jak rozsądnie jest oczekiwać, że ktoś spędzi 4 godziny na zadaniu wstępnym.
Aston,
1
Jest to propozycja ekonomiczna, której racjonalność określa się na podstawie tego, co zniesie rynek. To będzie się zmieniać w zależności od warunków. Jeśli jest to rynek pracownika (tj. Wiele firm wybiera kilku kandydatów), tolerancja dla tego rodzaju rzeczy będzie mniejsza niż na rynku pracodawcy. Spędziłem w sumie dwanaście godzin na przeprowadzaniu wywiadów na zajmowane przeze mnie stanowisko, ponieważ potencjalne korzyści wynikające z takiego postępowania zostały jasno określone. Dziesięć lat później mieli rację i każda minuta, którą spędziłem, była opłacalną inwestycją.
Blrfl
3
Jeśli kiedykolwiek przeprowadzasz wywiad w jednej z głównych firm programistycznych, często jesteś odwieziony do ich lokalizacji (co było dla mnie 10 godzin podróży), a następnie spędzasz 8 godzin dziennie (lub dwóch, nie jest to niespotykane) programowania / projektowania / rozmowa kwalifikacyjna. Podejrzewam, że problemem jest to, czy postrzegasz firmę posiadającą siłę, by tego wymagać.
Steven Evers
1
Moje doświadczenie z „głównymi producentami oprogramowania” polegało na tym, że pierwszym etapem była 1-godzinna rozmowa telefoniczna i to jest uczciwe. Brakuje mi tutaj tego, że oczekują ode mnie 4 godzin pracy bez żadnego wkładu. Zastanowiłem się trochę i pomyślałem, że może nie mają zbyt wiele czasu, a jeśli kogoś polubią, prawie go zatrudnią z tych 4 godzin pracy. W takim przypadku rozumiem ich podejście (dotyczy to odpowiedzi Dunka).
Aston

Odpowiedzi:

24

Pozwólcie mi na chwilę zająć się stroną firmy, ponieważ inne odpowiedzi jeszcze nie były. Stworzenie użytecznej bazy kodu z konglomeracji 4-godzinnych testów testowych kodowania od osób, których kwalifikacje są całkowicie nieznane, byłoby prawie niemożliwe. Utworzenie wystarczająco szczegółowej specyfikacji, sprawdzenie odpowiedzi i zintegrowanie jej z resztą kodu zajęłoby ponad 4 godziny. Nie wspominając o najbardziej przydatnych projektach oprogramowania na poziomie korporacyjnym, które wymagają tysięcy roboczogodzin. Myśl o zbudowaniu firmy poprzez podzielenie jej na 4-godzinne przyrosty z tygodniami czasu realizacji jest szczerze śmieszna.

Podanie rzeczywistego problemu biznesowego jest jednym z najlepszych sposobów ustalenia, czy ktoś będzie szokująco rozwiązywał rzeczywiste problemy biznesowe. Robię to często w wywiadach (chociaż proszę o ogólne zasady projektowania, a nie kod warty 4 godziny) i za każdym razem, gdy jest to problem, który już rozwiązałem. Gdybym tego jeszcze nie rozwiązał, test straciłby prawie całą wartość dowodową.

To, czy warto skorzystać z 4-godzinnego testu, jest osobistą decyzją. Zawsze uczono mnie traktować szukanie pracy w pełnym wymiarze godzin jako pracę na pełny etat. Gdy jesteś bezrobotny lub niedostatecznie zatrudniony i spędzasz 8 godzin dziennie na poszukiwaniu pracy, 4-godzinny test kodowania to nic. Spędziłem znacznie więcej czasu na zadaniach takich jak odświeżanie zardzewiałych języków, pisanie programów portfolio i dostosowywanie CV dla określonych pozycji.

Z drugiej strony niektórzy z najlepszych pracowników są już zatrudnieni zarobkowo i tylko od niechcenia szukają lepszych możliwości. Ludzie w takiej sytuacji raczej nie przejdą rygoru 4-godzinnego testu, chyba że nadarzy się okazja. Jednak to jest problem firmy, nie twój.

Jeśli chodzi o rozeznanie, co to znaczy w stosunku firmy do swoich pracowników, nie sądzę, że można tak naprawdę powiedzieć cokolwiek, poza tym, że prawdopodobnie mają już dość kontaktów z niewykwalifikowanymi kandydatami, do tego stopnia, że ​​są gotowi rzucić niektóre dobre ze złymi.

Karl Bielefeldt
źródło
Ponadto OP stwierdził, że test nie powinien trwać dłużej niż 4 godziny. Myślę, że jeśli test zajmie kandydata = <4 godziny, prawdopodobnie i tak nie byliby zainteresowani.
Tombatron
Dziękuję za odpowiedź. Może jestem drugim typem, który nie ma tak łatwo 4 godzin na takie zadanie, więc może szukają kogoś innego, kto ma. I tak, podanie rzeczywistego problemu z życia jest korzystne z powodów, o których wspomniałeś, i natknąłem się na takie zadania, na przykład, kiedy przeprowadzałem wywiad dla firmy telewizyjnej, musiałem zrobić kalkulator subskrypcji kanału, kiedy dla firmy FX musiałem podsumować walutę z pliku CSV i to jest uczciwe, ale ta firma posunęła się trochę za daleko w stosunku do swoich oczekiwań. Może tylko dla mnie.
Aston
3
Myślę, że to trochę uproszczone. Nie wszystkie rozwiązania wymagają integracji z innymi systemami - może to być na przykład proces analizy danych. I chociaż kod nie może być używany bezpośrednio przez firmę, projekt może być bardzo dobrze wykorzystany. Proces testowy powinien być z założenia powierzchowny i uważam, że więcej niż jedna godzina to za dużo.
Kirk Broadhurst
2
Traktowanie polowania na pracę jako pracy na pełen etat jest uzasadnione tylko wtedy, gdy jesteś bezrobotny. Jeśli pracujesz, ale testujesz rynek, aby sprawdzić, czy coś lepszego jest dostępne, ten poziom zaangażowania nie jest praktyczny, z wyjątkiem krótkoterminowej, ponieważ po prostu wypalisz się.
Dan Neely
11

Nie, nietypowe , dlaczego rozwiązujesz ich problemy za darmo? (4 godziny)

1 godzina jest typowa dla testu programowania. W przeszłości nasz test programowy składał się z 4 pytań. Pierwsze 3 pytania trwały 1/2 godziny, ostatnie 1/2 godziny. Przekazaliśmy również test istniejącym pracownikom w domu, aby upewnić się, że dotrzymywaliśmy oczekiwanych ram czasowych, a test był uczciwy i odpowiednio dostosowany.

Pierwsze kilka pytań brzmiało „Fizz Buzz”, aby wyeliminować osoby, które nie mogą programować. Stawały się coraz trudniejsze. Ostatnie pytanie było ćwiczeniem rozwiązywania problemów. Zasadniczo próbowaliśmy ograniczyć ilość napisanego kodu do około kilkuset wierszy (łącznie) i nie wymagaliśmy żadnych sprytnych sztuczek. Ocenialiśmy także ludzi pod względem obsługi błędów, stylu, składni, organizacji itp. Pytania nie były związane z naszą działalnością, ale raczej z umiejętnościami i technologią, w której napisano obecną platformę.

Zwykle wspaniali kandydaci ukończyli w krótszym czasie niż przydzielono. Czasami ludzie prosili o dodatkowy czas, który pozwalaliśmy na to ze względu na stres związany z rozwiązywaniem quizu, ale ograniczaliśmy wszystkich do pewnego limitu. Quiz był w obecnym środowisku programistycznym, a ludzie mieli dostęp do Internetu w celu uzyskania informacji. Przekroczyliśmy również oczekiwania quizu dla każdego kandydata.

Kiedyś rozmawialiśmy o włączeniu naszej bazy kodu (świata rzeczywistego) do quizu, ale ostatecznie odrzuciliśmy to ze względu na obawy, że kod został skopiowany / skradziony / itp. (Nasz szef był trochę paranoikiem). Ostatecznie wybraliśmy oddzielną quiz.slnmaszynę do programowania.

Wreszcie stwierdziliśmy, że trudno było wymyślić test, który byłby sprawiedliwy, ale ani zbyt trudny, ani zbyt łatwy. Zawsze pytaliśmy naszych kandydatów o quiz po ich wzięciu i gromadziliśmy ich opinie, aby udoskonalić go dla przyszłych kandydatów.

Jon Raynor
źródło
Dziękuję za odpowiedź. Twoje metody wydają się być uczciwe. Podoba mi się pomysł łatwych pytań i trudnych pytań, ponieważ daje kandydatowi poczucie, jak dobrze sobie radzi, nawet bez dalszych wyjaśnień. Powiedzmy, że wykonuję 3 proste zadania i nie mogę wykonać ostatniego, nie czułbym się porażką, ale mógłbym również uznać, że muszę poprawić. W moim przypadku tak naprawdę przeszkadzały mi 4 godziny oczekiwania poza witryną, nawet zanim firma się ze mną odezwie.
Aston
@Aston - Również jeśli nie wypełniłeś ostatniego pytania, nie dyskwalifikuje cię to automatycznie. Być może nie zostałbyś zatrudniony jako programista, ale może gdzieś indziej. W niektórych przypadkach kandydaci byli zatrudniani na inne stanowiska (wsparcie, QA). Najpierw przeprowadziliśmy wywiad z ludźmi, a następnie quiz. Przypuszczam, że mógłbyś najpierw wykonać quiz i natychmiast wykluczyć tę osobę, ale być może brakuje ci potencjalnie dobrych kandydatów technicznych, ale nie programujących.
Jon Raynor
8

Uważam, że testy kodowe w wywiadzie to mnóstwo kłopotów. Nikt nie koduje niczego poza najprostszą rutyną pod presją bez zwykłego środowiska i narzędzi, więc wyniki, które otrzymujesz, są co najmniej wątpliwe.

To, co uważam za naprawdę dobre testy umiejętności programisty, to dać mu kod projektu i poprosić go o jego przejrzenie, działa to naprawdę dobrze, jeśli kod zawiera kilka oczywistych błędów, kilka oczywistych problemów z kodem i kilka wątpliwych praktyk. Dobry programista powie ci wszystko i zaangażuje się w dyskusję, dlaczego niektóre kody nie są „złe”, ale można to zrobić lepiej, aby ułatwić konserwację. Słaby programista znajdzie błąd i przestanie działać.

Każda praca, która wymaga wykonania testu trwającego ponad pół godziny, po prostu nie poświęciła aż tyle czasu na wypracowanie dobrego, ukierunkowanego testu, który zapewnia im więcej niż niejasne wyobrażenie o twoich umiejętnościach. (większość firm ma trudności z poświęceniem czasu na przygotowanie się do rozmowy wstępnej).

Gdybym dostał test tak jak ty, odpowiedziałbym pseudo-kodem. To powinno wystarczyć do wykazania mojej wiedzy na temat kodowania i projektowania, bez konieczności przechodzenia przez wszystkie fazy kompilacji, kompilacji i testowania, które można wykonać w przypadku normalnego projektu pracy.

gbjbaanb
źródło
1
Przepraszam, jeśli nie byłem jasny, ale odniosłem się do testu, który ma miejsce przed wywiadem, więc mogę to zrobić samodzielnie w domu.
Aston
1
niemniej jednak i tak zrobiłbym to pseudokod. Albo chcą moich przemyśleń na temat rozwiązania problemu, albo chcą od ciebie darmowej pracy. Jeśli to drugie, nie będzie to miejsce, w którym chcesz pracować.
gbjbaanb
@gbjbaa: LUB bardziej prawdopodobnym scenariuszem jest to, że chcą zobaczyć rodzaj wykonywanej pracy. W tym względzie trywialne zadania nie są wystarczające. Pseudo-kod go nie wycina. Założę się też, że zdefiniowanie problemu zajęło ponad 4 godziny, sprawdzenie, dopracowanie i zatwierdzenie. Więc biorąc pod uwagę, że mogliby to wdrożyć samodzielnie w krótszym czasie niż trzeba było zapytać, dlaczego uważasz, że są po pracy? Jeśli zadanie zajęło tydzień lub 2, wtedy mogłem zobaczyć twój punkt, ale 4 godziny? Rozmawiałem też ze zbyt wieloma osobami, które były dobre w wyrażaniu myśli i ostatecznie bardzo źle radziły sobie z rozwiązywaniem problemów.
Dunk
1
Zawsze jestem trochę podejrzliwy, jeśli zadaniem jest zbyt blisko rzeczywistej sytuacji na świecie. Słyszałem historie, w których menedżerowie organizowali wywiady wyłącznie w celu uzyskania wskazówek od mądrzejszych i mądrzejszych osób na temat rozwiązania konkretnego problemu. Nie chodzi o to, że sami go nie rozwiązali, ale chcieli zobaczyć, jak ktoś inny to rozwiąże. W końcu nie chcieli nikogo zatrudnić, ale to inna historia.
Aston
3

Możesz nie mieć 4 godzin, ale ktoś bardziej zainteresowany ich firmą z pewnością to zrobi. Zostałem zasadniczo zatrudniony na podstawie podobnego zadania, które firma poprosiła mnie wcześniej o wykonanie samego zadania. Najwyraźniej pisanie czystego i zrozumiałego kodu, dokładnych przypadków testowych oraz zrozumiałej i spójnej dokumentacji projektowej jest nienormalne. Właściwie to widząc, jak ktoś to robi, zdmuchuje ludzi. W każdym razie wszyscy, z którymi rozmawiałem podczas wywiadu, chwalili mnie za to, co zrobiłem i czułem, że nie muszę nikomu robić wrażenia w wywiadzie, ponieważ już się zdecydowali. Chodziło po prostu o to, że nie dawałem im powodu do odmowy, robiąc coś głupiego.

Chociaż zgadzam się, że 4 godziny to dość duża inwestycja czasowa, oznacza to również, że zadanie jest wystarczająco duże, abyś miał okazję naprawdę pokazać, co potrafisz. Twoja praca bardzo dobrze mówi dużo więcej niż kiedykolwiek w rzeczywistej sytuacji podczas rozmowy kwalifikacyjnej.

Na marginesie: ostatnio próbowałem podobnej rzeczy, ale używając znacznie mniejszego problemu i nie byłem zadowolony z rezultatów. Małe problemy są zbyt trywialne, aby wykazać wystarczającą wiedzę danej osoby. Ponadto trywialne problemy zwykle wymagają od osoby rozpoznania pewnych sztuczek / szczegółów niezbędnych do rozwiązania problemu. Zatem istnieje pewna równowaga między pochłanianiem zbyt dużej ilości czasu osoby a nieużywaniem żadnych rzeczywistych korzyści, ponieważ zadanie jest trywialne. Sądzę, że 4-godzinne zadanie to prawdopodobnie odpowiednia ilość czasu, aby być wystarczająco złożonym, aby kandydaci mogli wykazać się swoimi umiejętnościami i nie trwać tak długo, aby nikt nie zawracał sobie głowy.

Maczać
źródło
Dziękuję za odpowiedź. Po odrobinie autorefleksji, twojej odpowiedzi i próbie odwrócenia uwagi od siebie od firmy, widzę, jak może to być rozsądne z ich punktu widzenia. Może ich proces to właściwie wszystko, weź 4 godziny pracy, a jeśli ktoś polubi, zaprosi i złoży ofertę. Może mieli wcześniejsze złe doświadczenia z tym, że ludzie byli dobrzy w małych, ale nie w większych zadaniach, lub spędzali zbyt dużo czasu na rozmowach z ludźmi, którzy nie byli dobrymi kandydatami. Nadal uważam, że 4 godziny trochę za dużo, ale mógłbym to zrobić ...
Aston,
1

W pewnym momencie wziąłem 6-godzinny test kodowania. Kiedy przystąpiłem do tego testu, miałem dość dużą pewność, że zostanę zatrudniony - chociaż się spełniło, nie byłem aż tak zadowolony z dalszych działań.

Oczywiście posiadanie wielu pracodawców, z których każdy prosi o 4 godziny, jest nadmierne. Osoba, której szukałem w teście, który przeprowadziłem, to mój styl kodowania - zostałem zatrudniony, ponieważ mój był „najbliższy” jego. W tym kontekście spójrz na problem z tej perspektywy: po pierwsze, czy jest to interesujący problem, którego rozwiązanie jest dla ciebie warte w każdym razie? W końcu możesz nauczyć się czegoś cennego.

Po drugie, jeśli potrafisz „zaliczyć” test, czy to znaczy, że jesteś zatrudniony? Jeśli nie jest to dość oczywiste, musisz zdecydować, czy i tak istnieją inne powody.

Po trzecie, mogą oszacować, że zajmuje to „4 godziny”, ale możesz dowiedzieć się inaczej. Czy naprawdę wiedzą, jak długo to powinno potrwać? Najprawdopodobniej odpowiedź brzmi „nie”. Dlatego będą testować ludzi w 4-godzinnych terminach, dopóki nie zdadzą sobie sprawy, że nie zmieści się w ciągu czterech godzin. W takim przypadku marnujesz swój czas. Najlepszym podejściem jest wtedy agresja wobec menedżera ds. Rekrutacji i ustalenie, czy powinieneś przestać o czterech godzinach i dać im to, co masz, czy też kontynuować, dopóki się nie skończy i powiedz im, ile czasu to zajęło. Krótko mówiąc, może to obejmować test postaci, a próba zaakceptowania go na własnych warunkach może ujawnić brak doświadczenia.

Meredith Poor
źródło