Come intervistatore, chiedere a un candidato di trovare errori in un piccolo codice di esempio. È giusto? [chiuso]

7

Abbiamo intervistato avanti e indietro per circa due anni, e l'ho gestito da circa 30 candidati. Ho scritto circa 20 righe di codice che eseguono un'operazione relativamente semplice, ma contiene un sacco di errori. Nessuno di questi sono errori di sintassi. Gli errori vanno da cattiva gestione della memoria, tipi di dati errati, problemi di multithreading, uso improprio delle parole chiave e un paio di errori funzionali che darebbero un risultato indesiderato.

Le persone diventano molto nervose durante questa domanda. È una domanda giusta da chiedere? L'obiettivo è quello di ottenere un'idea del loro livello di comfort con il linguaggio (l'obiettivo C ha alcuni comportamenti molto strani, e la maggior parte dei candidati che ottengono sono relativamente inesperti in ObjC in particolare rispetto ad altre lingue), oltre a vedere la loro capacità di riconoscere logici problemi nel codice straniero altrimenti.

Una volta che un candidato ha effettuato un primo passaggio, spesso indicherò linee specifiche che hanno errori rimanenti su di esse e vedrai quanto tempo ci vuole per ottenere una corretta identificazione e / o correzione da parte loro.

Nella nostra azienda, questo è uno scenario del mondo reale, in quanto i programmatori verrebbero inseriti direttamente in un'app di 100k line e avranno bug da correggere, e abbiamo bisogno di persone che stiano comode lavorando con il codice di altri 6 programmatori.

Tuttavia, oggi, un altro dei nostri intervistatori mi ha detto che odiava questo problema (non capivo bene quale fosse la sua ragione, ammettiamolo). È questo qualcosa che dovrei continuare a chiedere, o dovrei cercare vie alternative?

    
posta puzzl 01.05.2014 - 23:24
fonte

3 risposte

16

Questo è perfettamente giusto. Leggere il codice è intrinsecamente più semplice della scrittura del codice, quindi verificare se possono eseguire le attività di base più professionali è una parte molto importante di un'intervista. Per i candidati junior potrebbe essere difficile aspettarsi che eseguano il debug di qualcosa su carta, dato che sono ancora dipendenti dai debugger. Se potessi avere il programma rotto su un computer, potrebbe essere meglio.

Non compro neanche l'intero argomento della "situazione di pressione è ingiusto". I clienti e / o i boss respireranno inevitabilmente la gola del candidato quando si troverà qualche problema critico. Il modo in cui lavorano sotto pressione è parte della valutazione di come faranno il lavoro.

Tutto ciò che ha detto, alcune brave persone non faranno bene a questo genere di cose. Non sono critici, o sono più deliberati (o collaborativi) o semplicemente inesperti del tuo particolare problema (semplice o no).

Questo non lo rende meno giusto - devi solo essere sicuro di dare conto anche di altre cose.

    
risposta data 01.05.2014 - 23:32
fonte
3

Per inciso, sarei interessato a sapere perché l'altro intervistatore ha pensato che il problema fosse intrinsecamente ingiusto, ma sulla sostanza della tua domanda:

Dipende piuttosto da ciò che stai cercando di ottenere. Se il tuo obiettivo è reclutare un guru Objective C, allora il test è chiaramente equo.

Tuttavia, se stai cercando un programmatore Objective C per operaio, allora forse no. Il codice è tipico di ciò che troverà nella tua organizzazione o è puramente un esercizio accademico? Alcuni tipi di problemi di codice a volte variano da un'organizzazione all'altra.

Inoltre, il modo in cui viene organizzato il test potrebbe essere un fattore:

  • Viene detto quanti problemi ci sono nel codice?
  • Sono a tempo?
  • Gli intervistatori sono seduti nella stanza o vengono lasciati soli?
  • Sono autorizzati a fare domande?

Mentre fai notare che ci si aspetta che aggiusti questi problemi giorno per giorno, non lo faranno da un codice sorgente stampato.

Il test dell'acido, naturalmente, è se stai ricevendo il tipo giusto di personale una volta saltato il cerchio. Se lo sei, sarei incline a seguirlo.

    
risposta data 02.05.2014 - 12:21
fonte
0

La domanda non è se sia "giusto" o meno, ma se il test a) stia eliminando i candidati che non hanno le competenze necessarie per il lavoro e b) lasciando passare quei candidati che lo fanno. Finché il test fa bene questo lavoro, dovresti continuare a chiederglielo.

I dettagli del test dipendono dalle esigenze dell'utente e dagli standard che si desidera mantenere. Quando mostro a un candidato una parte di codice in cui una chiamata API del database potrebbe sollevare un'eccezione se il record è assente ma il codice che utilizza la chiamata API viene scritto per trattare tutte le eccezioni generate dalla chiamata a significa "il record è assente", mi aspetterei che un candidato si adatti al qualsiasi lavoro che offro per segnalare che il codice sta ingoiando le eccezioni. Non ho una posizione per qualcuno che non può vedere questo problema.

Un modo per ridurre l'opportunità di disagio potrebbe essere semplicemente avere un test di codifica estremamente semplice prima di avere il test "trova gli errori". Una volta che i candidati superano il controllo documentale iniziale (vale a dire il loro curriculum sembra buono), trovo che la maggior parte dei candidati che non riescono a superare non riescono alla semplice fase di test di codifica.

    
risposta data 02.05.2014 - 14:17
fonte

Leggi altre domande sui tag