I buffer overflow sono accettabili da uno sviluppatore laureato? Stiamo impostando la barra troppo in alto? Quali sono le capacità previste per i laureati / ingegneri 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 respinto due candidati sulla base del fatto che il loro codice, benché leggibile e in un caso piuttosto idiomatico, ha sofferto di errori di buffer overflow dovuti a scritture del buffer non limitate.
[Edit]:
- Richiediamo esplicitamente un codice di qualità di produzione con controllo degli errori
- Forniamo un test & costruire un quadro per i candidati
[Aggiornamento]:
Come risultato di questa discussione e delle conversazioni che abbiamo avuto di persona con altri sviluppatori, stiamo cambiando il modo in cui eseguiamo i test di codice e chi miriamo con il nostro reclutamento.
Abbiamo deciso che un candidato che non è in grado di risolvere o capire un sovraccarico del buffer significa che non sarebbe adatto al lavoro che svolgiamo, in particolare che assumerebbe più mentoring di quanto non ci senta a nostro agio. Pertanto respingeremo ancora candidati che non possono alla fine presentare un robusto esempio di codice.
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 ciò che intendiamo per qualità della produzione e un avvertimento che il codice dovrebbe essere robusto in relazione all'input e agli errori.
- Ora colleghiamo i candidati alle risorse sulla programmazione difensiva e la libreria standard C nella descrizione del test del codice.
- Abbiamo cambiato il nostro pubblico di destinazione da sviluppatori e laureati junior per indirizzare le persone con un'esperienza pertinente.
- Nel caso in cui il codice inviato fallisca in qualche modo ma sarebbe altrimenti accettato, forniamo ora un caso di test 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 opportuno.
- L'obiettivo dei test in sé è leggermente cambiato da un filtro front-end alla possibilità di costruire un'immagine migliore del candidato, in particolare informerà la nostra discussione telefonica. Detto questo, siamo ancora disposti a rifiutarci basandoci esclusivamente sul codice.
[Aggiornamento 2015-07-09]: Andy Davis di Nujob ha scritto un articolo interessante e pertinente sull'uso di un test di codice dal punto di vista del candidato, e l'articolo vale la pena guardare. Trovalo qui .