Szukam niewielkich projektów programistycznych, które mogę dać potencjalnym pracownikom, aby ocenili swoje umiejętności programistyczne. Będą to programiści bezpośrednio po studiach. Szukam projektów, które zajęłyby komuś kilka godzin, a oni wysłaliby odpowiedzi e-mailem po rozmowie kwalifikacyjnej.
Jednym z przykładów byłoby pobranie tego akapitu tekstu i zwrócenie listy unikatowych słów w alfabecie. Po każdym słowie powiedz mi, ile razy to słowo się pojawiło i w jakiej formie wyraz był doceniany.
Czy ktoś ma jakieś dobre sugestie?
Odpowiedzi:
Już dawno doszedłem do wniosku, że nic, co ktoś może zrobić w krótkim czasie, nie może mi powiedzieć nic użytecznego na temat tej osoby. Ale każdy dobry kandydat ma już napisane osobiste projekty, które mogą wiele powiedzieć. Wymieniłem więc konkretne wyzwania na „daj mi kawałek kodu, z którego jesteś dumny i chętnie stemplujesz swoje imię”.
Ich wybór projektu mówi więcej niż jakieś godzinne zadanie. A potem możesz poświęcić godzinę na dyskusje, aby dowiedzieć się więcej.
źródło
Mam już dość tego badziewnego badziewia. Byłem w miejscach, w których prosiłem mnie o próbki kodu, rozerwałem je na strzępy, a potem poprosiłem o wyjaśnienie przykładowego kodu z ich systemów, który wyglądał, jakby został napisany przez roztrzaskanych 2-latków. Poproszono mnie o implementację niejasnych algorytmów sortowania, usług sieciowych, gui, struktur danych (zawsze albo drzewa, albo listy połączonej). Każdy smak majstrowania irytujących pytań na temat tego, co uważa ankieter, jest najważniejszą częścią programowania.
W końcu to wszystko jest prawie bezużyteczne. Najlepszym sposobem oceny pracownika jest zatrudnienie go na 30 dni i sprawdzenie, jak dobrze wykonuje pracę. Poświęć cały czas na rozwijanie testów, a to nie powie ci nic o tym, jak ktoś działa na co dzień.
źródło
Pozwolenie komuś na wykonanie praktycznego projektu we własnym czasie niekoniecznie oznacza, że to on to robi.
Każdy przyjeżdża wcześnie na rozmowę kwalifikacyjną (przynajmniej powinien). Mamy arkusz „podczas oczekiwania”, aby mogli pracować, dopóki nie będziemy gotowi ich zobaczyć. Zawiera osiem (8) pytań, które sprawdzają wiedzę kandydatów w języku, którego używamy głównie.
Nie szukamy odpowiedzi na wszystkie pytania, ponieważ każdy może je poprawnie uzyskać, mając przed sobą komputer. Szukamy procesu, czy w ogóle podejmą pytanie, w jaki sposób dochodzą do odpowiedzi.
Kiedy przychodzimy na rozmowę, omawiamy ją z nimi i odpowiadamy na wszelkie pytania, które mogą mieć, co może również prowadzić do uzyskania prawidłowej odpowiedzi. Pozwala nam to również zapytać, w jaki sposób uzyskali odpowiedzi, na które wpadli.
To, w połączeniu z poprzednimi pracami, jest najlepszym sposobem na odfiltrowanie kandydatów.
AKTUALIZACJA 2016/06/15
Znacząco zmieniliśmy nasz proces zatrudniania programistów.
Faza 1: 15-minutowy wywiad telefoniczny, w którym zadajemy 7 pytań. Pierwsze 2 to „Jaka jest najfajniejsza rzecz, nad którą pracowałeś?” (nie musi być związany z programowaniem) i „Co piszesz dla zabawy w wolnym czasie?”.
Faza 2: Mini projekt, który realizują we własnym czasie. Następnie udostępniamy im zrzut ekranu, który pokazuje nam, co zbudowali. Podczas udostępniania ekranu zachęcamy ich również do wprowadzenia dwóch zmian w projekcie, a następnie obserwujemy, jak pracują nad nim i działają.
Faza 3: rozmowa osobista.
Ten proces pozwala nam od razu ustalić dopasowanie kultury (faza 1). Jeśli potrafią wykonać pracę i faktycznie przeprowadzić rozmowę (faza 2). Na koniec upewnij się, że ich wartości są zgodne z tym, czego szukamy (faza 3).
źródło
Możesz sprawdzić fantastyczne Cyber-Dojo Jona Jaggera .
Jest to zintegrowane środowisko internetowe zaprojektowane do celowej praktyki programowania opartego na testach i poznawania dynamiki zespołu. Ma wiele małych zadań programistycznych (kata) i obsługuje wiele języków, od Python i Ruby po Java i C ++.
W przeciwieństwie do IDE zaprojektowanych pod kątem produktywności, nie ma uzupełniania kodu, podświetlania składni ani automatycznego refaktoryzacji, więc możesz zobaczyć, co twój rozmówca może zrobić bez nich.
Najlepszą rzeczą jest to, że po wykonaniu kata możesz wrócić i spojrzeć na czerwony / zielony postęp (a może nie, jeśli nie robią TDD * 8 ') każdego z kata. Każda kompilacja / test zatwierdza zmiany w repozytorium git wraz z wynikami testu.
Myślę, że użycie tego do testów kodowania rozmowy kwalifikacyjnej może wiele powiedzieć o nie tylko zdolności kandydatów do rozwiązania problemu, ale także o ich podejściu do rozwiązywania problemów i procesie, którego używają, gdy nie są ograniczone przez czynniki zewnętrzne, wystarczy wybrać kata odpowiednie dla czas, jaki chcesz spędzić na kandydacie.
Jeśli chcesz mieć własny serwer CyberDojo, cały projekt można znaleźć na github, a stamtąd jest nawet podłączona wirtualna maszyna Linux pod klucz, co oznacza, że zakładając, że masz już zainstalowany VMware player lub VirtualBox , możesz zacząć działać w kilka minut pobierania urządzenia!
źródło
Rozmawiałem tylko z jedną firmą, która to zrobiła. Zadali arkusz pytań 6 lub 7 problemów. Instrukcje miały stworzyć metodę rozwiązania każdego problemu.
Jedną częścią zadania było uświadomienie sobie, że można ponownie użyć kodu. Problemy mogą korzystać z kodu z innych rozwiązań. To też nie było sekwencyjne. Na przykład pytanie 3 można napisać przy użyciu metody użytej dla pytania 5.
Sugerowałbym wypróbowanie czegoś takiego.
Co do pytań? Niektóre pytania początkowe na stronie Project Euler są dobre.
Możesz także wypróbować prostą grę, jeśli chcesz zobaczyć, jak mogą złożyć projekt.
Lub, jeśli nie chcesz czegoś wymyślić, poproś ich o przesłanie kodu z ostatecznego projektu.
źródło
Aby poprosić ludzi o ukończenie projektu, powinieneś mieć określony zestaw umiejętności, które chcesz ocenić i zaprojektować projekt w celu przetestowania tych umiejętności.
Czego szukasz z tym pytaniem? Ile jest sposobów rozwiązania tego problemu i co każde podejście mówi o osobie, która napisała odpowiedź? Czy umiejętności przedstawione w skutecznej odpowiedzi na to pytanie są tymi samymi umiejętnościami, które są najważniejsze dla Twojej firmy?
Nie chcę odpowiedzi na te pytania; Chcę tylko, abyś pomyślał o odpowiedziach, zanim poddasz grupę kandydatów swojemu procesowi. Jeśli wiesz, jakich umiejętności szukasz, zadawanie pytań w celu ich znalezienia nie jest trudne. Jeśli użyjesz pytania innej osoby, nie do końca rozumiejąc, co zostało zaprojektowane do oceny (jeśli w ogóle), to po prostu oszukujesz siebie i marnujesz czas wszystkich.
źródło
W jakim języku by to napisali? Jeśli wychodzą ze szkoły, która skupia się głównie na C, nie byłoby tak szybko pisać, jak ta, która uczy Python / Perl / Ruby itp. Lub nawet Java lub C #. Niemniej jednak jest to dobry mały test.
Proponuję te łatwiejsze podczas rozmowy. Żadnych podchwytliwych pytań. W tej sprawie jestem z TMN. Daj im kilka funkcji, które wykonują podstawowe zadania i zapytaj, co robią (czytanie kodu innych osób). Następnie daj im kilka podstawowych zadań (<20 linii) do pisania w wybranym przez siebie języku. To powinno wystarczyć, aby poziom wejściowy wiedział, czy potrafią kodować, czy nie (na poziomie wejściowym). To wraz z wywiadem i GPA powinno dać ci dobry pomysł na to, co musisz wiedzieć.
źródło
Poproś, aby wdrożyli grę życia Conwaya dla dowolnego języka, na który patrzysz, używając paradygmatów projektowania tego języka.
Gra życia Java lub C # Conway powinna być zorientowana obiektowo, LISP lub F # działałyby itp.
źródło