Czy przepełnienie bufora jest dopuszczalne od absolwenta programisty? Czy stawiamy poprzeczkę zbyt wysoko? Jakie są oczekiwane możliwości absolwentów / młodszych inżynierów?
Kontekst:
Obecnie rekrutujemy na stanowisko Junior Developer, pracując głównie w C na Linuksie.
W ramach tego procesu wymagamy od kandydatów wypełnienia testu kodu w wolnym czasie w C.
Do tej pory odrzuciliśmy dwóch kandydatów na tej podstawie, że ich kod, choć czytelny, aw jednym przypadku raczej idiomatyczny, cierpiał na błędy przepełnienia bufora z powodu niepowiązanych zapisów bufora.
[Edytować]:
- Wyraźnie prosimy o sprawdzenie kodu jakości produkcji pod kątem błędów.
- Zapewniamy ramy testowe i kompilacyjne dla kandydatów
[Aktualizacja]:
W wyniku tego wątku i rozmów, które osobiście przeprowadziliśmy z innymi programistami, zmieniamy sposób, w jaki przeprowadzamy testy kodu i kogo kierujemy podczas rekrutacji.
Zdecydowaliśmy, że kandydat, który nie jest w stanie naprawić lub zrozumieć przepełnienia bufora, oznacza, że byłby nieodpowiedni do wykonywanej przez nas pracy, w szczególności wziąłby więcej mentoringu, niż jest nam wygodnie. Dlatego nadal będziemy odrzucać kandydatów, którzy ostatecznie nie będą w stanie dostarczyć solidnej próbki kodu.
Wprowadziliśmy jednak pewne środki, aby proces rekrutacji był bardziej produktywny zarówno dla nas, jak i dla kandydatów.
W szczególności:
- Wyrażamy nasze oczekiwania bardziej jasno, z jasnym wyjaśnieniem, co rozumiemy przez jakość produkcji, oraz ostrzeżeniem, że kod powinien być niezawodny w odniesieniu do danych wejściowych i błędów.
- W opisie testu kodu łączymy teraz kandydatów z zasobami dotyczącymi programowania obronnego i standardowej biblioteki C.
- Zmieniliśmy grupę docelową z programistów i absolwentów Junior na grupy docelowe z odpowiednim doświadczeniem.
- W przypadku, gdy przesłany kod w jakiś sposób zawiedzie, ale w innym przypadku zostałby zaakceptowany, zapewniamy teraz minimalny przypadek testowy, który powoduje warunek błędu i dajemy kandydatom szansę na poprawienie swoich błędów (chyba że kod zostanie odrzucony z innego powodu). W razie potrzeby wskażemy również problematyczne linie / funkcje.
- Cel samych testów nieznacznie zmienił się teraz z filtra front-end na szansę zbudowania lepszego obrazu kandydata, w szczególności poinformuje o naszej rozmowie telefonicznej. To powiedziawszy, nadal jesteśmy gotowi odrzucać wyłącznie na podstawie kodu.
[Aktualizacja 2015-07-09]: Andy Davis z Nujob napisał interesujący i odpowiedni artykuł na temat korzystania z testu kodu z perspektywy kandydata i ten artykuł jest wart uwagi. Znajdź je tutaj .