Gli overflow del buffer sono accettabili da uno sviluppatore laureato? Stiamo impostando la barra troppo in alto? Quali sono le capacità attese degli ingegneri laureati / junior?
Contesto:
Attualmente stiamo reclutando per una posizione di Junior Developer che lavora principalmente in C su Linux.
Come parte del processo, richiediamo ai candidati di completare un test del codice a loro piacimento in C.
Finora abbiamo rifiutato due candidati sulla base del fatto che il loro codice, sebbene leggibile e in un caso piuttosto idiomatico, soffriva di errori di overflow del buffer a causa di scritture di buffer illimitate.
[Modificare]:
- Chiediamo esplicitamente un codice di qualità della produzione controllato per errore.
- Forniamo un quadro di prova e costruzione per i candidati
[Aggiornare]:
Come risultato di questo thread e delle conversazioni che abbiamo avuto con altri sviluppatori in prima persona, stiamo cambiando il modo in cui eseguiamo i test del codice e chi miriamo al nostro reclutamento.
Abbiamo deciso che un candidato che non è in grado di correggere o comprendere un buffer overflow significa che non sarebbe adatto al lavoro che svolgiamo, in particolare prenderebbe più tutoraggio di quanto non ci si senta a proprio agio. Pertanto rifiuteremo ancora i candidati che non potranno eventualmente presentare un campione di codice valido.
Tuttavia, abbiamo messo in atto alcune misure per rendere il processo di assunzione più produttivo sia per noi che per i candidati.
In particolare:
- Rendiamo le nostre aspettative più esplicite, con una chiara spiegazione di cosa intendiamo per qualità della produzione e un avvertimento che il codice dovrebbe essere solido per quanto riguarda input ed errori.
- Colleghiamo ora i candidati alle risorse sulla programmazione difensiva e alla libreria standard C nella descrizione del test del codice.
- Abbiamo modificato il nostro target di riferimento da sviluppatori e laureati junior a persone con esperienza rilevante.
- Nel caso in cui il codice inviato fallisca in qualche modo ma venga altrimenti accettato, ora forniamo un caso di prova minimo che causa la condizione di errore e offre ai candidati la possibilità di correggere i propri errori (a meno che il codice non venga rifiutato per qualche altro motivo). Indicheremo anche linee / funzioni problematiche, se del caso.
- L'obiettivo dei test stessi è ora leggermente cambiato da un filtro front-end a una possibilità di creare un'immagine migliore del candidato, in particolare informerà la nostra discussione telefonica. Detto questo, siamo ancora disposti a rifiutare in base esclusivamente al codice.
[Aggiornamento 2015-07-09]: Andy Davis di Nujob ha scritto un articolo interessante e pertinente sull'uso di un test del codice dal punto di vista del candidato, e vale la pena guardare l'articolo. Lo trovi qui .