W ramach wywiadu: jaki jest najlepszy sposób na wiarygodną identyfikację, gdy ktoś jest doskonałym programistą . Rozumiem przez to, że jest jednym z tych, którzy są 10-15 razy wydajniejsi / szybsi / lepsi niż jego rówieśnicy w kierunku dolnego końca spektrum.
Wielu z nas słyszało o problemie z FizzBuzz jako sposobem na wyeliminowanie słabszych. Z pewnością poświęcenie 5–10 minut na rozwiązanie tego problemu jest poważnym wskaźnikiem tego, że kandydat jest słabym kandydatem. Uważam, że dobry wskaźnik jest w stanie rozwiązać to tak szybko, jak tylko możesz napisać. Nie wydaje się to jednak wystarczające.
Czy to może być coś w rodzaju nadania mu średnio skomplikowanego programu buggy i zobaczenia, jak szybko może go przerobić i zidentyfikować wszystkie problemy z nim związane?
źródło
Odpowiedzi:
Przepraszam każdego, kto nie dba o długie odpowiedzi, ale uważam, że bardzo ważne jest zakwalifikowanie kandydatów przed ich zatrudnieniem. Każdy, kto przeprowadził znaczną liczbę wywiadów w tej branży, wie, że większość kandydatów nie przetrwa pierwszych 15-30 minut rozmowy, więc większość tej listy nie będzie potrzebna. Pamiętaj tylko, jak drogie (finansowo i emocjonalnie) jest zwolnienie kogoś, zanim odrzucisz moją listę jako przesadę. Próbowałem tutaj wymienić tematy moich wywiadów według ważności.
Ogólna inteligencja (łamigłówki / łamigłówki logiczne)
Wiedza informatyczna
Ćwiczenia programistyczne
Znajomość technik programowania obiektowego i typowych wzorców projektowych
Analiza algorytmów ( złożoność O (n) w czasie wykonywania i wymagania dotyczące przechowywania)
Wykorzystanie narzędzi i metodologii
Znajomość typowych luk w zabezpieczeniach i ataków
Podstawowa matematyka
Kryptografia
Matematyka dyskretna
Możesz także zajrzeć do książki Wywiady programistyczne wyeksponowane . To dobre odniesienie do tematu.
źródło
Ach, odwieczne pytanie.
W tym roku przeprowadziłem wiele wywiadów (mam jutro dwóch kandydatów), a z mojego doświadczenia wynika, że w zatrudnieniu chodzi bardziej o przeczucie i umiejętności ludzi, a mniej o wiedzę techniczną.
Nie spiesz się z CV. Niektóre CV można odrzucić w ciągu kilku sekund, inne zajmują pół godziny. Czasami myślę o kandydacie opartym na CV znacznie dłużej niż przeprowadzam z nim wywiad. Kilka razy przygotowałem pytania do rozmowy kwalifikacyjnej specjalnie dla tego kandydata, chociaż zazwyczaj nie przygotowałem pytań.
Wiedza techniczna - potrzebuję minimum, które zazwyczaj jest dość łatwe do ustalenia. Jeśli masz wątpliwości, podczas wywiadu mów o projektach, o których wspomniał w CV, i idź tak głęboko, jak potrzebujesz. Zazwyczaj wystarcza to, aby powiedzieć ci, co wie i co sprawia, że tyka. Edukacja nie jest ważna, poprzednie prace mają znaczenie, możliwe projekty osobiste osiągają wysokie wyniki.
Zapytaj, co chce robić i dokąd chce iść ze swoją karierą - czy potrzebujesz tego, co ma i czy możesz zapewnić to, czego chce? Poza tym pod koniec rozmowy zwykle pytam o preferowaną pensję. Jeśli jest poza moim zasięgiem lub jeśli nie zapłacę tyle za to, co wie, to tutaj kończymy wywiad.
Co najważniejsze, kandydat musi pasować do zespołu i muszę mieć pewność, że będziemy w stanie współpracować. Nie muszę go lubić, ale muszę być w stanie sobie z nim poradzić, a on musi być w stanie mnie obsłużyć. Jeśli tak nie jest, przejdę, ponieważ nie będę w stanie wykorzystać jego wiedzy technicznej. Z drugiej strony, jeśli tak jest, a jeśli jest on szybkim uczniem, jego brak wiedzy technicznej nie powstrzyma mnie przed zatrudnieniem go.
Wyszkoliłem dziewczyny z działu HR, aby przekazywały mi wszelkie CV, gdy tylko je otrzymają; Umawiam się na rozmowę osobiście, tak szybko jak to możliwe (najlepiej pojutrze po otrzymaniu CV za dobre CV). Potem dostaje pół godziny lub godzinę rozmowy ze mną i co najmniej jednym współpracownikiem (zwykle moim szefem lub członkiem zespołu), gdzie go poznaję i odpowiadam na wszelkie pytania. Nawet jeśli odrzucę jego podanie na miejscu, będzie miał 20-30 minut na wycieczkę po firmie i mówię o tym, co robimy i jak to robimy. Potem wysyłam go do HR na test psychologiczny i trochę naprawdę bardzo podstawowego kodowania papierowego / SQL. Oba testy prawie nigdy nie odgrywają znaczącej roli w mojej decyzji, jest to raczej weryfikacja, którą właściwie oceniłem w wywiadzie. Po wynikach jest 15-minutowa rozmowa, w której składam mu ofertę, a jeśli negocjujemy warunki, z których oboje jesteśmy zadowoleni, jest zatrudniony.
To proces, o który musiałem walczyć poprzez biurokrację firmy, po tym, jak straciłem kilku świetnych kandydatów, i który działa, ponieważ to ja decyduję o zatrudnieniu (chociaż słucham rad zarówno HR, jak i współpracowników, mój słowo jest ostateczne). Więcej decydentów, dłuższy proces. Im dłuższy proces, tym bardziej musisz być Google, aby uzyskać najwyższe plony.
Jak tylko upewnię się, że to nie pasuje, kończę wywiad, on dostaje wycieczkę po firmie i to koniec. Może to potrwać dwie minuty przez telefon podczas planowania rozmowy. Nawet jeśli odrzucisz kandydata, sprzedaj firmę. Jeśli wykonałeś dobrą pracę, dobry zatrudnienie może pochodzić z ust odrzuconych kandydatów.
Również jedna wskazówka. Wysyłaj listy odrzucające (lub e-maile) dla każdej otrzymanej aplikacji. W mojej obecnej firmie zwykle zostawiam to HR (oprócz tych, które mówię podczas rozmowy), ale w pewnym momencie bezcenne było uzyskanie zachwyconej odpowiedzi odrzuconego kandydata w stylu „DZIĘKUJĘ! Jesteś pierwszą firmą, która faktycznie odpowiedział, zamiast zostawiać mnie zastanawiającego się, czy kiedyś odpowiedzą! ”
źródło
Ta odpowiedź jest trochę nieszablonowa, ale myślę, że jest to cenna kwestia.
Najlepsi programiści rzadko przeprowadzają wywiady. Nie muszą . Jeśli twoja firma jest szczególnie zmieniająca świat lub ekscytująco spowita tajemnicą, lub kilku programistów, których szanują, poszło tam, to mogą się ubiegać, ale zwykle wielcy programiści dostają pracę za pośrednictwem swojej sieci współpracowników, nie wysyłając CV.
Więc: najlepszym sposobem, aby powiedzieć doskonałemu programistowi podczas rozmowy kwalifikacyjnej, jest to, że go tam nie ma .
źródło
Każda odpowiedź musi zawierać próbki kodu. Zatrudnianie programisty bez zobaczenia jego kodu lubi zatrudniać szefa kuchni bez próbowania gotowania.
źródło
Być może „doskonały” programista nie przychodzi na rozmowę. Prawdopodobnie musisz go ukraść od kogoś innego.
źródło
Jednym ze sposobów, by powiedzieć pasjonatom programistów z programistów „Chcę tylko pracy”, jest zapytanie ich, jaką książkę czytają w tym tygodniu. Następnie zapytaj ich o książki, które przeczytali w ciągu ostatnich tygodni.
Przekonałem się, że namiętni programiści ZAWSZE czytają i zwykle lista zawiera kilka programów / komp. Sci. książki z najnowszej listy.
Nie chodzi tylko o nadążanie za tym zawodem - namiętni programiści mają chęć i zamiłowanie do programowania, a także pochłaniają materiały na różne tematy - nie tylko w jakim języku używają teraz, ale metodologie, inne języki (szczególnie nowe lub „dziwne” lub starożytne), inne aspekty informatyki (może robotyka, sztuczna inteligencja, gry lub…)
Jeśli w ogóle nie mają ostatniej listy książek, to z mojego doświadczenia prawdopodobnie nie są zbytnio programistami.
Twoje zdrowie,
-R
źródło
Istnieją różne przedziały czasowe, w których ktoś może być „szybki”: niektórzy sprytni ludzie potrafią rozwiązywać trudne zagadki w kilka sekund, ale niektórzy sprytni ludzie produkują dużo dobrego kodu w ciągu miesiąca, nawet jeśli nie są tacy szybcy podczas pytań podczas rozmowy kwalifikacyjnej.
Zapytaj kandydatów, czy są aktywni w jakimkolwiek projekcie open source, w którym możesz przejrzeć część ich kodu, i poświęć trochę czasu na czytanie archiwów list mailingowych tych projektów i zapisywanie dzienników. To powie Ci o wiele więcej niż cokolwiek, co kandydaci mogą wykazać podczas rozmowy kwalifikacyjnej. (Oczywiście nie może to zastąpić wywiadu, ponieważ nie wszyscy dobrzy koderzy wykonują prace typu open source).
źródło
Książka „ Smart and Gets Things Done: zwięzły przewodnik Joela Spolsky'ego po poszukiwaniu najlepszych talentów technicznych ” może pomóc w znalezieniu odpowiedzi.
Spis treści:
Pomocny może być również artykuł Joela „Przewodnik partyzancki po rozmowach kwalifikacyjnych (wersja 3)” .
Oraz artykuł Steve Yegge na temat „Gotowe i inteligentne” .
źródło
Zadaj im serię pytań, które wymagają kodowania i sprawią, że pytania staną się trudniejsze. Jeśli wydaje się, że podoba im się wyzwanie, prawdopodobnie masz je na żywo.
Jeśli nie potrafią odpowiedzieć na pierwsze łatwe pytanie, na przykład „napisać pętlę for” lub coś głupio łatwego, to wiesz, że ta osoba nie umie kodować.
źródło
Niech mają kod na tablicy. Tylko w ten sposób będziesz w stanie stwierdzić, czy potrafią pisać kod.
źródło
Powinieneś przede wszystkim oceniać pracę, którą już wykonali. Jakikolwiek kod lub pomysły, które ktoś generuje podczas wywiadu z niepokojem, są kiepskim dowodem na to, co mogą faktycznie stworzyć w zespole.
Aby wykonać wyzwania związane z kodowaniem, używaj komunikatorów internetowych z czymś takim jak codepad.com i pozwól im to robić w zaciszu własnego domu. Czy piszesz dużo kodu na tablicy przed szefem, z 30-minutowym terminem i premią na linii? Ja nie.
Czy więc wywiad nie ma sensu? Nie, ale należy położyć na nich nacisk na wyjaśnienie, co zrobili i co dokładnie wnieśli.
Będziesz także narażony na wszelkiego rodzaju uprzedzenia psychologiczne, gdy spotkasz kogoś twarzą w twarz. Nie przypadkowo zatrudnij programistę, ponieważ nawiązał lepszy kontakt wzrokowy lub jest wyższy niż ktoś inny. Aby ominąć te kwestie, przeprowadziłbym jak najwięcej wywiadów za pośrednictwem wiadomości błyskawicznych / e-mail, zanim spotkasz się z nimi osobiście.
źródło
Język nie ma znaczenia. Logika robi. Mam na myśli, że IDE i kompilatory są obecnie tak dobre, że każdy dobry programista może wybrać dowolny język (a może nie asembler) w ciągu tygodnia; stać się przyzwoitym za kilka tygodni i być bardzo dobrym za kilka miesięcy.
To jego mózg musi potwierdzić. I robisz to, moje gadanie. Proszę ich o rozwiązywanie prostych problemów. Nie przez pisanie kodu, ale przez przejście mnie przez ich logikę, aby znaleźć rozwiązanie.
Ale przyznaję, że jeśli nie potrafi napisać prostej pętli liczącej od 1 do 10, masz kłopoty.
źródło
Przede wszystkim istnieje jeden sposób, w jaki możesz znaleźć pomysł, zanim jeszcze rozpocznie się rozmowa:
Jeśli mają bloga lub współuczestniczą w co najmniej jednym projekcie open source, po prostu spójrz na kod i artykuły, które napisali. Po pierwsze, jeśli zrobili jedno z nich, to mają inicjatywę, aby załatwić sprawę. Możesz także porównać te rzeczy z doświadczeniem zawodowym, które wymienili w swoim życiorysie i dowiedzieć się, czy wrócą do domu i dowiedzą się więcej po pracy, czy też wrócą do domu i zapomną o pracy po 17:00.
Zasadniczo, czy pasjonują się programowaniem, czy nie? To jest prawdziwe pytanie.
źródło
Najlepszym moim zdaniem jest obecność dobrego programisty w wywiadzie.
Tylko ekspert może ocenić, czy wnioskodawca po prostu zna wiele pytań na rozmowę kwalifikacyjną lub czy rzeczywiście myśli o problemach i może przejść do szczegółów. Pamiętaj, że nie chcesz zatrudniać ludzi do rozwiązywania zagadek z rozmową kwalifikacyjną, chcesz ich zatrudnić, aby wykonali rzeczywistą pracę.
Zagadki mają wykluczać osoby, które nie rozumieją podstaw. Jeśli chcesz sprawdzić swoje umiejętności, przygotuj kilka rzeczy, o których (lub Twój „dobry programista”) możesz szczegółowo przyjrzeć się i skupić na tym, o czym musi pomyśleć kandydat przez chwilę. Jak podchodzi do problemów, których nie od razu zna rozwiązanie?
źródło
Nie sądzę, że powinieneś rozmawiać o pasji podczas wywiadu. Szczerze mówiąc, brzmi to jak firma, która szuka „pasji”, tak naprawdę oznacza „pracować bez pieniędzy na ten pomysł”.
Pasja nawet nie gwarantuje doskonałości. Mam na myśli, że spędzam prawie całe życie programując, czytając o programowaniu, ucząc się szalonych języków, takich jak Erlang lub Clojure, i nie dostaję za to żadnego wynagrodzenia. A jednak jestem do kitu.
Uważam, że doskonały programista powinien mieć na koncie udane projekty, w które byli aktywnie zaangażowani. W związku z tym zmuszanie programisty do pisania czegoś powyżej podstawowego FizzBuzz jest niepotrzebne w wywiadzie. Opowiedz o swoich wcześniejszych projektach i tym, co zrobili. Czy zatrudniasz programistów do rozwiązywania kostek Rubika i liczenia kulek, czy też pracujesz nad długimi i dużymi i wyczerpującymi projektami oprogramowania zawierającymi ponad 50 linii coe?
źródło
http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/
Z artykułu:
Kryteria w punktorach
Podsumowując, oto kilka wskaźników i przeciwwskazań, które powinny pomóc Ci rozpoznać dobrego programistę.
Pozytywne wskaźniki :
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ą
źródło
Doskonały programista będzie w stanie współpracować również z równorzędnymi użytkownikami o niższym spektrum. Tak długo, jak potrafią wykonać test i nie pogrążają się w swoim ego, masz dobrego kandydata, prawda?
Ten test fizzbuzz jest jednak trochę zabawny. Rozwiązanie, o którym mogę pomyśleć, wykorzystuje operator modulo. Które znam tylko z obliczania współrzędnych mapowania postaci (nigdy nie wspomnianych w szkole lub na studiach). Czy przeciętny programista wiedziałby o tym, czy miałbym wykształcenie?
źródło
Jednym z kryteriów, które stosuję, jest dostrzeżenie „rodzaju” języków i narzędzi, nad którymi pracował, zarówno w projektach akademickich, jak i zawodowych, i co dokładnie osiągnął. Czy zawsze pracował na poziomie aplikacji przy użyciu standardowych bibliotek (zawsze facet w języku C # lub VB6?) Czy też zrobił projekt wykorzystujący C w Linuksie, zajmujący się hardcorowymi rzeczami, takimi jak wskaźniki, zarządzanie pamięcią, rekurencja, synchronizacja procesów, wzajemne wykluczanie, zdarzenia itp. Jeśli zawsze używał tych podstawowych i podstawowych pojęć pod jakąś warstwą abstrakcji, będę wątpił.
Jest to oczywiście dodatek do zmuszania go do pisania kodu. Nic tego nie zastąpi. Zależy mi jednak na tym, że niektórzy ludzie potrafią pisać kod szybciej niż inni, a ludzie mają inny czas reakcji w świetle reflektorów podczas wywiadu.
źródło