Jaki jest najlepszy sposób oceny nowych programistów? [Zamknięte]

52

Jaki jest najlepszy sposób oceny najlepszych kandydatów do zdobycia nowej pracy (mówienie tylko w zakresie umiejętności programowania)? W mojej firmie mieliśmy wiele złych doświadczeń z ludźmi, którzy mają dobre stopnie, ale nie mają prawdziwych umiejętności programistycznych. Ich umiejętności są niczym małpy kodowe, bez możliwości analizowania problemów i znajdowania rozwiązań.

Więcej rzeczy, na które muszę zwrócić uwagę:

  • System edukacji w moim kraju jest do bani - naprawdę do bani. Ludzie, którzy są dobrzy w tego rodzaju pracy, są dobrzy, ponieważ mają do tego talent lub naprawdę starają się uczyć na własną rękę.

  • Stopień uniwersytecki / magisterski / podyplomowy niekoniecznie oznacza, że ​​wiesz dokładnie, jak to robić.

  • Certyfikaty również tutaj nic nie znaczą, ponieważ osoby odpowiedzialne za kurs certyfikacyjny również nie mają umiejętności (lub wykonują nisko płatne prace).

Naprawdę musimy znaleźć dobrych kandydatów, którzy są elastyczni i nie mają mechanicznego myślenia (ponieważ tego rodzaju ludzie z doświadczenia mają niską wydajność).

Jesteśmy w instytucji rządowej, a ludzie, którzy są kandydatami, niekoniecznie pochodzą z zewnątrz, ale mamy możliwość zaakceptowania lub odrzucenia kandydatów, dopóki nie znajdziemy właściwego.

Mam nadzieję, że moje pytanie nie brzmi zbyt agresywnie; i BTW sam jestem programistą.

edytuj: Zorientowałem się, że zadałem tu coś naprawdę złożonego. Odznaczę „poprawną odpowiedź” tylko po to, aby dyskusja przebiegła płynnie, bez uprzedzeń.

Rafael
źródło
Doceniam kreatywność, jak mówisz, w sprawie małpowania kodu. Nie podoba mi się podejście brutalnej siły, jeśli pokolenia poprzednich programistów stosowały takie podejście, może to oznaczać, że jest świetne, lub po prostu utrwalone przez długi czas. Również edukacja nie powinna koncentrować się na umiejętnościach handlowych i powiedziałbym, że jest to bardzo ważne, ale faktyczne oceny uzyskane poza podstawowym kompetentnym poziomem nie są tak ważne. Chciałbym zobaczyć więcej systemu w stylu Khan Academy z wieloma małymi modułami pass / fail z innymi zależnościami modułów i okresem ochłodzenia przed pozwoleniem na powtórzenie modułu.
alan2here

Odpowiedzi:

52

Jeśli chodzi o selekcję kandydatów, zwykle wybieram plan trzech uderzeń:

  • Regularny test z kodowymi pytaniami podobnymi do FizzBuzz i wieloma pytaniami wiedzy, w których muszą podać zakodowane przykłady. W zależności od stanowiska mogą to być zasady OO, zasady projektowania SQL itp. Zwiększam trudność pytań w teście, aby zobaczyć, jak daleko mogą się posunąć. Chodzi nie o to, aby naprawdę odpowiedzieć na wszystkie pytania (jeśli tak, tym lepiej), ale także sprawdzić, czy mogą potwierdzić, gdy coś nie wiedzą. Zaufanie jest niezbędne i nie chcę, aby ktoś mnie okłamał w moim zespole.

  • Powróć do testu z kandydatem i dyskusja wokół odpowiedzi. Możliwe rozszerzenie pytań w celu osiągnięcia limitów kandydata. Może to być obszerne, a im szersze, tym lepiej.

  • Ostatnia część, ale nie mniej ważna, The Code Review . Proszę kandydata o przyniesienie fragmentu kodu (zazwyczaj poprzedni test / dyskusję i recenzję oceniam na kilka dni, aby umożliwić im napisanie i dopracowanie jednego fragmentu kodu). Następnie przeprowadzamy regularny przegląd kodu z dwiema osobami: jedną osobą, która będzie bezpośrednio współpracować z kandydatem i osobą, która wcześniej oceniła test z kandydatem. Jeśli chodzi o recenzję kodu, możesz przeczytać ten artykuł z JohnFX .

Na koniec powinieneś być w stanie zdecydować, czy chcesz, aby ten kandydat był częścią twojego zespołu, czy nie.

Matthieu
źródło
4
Zgadzam się na pytania dotyczące kodowania i wiedzy, nigdy nie zgodziłam się prosić kandydatów o przyniesienie fragmentu kodu. Moim zdaniem nie jest łatwo znaleźć pokaźny fragment kodu, który: pokazuje coś trywialnego, nie wymaga zbyt dużej wiedzy na temat większego systemu i który można pokazać innym.
Andrea Zilio
Powiedziałbym recenzję kodu. FizzBuzz jest tak nadużywany. I możesz odstraszyć ludzi. Byłem programistą w służbie zdrowia i usługach finansowych, a takie rzeczy jak fizzbuzz są bezużyteczne. Musisz zrozumieć znacznie bardziej skomplikowaną interakcję. Poproś ich o próbki kodu, nawet jeśli jest to FPS w pygame. Jeśli nie mają próbek kodu, nie są programistami.
Christopher Mahan
1
@ChristopherMahan Wartość FizzBuzz (i podobnie trywialne kodowanie) jest jak zwykły strażnik. Jeśli nie mogą zaimplementować FizzBuzz we własnym języku, czy mogą napisać DOWOLNY kod?
Vatine
@Vatine FizzBuzz testuje zdolność logicznego rozumowania, a nie umiejętności programowania. To prawda, że ​​trzeba być w stanie to zrobić. Proste pytanie programowe brzmiałoby: wyświetlić na ekranie listę pozycji posortowanych w interesujący sposób. Musieliby kodować, ale mogliby czerpać z doświadczenia, aby wymyślić coś do napisania, i nie musieliby również próbować znaleźć łamigłówkę. Kiedyś nie udało mi się przeprowadzić wywiadu, ponieważ chcieli, żebym użył wyrażenia regularnego, i odpowiedziałem, że w przypadku tego problemu wyrażenie regularne to przesada, a Python ma wbudowane możliwości, aby to zrobić. Chyba nie chciałem tam pracować.
Christopher Mahan
Przegląd kodu to okropny pomysł, a obalenie JohnFX jest niewystarczające. Znam wielu deweloperów, którzy są wspaniali, ale nie pracują nad niczym poza własnymi bazami kodu swojego pracodawcy. Są to ludzie z rodzinami i rzeczy do zrobienia poza pracą. Jednak kiedy działają, są bardzo produktywne.
MrFox
20

Zacznij od podania FizzBuzz do rozwiązania. To powinno wyeliminować najgorsze z nich.

Potem coś nieco trudniejszego - na przykład, jak odwrócić ciąg bez wbudowanych funkcji bibliotecznych. Poproś ich, aby porozmawiali podczas rozwiązywania, aby zobaczyć, na czym polega ich proces myślowy.

Możesz sprawiać coraz trudniejsze problemy, jeśli uznają je za bardzo łatwe, dopóki nie będziesz przekonany, że mogą przejść się, a nie tylko porozmawiać.

Oded
źródło
1
Myślę, że może to zależeć od poziomu programisty, z którym przeprowadzasz wywiady. Chociaż dostęp do możliwości zatrudnienia na niższym poziomie może być w porządku, uważam takie pytania w wywiadzie za wyraźny wskaźnik, że nie jest to firma, w której chciałbym pracować.
jfrankcarr
3
Nie zgadzam się z częścią mówioną. Czy podczas rozwiązywania problemów często rozmawiasz ze sobą lub z innymi ludźmi? Co powiesz na to, by dać komuś trochę miejsca i pozwolić mu trochę pomyśleć? Więc jeśli nie jest to całkowicie trywialne, uważam, że nie jest to dobra praktyka.
Andrey Rubshtein,
1
@Andrey - Rozmowa polega na uzyskaniu wglądu w ich proces myślowy. Chcesz zobaczyć, jak myślą o problemie i podejść do jego rozwiązania. Czy masz lepszą opcję?
Oded
5
@Oded, tak, faktycznie to robię. Pozwól im myśleć samotnie , tak jak w prawdziwym życiu, zwłaszcza jeśli jest to trudny problem, a następnie zapytaj ich, ile chcesz. Jak na każdym egzaminie ustnym.
Andrey Rubshtein,
4
Nawet jako asystent w szkole, która ma kilku niedawno uznanych specjalistów CS, uważam, że trywialny fizzbuzz jest dobrym filtrem. Większość osób, z którymi ukończyłem szkołę, prawdopodobnie nie mogła tego rozwiązać w rozsądnym czasie. Ci ludzie walczyli o znalezienie pracy lub nie. Myślę, że obserwowanie joelonsoftware.com/articles/GuerrillaInterviewing3.html jest dobre.
Rig
14

Po prostu szukaj pasji do pracy.

Aby zacytować Joela, poszukaj ludzi „ inteligentnych i załatw sprawy ”.

Reszta nie ma znaczenia

CaffGeek
źródło
7
Problem polega na tym, że nie można stwierdzić, czy są mądrzy.
4
@Chad: pasja uczenia się nie „załatwia spraw”. Aby dowiedzieć się, czy ktoś może załatwić sprawę, musisz poprosić go, aby coś zrobił.
kevin cline,
2
@kevin cline, poprawiłem mój post. Muszą mieć pasję do pracy, co zwykle pokazuje chęć nauki. Tak, potrzeba kilku pytań, rozmowa powinna płynąć, nie powinna to być seria pytań. Ale aby dowiedzieć się, czy uda im się załatwić sprawę, poproś o przykłady, gdzie mieli przeszkodę i jak ją pokonali. Każdy uderza w przeszkodę w swojej pracy, czy to od technologii, ludzi, procesów, ale bystry człowiek, który załatwi sprawę, znajdzie sposób na przezwyciężenie tego i będzie w stanie wyjaśnić to szczegółowo, na tyle, aby sprzedać ich zdolność.
CaffGeek
3
@mouviciel nie z mojego doświadczenia. Niektórzy z najmądrzejszych programistów, których znam, są bardzo ekstrawertyczni.
4
Jeśli nie możesz usiąść w pokoju z kandydatem na programistę i dowiedzieć się, czy jest on mądry, czy nie, znajdź kogoś, kto może.
JeffO
13

Na podstawie moich 25 lat programowania (które, co prawda, obejmuje tylko 5 lub 6 przypadków zatrudniania innych programistów):

Pozytywne wskaźniki:

  • Pasjonat technologii

  • Programy jako hobby

  • Jeśli będzie zachęcany, odezwie się do tematu technicznego

  • Znaczące (i często liczne) osobiste projekty poboczne na przestrzeni lat

  • Sam uczy się nowych technologii

  • Wyrażono opinię, które technologie są lepsze dla różnych zastosowań

  • Bardzo niewygodny pomysł pracy z technologią, która jego zdaniem nie jest „właściwa”

  • Wyraźnie inteligentny, może prowadzić świetne rozmowy na różne tematy

  • Rozpoczął programowanie na długo przed uniwersytetem / pracą

  • Ma ukryte „góry lodowe”, duże osobiste projekty w ramach radaru CV

  • Znajomość szerokiej gamy niepowiązanych technologii (może nie być w CV)

Wskaźniki ujemne:

  • Programowanie to codzienna praca

  • Naprawdę nie chcę „rozmawiać w sklepie”, nawet jeśli jest się do tego zachęcanym

  • Uczy się nowych technologii na kursach sponsorowanych przez firmę

  • Chętnie współpracuje z dowolną wybraną technologią, „wszystkie technologie są dobre”

  • Nie wydaje się zbyt mądry

  • Rozpoczął programowanie na uniwersytecie

  • Całe doświadczenie programistyczne znajduje się w CV

  • Koncentruje się głównie na jednym lub dwóch stosach technologii (np. Wszystko związane z tworzeniem aplikacji Java), bez doświadczenia poza nią

Ponadto sugerowałbym:

  • Test FizzBuzz (lub coś podobnego do testowania podstawowej umiejętności pisania algorytmu.
  • Trudniejsza wersja testu FizzBuzz (aby doprowadzić je do punktu awarii lub prawie awarii).
  • Omów ich kod i sprawdź, czy są skłonni do samokrytyczności i poszukaj ulepszeń (których prawdopodobnie nie mieli czasu zrobić w krótkim teście na miejscu), takich jak:
    • dobre nazwy zmiennych (miałem bardzo doświadczonych wykwalifikowanych programistów używających zmiennych w produkcji takich jak „flag” (WTF ??)
    • modularyzacja.
    • Przewidywanie problemów i „defensywne kodowanie”
  • Chęć postrzegania „wad” jako możliwości poprawy. Myślę, że najlepsi koderzy zawsze szukają bezbłędnie błędów w poprzednim kodzie. Nie są tak egocentryczni, aby sądzić, że znalezienie wady jest osobistym afrontem. Widzą to jako okazję do lepszego działania. (Ci, którzy nie potrafią bezbłędnie patrzeć na wady, albo są przytłoczeni widząc wadę (i stają się zbyt pewni siebie, albo, aby tego uniknąć, ignorują te wady.
  • Czy mogą debugować?
  • Czy mogą przeprowadzić test jednostkowy? (Rozmawiałem ze zbyt wieloma programistami, którzy mówią: „QC robi to”. Nie mówię o testowaniu, mówię o testowaniu: piszesz funkcję, czy to działa? Czy podejmuje rozsądne wysiłki, aby sobie z tym poradzić prawdopodobne problemy (wejście NULL itp.)? Jeśli nie możesz tego zrobić, to skąd wiesz, kiedy skończyłeś?
  • Czy mają dobre umiejętności komunikacyjne? (przynajmniej: dobre zrozumienie i samoświadomość, kiedy to robią i nie rozumieją oraz gotowość powiedzenia „Nie rozumiem, proszę wyjaśnij to jeszcze raz”.

Duża część powyższego podsumowania pochodzi z Jak znaleźć dobrego programistę , który jest świetnym artykułem, skupionym nieco bardziej na wskaźnikach o większym zasięgu. To zdecydowanie potwierdza moje intuicje i doświadczenie. Jest także wiele rzeczy (takich jak „pasja”), które zwykle nie są wymienione na liście kontrolnej „co to jest dobry programista”.

Clay Nichols
źródło
10

Ocena inteligencji programistycznej jest formą testu Turinga. Dlatego nie ma (obecnie) zamkniętych procedur oceny formularzy, które gwarantowałyby działanie. Inteligentni programiści rozpoznają innych inteligentnych programistów, ale tylko z pewnym uzasadnionym prawdopodobieństwem.

Twoje szanse będą większe, jeśli masz w swoim zespole ankieterów, którzy mogą wyczuć zapachy na śniegu i instynktownie nie lubią pracować z głupimi ludźmi (nawet ci, którzy dobrze wyglądają, mają imponująco wyglądające CV i potrafią wyrzucić z pamięci wszystkie zwykłe rozwiązania w puszkach) .

(Jedną z metodologii, która mogłaby pomóc jako jakość przepływu stosu jako efekt uboczny, jest wykopanie starych pytań związanych z przepływem stosu, związanych w pewien sposób z Twoimi wymaganiami pracy, ale które Twoim zdaniem mają gorsze odpowiedzi; zapytaj rozmówcę, jak by odpowiedziały, i poproś ich o opublikowanie, jeśli jest to dobra odpowiedź. Podobne do recapcha dla OCR pozyskiwanego z tłumu).

hotpaw2
źródło
7

Daj im problem, najlepiej związany z domeną problemów, nad którą będą pracować, i poproś ich o omówienie, w jaki sposób do tego podejdą. Możesz poprosić ich, aby po prostu dyskutowali, pseudokodowali lub zapisywali fragmenty rzeczywistego kodu, w zależności od tego, jak jesteś pewny swoich umiejętności

Na przykład, jeśli Twoja organizacja organizowała konferencje, poproś o opisanie, w jaki sposób kodują bezpieczny system rejestracji online. Powinny być w stanie opisać niektóre z podstawowych zagadnień i zadać dobre pytania na temat tego, co dokładnie należy wdrożyć. Podczas interakcji powinieneś być w stanie określić, czy będą dobrze pasować do Twojej organizacji i roli, którą musisz im wypełnić.

Nie jestem wielkim fanem programowania testów ciekawostek i łamigłówek. Choć mogą być zabawne dla niektórych osób, mogą również denerwować i / lub stresować innych, w tym osoby, które mogą być najlepiej dopasowane do Twojego zespołu. Ponadto informacje o wielu takich testach są łatwo dostępne w Internecie i zachęcą do wkuwania testów i innych taktyk, które osłabiłyby ich zdolność do oceny zdolności programisty.

jfrankcarr
źródło
Zgadzam się z tobą wady testu trywialnego / mózgu do selekcji kandydatów. Problem polega na tym, że przeglądanie / omawianie kodu z każdym kandydatem będzie zbyt czasochłonne. A może wynik byłby bardziej subiektywny. niezupełnie tego, czego szukam, wolałbym coś, co wymaga mniej osobistego nadzoru. a później, gdy mam bardziej odpowiednich kandydatów, rozmawiaj / dyskutuj / przeprowadzaj z nimi wywiad
Rafael,
3
Zbyt czasochłonne? Ktoś będzie musiał porozmawiać z kandydatami. Test pisemny nie zadziała. Treść testu szybko stanie się publicznie znana, a kandydaci przybędą z zapamiętanymi odpowiedziami.
kevin cline,
10
@kevincline: Dokładnie, musisz z nimi porozmawiać. Przeprowadziłem wywiad w firmie Xerox (w latach 70.) i zapytano mnie, jak poradzę sobie z kolizjami w algorytmie mieszającym. Nie miałem zbyt wielu formalnych szkoleń w programowaniu, ale robiłem to przez około 5 lat, więc powiedziałem, że nie wiem, co to jest skrót. Mój ankieter wyjaśnił mi to, a następnie ponownie zadał pytanie. Kontynuowaliśmy przez ponad godzinę, gdy odkryłem i rozwiązałem kilka rodzajów problemów związanych z kolizją. Powiedział mi, że gdybym mógł to zrobić w ciągu godziny, poradziłbym sobie ze wszystkim, co na mnie rzucili. Mam pracę. Ponieważ ze mną rozmawiał .
Peter Rowell,
@PeterRowell Tak właśnie musi być. +1
Chiron
3

Po przeczytaniu tego pytania i niektórych otrzymanych odpowiedzi skłonił mnie do napisania artykułu, który moim zdaniem może być interesujący:

Dziwne praktyki rekrutacyjne przy zatrudnianiu programistów

Ok, więc tytuł artykułu to śmiecie, ale artykuł trafia do sedna problemu. To nie problem kandydata, że ​​zdecydowałeś się na rozmowę z nim, bez względu na to, jak nieodpowiedni mogą być dla twojej roli. Jeśli nie udało Ci się zdefiniować dobrze przemyślanej procedury zatrudniania, która pozwoli ci na znalezienie klejnotów w przybliżeniu, będziesz musiał po prostu żyć z konsekwencjami, i tak, oznacza to pozyskanie kilku kandydatów, którzy mogliby nigdy nie spełniaj swoich oczekiwań. Filtrowanie kandydatów na podstawie ich listów i życiorysów wymaga najpierw, poproszenia kandydatów o napisanie listu o sobie i tym, czego chcą od roli, a następnie spojrzenia na sposób pisania CV. Jeśli masz tylko jednego lub dwóch potencjalnych kandydatów na rozmowę kwalifikacyjną, prawdopodobnie prawidłowo wykonałeś wstępną kontrolę.

Kiedy w końcu znajdziesz 1 lub 2 kandydatów, których uważasz za rzeczywiście wartych czasu, nie zadawaj garstki bezmyślnych pytań testerów, ale zamiast tego poświęć czas na poznanie tych ludzi i zaangażowanie się w otwarte dyskusje na temat oprogramowania inżynieria w ogóle. Dowiesz się więcej od swobodnego podejścia do kandydata niż kiedykolwiek w tradycyjnej (i nieco przeciwnej) sytuacji podczas rozmowy kwalifikacyjnej. Nie poprzestań na pojedynczej rozmowie, lecz zaproś swoich kluczowych kandydatów na kilka spotkań, na których odbywa się otwarta dyskusja i gdzie kandydat może spotkać się z potencjalnymi kolegami. Czas nigdy się nie marnuje, ponieważ nieodpowiedni kandydaci nie będą się dobrze rozwijać w wysoce technicznej dyskusji i wykażą swoje wady bardzo szybko, gdy tracą czujność.

S.Robins
źródło
Słuszne uwagi. Byłbym jednak ostrożny w przypadku zbyt wielu wywiadów. Cenny jest zarówno czas kandydata, jak i twój (szczególnie jeśli kandydat jest obecnie zatrudniony gdzie indziej). Z mojego doświadczenia wynika, że ​​coraz więcej wywiadów ma coraz mniejsze zyski, więc ograniczę się do jednego lub dwóch wywiadów. (Dodatkowy) wywiad telefoniczny może być również kompromisem.
sleske
1
@sleske, zgadzam się zasadniczo, szczególnie jeśli te same osoby biorą udział we wszystkich wywiadach. Dlatego lepiej jest dzielić ciężar, aby znaleźć najlepsze dopasowanie zarówno do firmy, jak i zespołu, i daje szansę na naukę na podstawie obserwacji innych. Złe wywiady nie pójdą dalej, ale im więcej interesariuszy zainteresowanych kandydatem, tym więcej wywiadów może być potrzebnych, więc nierzadko są 3 lub nawet 4 rozmowy w bardzo szerokich zespołach. Jednak o wiele więcej sprawiałoby wrażenie strasznie niezorganizowanego. Warto również poinformować kandydata o liczbie wywiadów z góry.
S.Robins
@ s-robins ciekawe opinie, chcę tylko rzucić trochę światła na niektóre aspekty mojego pytania. Z przyczyn niezależnych od nas nie możemy wybierać naszych kandydatów na podstawie normalnego procesu rekrutacji, zamiast tego kandydaci przychodzą tylko i musimy stwierdzić, czy on / ona ma odpowiednie umiejętności / wiedzę do podjęcia pracy. Może w normalnych procesach rekrutacyjnych te rzeczy nie zdarzają się zbyt często. ale w naszym położeniu musimy poradzić sobie z tą sytuacją.
Rafael
@Rafael, jeśli rozumiem, że poprawnie komentujesz, mówisz, że masz nakarmionych kandydatów „z innego miejsca” do oceny i że masz trudności z dokonaniem obiektywnej oceny kandydata bez wcześniejszej wiedzy o tym kandydacie. To brzmi bardziej jak problem systemowy w organizacji, w której pracujesz. Proponuję spotkanie z ludźmi, którzy wysyłają kandydatów na twój sposób, i pracuj z nimi, aby opracować system odfiltrowywania oczywiście nieodpowiednich kandydatów przed przeprowadzeniem z nimi wywiadu. Być może nawet poprosić o wdrożenie bardziej formalnego procesu aplikacyjnego.
S.Robins
@ s-robins dobrze zrozumiałeś ...
Rafael
1

Nie powiedziałeś, dla którego języka, ale dość łatwo jest sprawdzić czyjąś wiedzę. Zależy to również od poziomu, na który patrzysz, ale istnieje dość duża grupa pytań dotyczących pytań podczas rozmowy kwalifikacyjnej.

Niezależnie od tego, czy zdecydujesz się na wywiad, nie zadawaj pytań dotyczących wywiadu z „myśleniem lateralnym” .

rev BЈовић
źródło
2
prawdopodobnie nie określiłem języka, którego używamy do rozwijania, ponieważ uważamy, że dobry programista (z jego / jej kursem zdolności oddechowych) może nauczyć się programować w dowolnym języku, niezależnie od jego sintax.
Rafael
2
@Rafael norvig.com/21-days.html . Jak powiedziałem, zależy to od tego, czy szukasz młodszego programisty, czy starszego programisty.
BЈовић
Ponieważ mówię o większości kandydatów, którzy są świeżo upieczeni. Mam na myśli młodszych programistów, ale moje pytanie ma szerszy kontekst niż mój specyficzny osobisty proces rekrutacji
Rafael
@Rafael W takim przypadku zbyt wiele oczekujesz od juniora. Przeczytaj artykuł, który zamieściłem w powyższym komentarzu, gdzie mówi, ile czasu zajmuje opanowanie języka programowania.
BЈовић
nie mówię o opanowaniu określonego języka programowania, mówię o tym, aby uzyskać najlepszą osobę z najlepszym zestawem ogólnych umiejętności programistycznych (dlatego nie określam języka), nie mogę oczekiwać, że wszyscy który przychodzi jako kandydat na mistrza języka, który programujemy, i dlatego jesteśmy w stanie wprowadzić kurs pojemności, jeśli ludzie nie znają języka.
Rafael
1

Sugeruję, abyś zadał pytanie FizzBuzz i wynajął pierwsze, które mija. Dalsze testy zwykle są wadliwe, ponieważ nie każdy dobry programista podejdzie do problemu takiego jak ty, albo przeprowadzi wywiad bez jąkania się, albo pozna języki, o które troszczysz się, lub troszczy się, lub głupoty, takie jak wymiana liczb całkowitych bez trzeciej zmiennej (kogo to w każdym razie potrzebuje? to znaczy, skoro pamięć RAM przekroczyła 128 bajtów?).

Pomyśl o tym. Jeśli pytanie FizzBuzz eliminuje 199 z 200, to po prostu eliminuje setki wywiadów. Czy naprawdę zamierzasz przeprowadzić wywiad z setkami potencjalnych klientów?

Wydaje się, że po FizzBuzz maleje zwrot z inwestycji. Zakłada się, że 199/200 jest nawet w przybliżeniu bliski. I przypuszczam, że TWÓJ czas też jest cenny ...

Harold Bamford
źródło
2
Przerażające, jak FizzBuzz jest standardowym testem do oceny kompetencji programisty. Jest to jednak sprawdzony i prawdziwy test - nie mogę powiedzieć, ilu programistów ze stopniem CS nie może tego zrobić (w swoim „wybranym języku”)
Nodey The Node Guy
0

Nie jestem pewien, czy to komentarz lub odpowiedź, ale w zasadzie to, co powiedział Matthieu. Chcesz głupich, łatwych pytań, które zajmą minutę lub dwie (ale nie dłużej niż 5) minut i powinny dotyczyć różnych obszarów.

Takimi przykładami głupiego łatwego pytania jest pytanie o rekurencję, takie jak masz listę i musisz wydrukować ją w odwrotnej kolejności bez użycia pętli. Proste pytanie wyrażenia regularnego, jeśli wyrażenie regularne jest zwykle wykonywane w trakcie projektowania. Pytanie o bity i bajty, jeśli używasz C ++ (napisz szablon, który akceptuje char do długiej i drukuje reprezentację binarną. Specjalizacja nie jest wymagana, po prostu użyj sizeof (), aby obliczyć długość bitu)

Powinno to zająć około <= 3 minuty na pytanie

użytkownik2528
źródło
0

Zapytaj ich o najciekawsze wyzwanie programistyczne, które kiedykolwiek próbowali rozwiązać, ale nie potrafili, jakie podejście zastosowali podczas jego rozwiązywania, dlaczego nie mogli rozwiązać i jakie inne podejście według nich może rozwiązać.

To wystarczy, abym mógł ocenić umiejętności programistów jako programista.

Priyadarshi Kunal
źródło
0
  1. Czy mogą bronić tego, co twierdzą, że wiedzą? Umieścili go w CV / CV jako umiejętność lub coś, co zrobili przy innym projekcie. Zobacz, jak dogłębnie mogą przejść do tego tematu.
  2. Czy mogą nauczyć się czegoś nowego? Porozmawiaj o wysokim poziomie technologii, z której korzystasz, lub o czymś specyficznym dla firmy, w której pracujesz, i sprawdź, czy potrafią zrozumieć ten temat. Czy zadają inteligentne pytania? Czy potrafią wymyślić analogię? Czy przypomina to coś, co zrobili w innej branży lub technologii?

  3. Woleliby programować? Nie musi to być numer jeden na ich liście, ale muszą oni preferować pisanie kodu. Mam na myśli pisanie kodu i tworzenie czegoś, a nie siedzenie i rozmawianie o tym lub rysowanie na tablicy przez cały dzień. Nie po to, aby zminimalizować planowanie lub promować kodowanie kowbojskie, ale w końcu musisz mieć kod. Unikaj tych, którzy unikają klawiatury. To nie jest stanowisko kierownicze.

Możesz zrobić punktację w skali od jednej do dziesięciu rzeczy lub po prostu polegać na tym, że potrafisz wąchać swój własny rodzaj.

JeffO
źródło
0

Jeśli to sprawia, że ​​czujesz się lepiej, w prawie każdym kraju istnieją źli programiści. Problem polega na tym, jak je usunąć.

Pierwsze pielenie to życiorys. Jedną rzeczą, której szukam, jest dużo deklarowanych doświadczeń językowych i nic, co by opisało to, co zrobili w tym języku. Widziałem, że prawie wszyscy twierdzą, że znają każdy język, który kiedykolwiek wymyślono, ale z ich doświadczenia wynika, że ​​faktycznie pracowali tylko z Access i Visual Basic. Te idą prosto do kosza. 10 życiorysów trafia bezpośrednio do kosza (zwłaszcza dziesięć życiorysów od osób z mniej niż 2-letnim doświadczeniem, które zdobyłem). Od ostatnich stopni z niewielkim doświadczeniem, musisz być bardzo wybredny, jeśli chodzi o to, jak się prezentują. Najlepsze kandydatki są ostrożne ze swoimi życiorysami, nie mają błędów. Czy naprawdę szukasz kogoś, kogo tak mało obchodzi, że nie zadał sobie trudu, aby poprawić swoje CV?

Profesjonalnie przygotowane CV również trafiają do kosza. Po przeczytaniu setek CV możesz je wybrać, ponieważ używają dokładnie tego samego sformułowania. Nie możesz ufać zawartości w profesjonalnie przygotowanym CV i wiesz, że osoba ta nie zrobiła własnego przygotowania. Jest to osoba, która będzie polegać na innych w rozwiązywaniu jego problemów, czy naprawdę chcesz tego na stanowisku programistycznym?

Szukaj rzeczy, które wyróżniają osobę na tle wybranych. Jest to oczywiście trudniejsze w przypadku tych, które dopiero wyszły ze szkoły, ale szukaj osiągnięć, wkładu w open source itp.

Następnym marihuaną jest wywiad telefoniczny. Zapytaj o podstawowe pojęcia związane z faktyczną pracą, którą masz. Jeśli ludzie nie mają podstawowej wiedzy na temat pojęć, których potrzebujesz, nie warto zawracać sobie głowy osobistym wywiadem. Młodzi ludzie często myślą, że to niesprawiedliwe, ponieważ mogą sprawdzać wszystko w Internecie, ale prawda jest taka, że ​​nigdy nie spotkałem dobrego programisty, który musiałby wszystko sprawdzać w Internecie. Powinieneś mieć wiedzę na temat swojego zawodu, której nie musisz za każdym razem podnosić.

Po rozmowie telefonicznej powinieneś wybrać najlepszych 4-5 kandydatów i rozmowę kwalifikacyjną. Oczywiście, jeśli masz tylko 1-2 dobrych kandydatów, nie zawracaj sobie głowy przeprowadzaniem wywiadów z osobami, które już wyeliminowałeś. Teraz zadajesz trudne pytania i rozumiesz, jak podchodzą do problemów. Nigdy nie użyłbym testu fizzbuzz, ponieważ jest zbyt dobrze znany, więc odpowiedzi nic nie mówią. Zamiast tego rozwiąż niektóre problemy z własnej bazy kodu. Mogę dać im wymaganie i fragment kodu i zapytać, czy kod spełnia ten wymóg, a jeśli nie, to dlaczego i co mogą zrobić, aby go spełnić. Poprosiłbym ich, aby opisali najtrudniejszy problem programistyczny, który musieli rozwiązać, i jakie kroki podjęli, aby znaleźć odpowiedź. Zadałbym bardziej szczegółowe pytania techniczne. Pamiętaj, że starasz się przekonać o ich kompetencjach technicznych, ich zdolnościach do rozwiązywania problemów i debugowania oraz ich zdolności do dopasowania się do istniejącego zespołu. Zadaję również pytania, na które prawdopodobnie nie znają odpowiedzi, aby ocenić, jak dobrze radzą sobie ze stresem, jest to stresująca praca, nie chcę kogoś, kto złoży wywiad, ponieważ stres związany z pracą jest większy niż stres podczas rozmowy kwalifikacyjnej . Poszukuję mocnych stron w obszarach, w których jesteśmy obecnie słabi, i zdolności do pracy w zespołach i prezentowania się klientom (nasi deweloperzy zajmują się głównie użytkownikami), twoja lista może być inna. Chcę kogoś, kto złoży rozmowę kwalifikacyjną, ponieważ stres związany z pracą jest większy niż stres związany z rozmową kwalifikacyjną. Poszukuję mocnych stron w obszarach, w których jesteśmy obecnie słabi, i zdolności do pracy w zespołach i prezentowania się klientom (nasi deweloperzy zajmują się głównie użytkownikami), twoja lista może być inna. Chcę kogoś, kto złoży rozmowę kwalifikacyjną, ponieważ stres związany z pracą jest większy niż stres związany z rozmową kwalifikacyjną. Poszukuję mocnych stron w obszarach, w których jesteśmy obecnie słabi, i zdolności do pracy w zespołach i prezentowania się klientom (nasi deweloperzy zajmują się głównie użytkownikami), twoja lista może być inna.

HLGEM
źródło
-1

Kandydaci muszą mieć rzeczywisty problem do rozwiązania ze swobodą korzystania z dowolnej technologii.

Jeśli wyjdzie w jaskrawych kolorach, jest w!

SHOUBHIK BOSE
źródło