Quali sono i pro ei contro per il datore di lavoro di domande di codice durante un'intervista? [chiuso]

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/21230

  •  22-10-2019
  •  | 
  •  

Domanda

Il Test Joel domanda # 11 è: "fare nuovi candidati scrivono codice durante il loro colloquio?". Quali sono gli argomenti a favore e contro di chiedere nuovi candidati al codice di scrittura durante l'intervista e di prendere una decisione su di esso?

È stato utile?

Soluzione

non vedo il cons. Un'intervista ha molte parti, e un candidato deve essere approvato 'in alto nella catena' un paio di volte.

intervista ~ 10 persone settimanali. Io davvero, davvero, davvero apprezzato il fatto che delle risorse umane ha fatto tutto il lavoro di fondo e mi ha presentato con abbondanza di note. Con il tempo di arrivare a me, è il momento per me di segnare i loro test.

I test dipendono esclusivamente dalla posizione. In generale, cerco di sondare:

  • Generale abilità di programmazione. Si può utilizzare in modo efficace gli operatori? Si può concepire un sistema numerico che ha una radice che non è 10?

  • Sai come fare quello che stiamo assunzione di fare?

  • Valutazione dei tuoi contributi ai progetti open source che avete elencato

Io cerco di essere breve, e divertente. Quando vado in ufficio, prendo le risposte, li guardare oltre e quindi condurre un'intervista secondario. A farsi assumere, in genere si deve arrivare attraverso tre interviste.

Ho anche misurare quanto bene si fondono con la squadra che verrà si riceve. Che conta di squadra su di me per farlo in modo efficace.

E 'una cosa a rispondere alle domande in forma di meta, è un altro per produrre effettivamente il codice. Se ho intenzione di assumerli, ho davvero bisogno di vederti produrre codice.

Altri suggerimenti

Con le scuse per Scott Whitlock:

Contro:

  • none

Pro:

  • risparmiare un sacco di tempo e mal di cuore per la strada Se si impedisce assumere qualcuno che non possono programma
  • richiede di avere un tecnico nell'intervista

Se si dovesse andare ad assumere un giocoliere, si sarebbe folle di non averlo destreggiarsi per voi. O un musicista si avrebbe audizione. In caso contrario, si ottiene roba come il impressionante yo-yo "master" K-Strass .

Walking attraverso qualcosa su una lavagna è i programmatori equivalente di un juggle demo veloce.

Credo che sia super utile, e lo faccio sempre, ma dal momento che i benefici sono stati coperti così bene ho intenzione di discutere solo gli aspetti negativi (apparenti).

Credo che le prove di codice sono abbastanza improbabile per dare falsi positivi: le quote sono basse che qualcuno che in realtà non può scrivere il codice riuscirà a fingere in un'intervista, almeno se si dispone di una scala da domande di difficoltà crescente . (Forse lo scenario più probabile è che sono barare da chiedere a un amico, se non è un colloquio faccia a faccia.)

I problemi sono più sul lato di falsi negativi: i test di codice vi condurrà a respingere la persona che è in realtà il miglior candidato

La paura del pubblico

Si può avere qualcuno che in realtà è davvero un buon sviluppatore, ma che è molto nervoso per questa intervista, e ottengono essenzialmente paura del palcoscenico. Esecuzione sotto pressione è importante in una certa misura, ma si tratta di paura del palcoscenico non è una parte così importante di essere un programmatore (rispetto ad altre professioni), e sarebbe un peccato per respingere qualcuno che soffre male da esso. Questo può aggravare: se la persona non può rispondere a una domanda che sanno che dovrebbero rispondere, possono ottenere più fino stretto. Oppure, come in questa domanda , essi ritengono di non poter parlare e il codice allo stesso tempo.

mitigazione: iniziare con alcune ottenendo-to-know-te domande sul loro background, obiettivi, ecc, prima di saltare in questioni tecniche. Forse iniziare con alcune domande tecniche più semplici in modo da ottenere un certo slancio. Non essere un cazzo durante l'intervista (cavillare su un punto e virgola, ecc).

E 'un provvedimento rumoroso

domande di codice interessanti potrebbe avere più di una risposta corretta. Se una persona scrive una risposta corretta, e un altro scrive una risposta corretta e più efficace, quanto peso si dovrebbe mettere su questo?

In una certa misura questo è come il problema con alcune domande "puzzle": la persona o ha l'intuizione o meno e si ottiene un risultato quasi binario. Intelligenza influisce probabilmente la probabilità di avere questa intuizione, ma il campionamento solo poche volte si dà una misura grezza.

Questo mi preoccupa circa le domande di codice (se ancora li uso.) La migliore mitigazione mi viene in mente è quello il più possibile avere una rampa di possibili soluzioni: la lattina persona di almeno scrivere la risposta forza bruta greggio, o una risposta per una parte del problema. Rendendosi conto che è meglio di niente è un buon segno. Poi se scoprono più, possono rendere più efficiente o il codice più elegante. Per quanto possibile, evitare di fare domande che ottengono risposte binari.

Non

E 'davvero rappresentativo

La programmazione non è un lavoro di risolvere dieci minuti di problemi algoritmici una dopo l'altra: c'è molto più lavoro sulla comprensione e la progettazione di sistemi più grandi e la concentrazione per lunghi periodi di tempo, per non parlare delle capacità interpersonali. domande di codice in realtà non prova questo.

Ma, domande di codice non sono le uniche domande che si vuole chiedere: si può guardare il loro background, le loro referenze, il loro lavoro open source (se presente), per trovare le prove di sforzo sostenuto, la creatività, le competenze interpersonali .

Sapere come risolvere i piccoli problemi algoritmici e come ridurli a codice è una condizione necessaria ma non sufficiente: se non si riesce a risolvere i piccoli problemi e non è possibile scrivere codice non banale poi tutto il pensiero big-immagine nel mondo non sta per farvi uno sviluppatore produttivo.

Qualcuno potrebbe risolvere che

No, a quanto pare non. Come il famoso palo FizzBuzz punti fuori, problemi si potrebbe pensare sono banali nessuna trappolat solo neolaureati, ma persone con anni di esperienza nel settore. Non so perché. O il codice di prova è una misura povera (che è possibile, anche se penso che sia improbabile), o non sono stati contribuendo molto ai progetti sul loro curriculum, o sono stati sempre un sacco fatto copiando-e-incolla non codice algoritmico (che è possibile.)

Vale la pena di riconoscere che è davvero possibile ottenere un sacco fatto senza scrivere alcun codice algoritmico. Le persone fanno un sacco di soldi per le applicazioni il cui valore è nella grafica o la logica di business, non a quello che si potrebbe chiamare "programmazione", e va bene. Ma, se è effettivamente necessario programmatori, non è una buona misura.

Non può essere ben calibrato

Se si arriva con una domanda, la risposta può benissimo sembrare facile a voi. Tuttavia, se ti viene chiesto domanda qualsiasi altro modo paragonabile di punto in bianco, o di una domanda che non è sbilanciata verso i propri interessi particolari e di fondo, può essere molto più difficile.

mitigazione: eseguire il test di più di alcuni sviluppatori che già conoscono, e vedere come lo fanno. Forse qualcuno già sulla vostra squadra, che si sa è molto intelligente, avrà problemi con uno di loro e si può prendere in considerazione la regolazione. Forse penseranno di una risposta migliore o diverso.

E 'troppo simile banalità

Credo che le domande di codici certamente possono ottenere per curiosità, se insistete persone sanno oscure API a memoria, o ottenere la perfetta sintassi, o ricordare la definizione esatta di un algoritmo non banale. Quelli sono tutti ragionevole affidamento su documenti, ricerche sul Web, o errori del compilatore per raccogliere, e hanno scarsa correlazione con competenze reali. Senza nemmeno sapere dove l'API probabilmente è forse un indizio che la persona non ha usato di recente, ma non è necessariamente un problema fino a quando non sono sdraiato sul loro curriculum.

Quindi la risposta è piuttosto semplice: non fare domande banali e non farsi appeso su errori banali. Ricordare il candidato ciò che l'API si chiama o far loro guardare in su; sistemare gli errori di sintassi; non prova per le persone memorizzare definizioni di strutture di dati.

Come fai a confrontare?

Se si dispone di due candidati e sia rispondere alle domande bene, come si fa a scegliere tra i due? Si poteva scegliere quello che ha chiuso più veloce, ma forse ci si inizia a raccogliere lepri sopra tartarughe. Si potrebbe fare un altro giro e porre domande molto più difficile, ma non sono sicuro che sia. Forse basta dare loro sia un A + e cercare di scegliere tra di loro su altri criteri (o cercare di trovare i soldi per assumere entrambe.)

Un neo che posso pensare è che è difficile "codice ad alta voce" davanti ad altre persone. Trovo difficile anche da digitare con qualcuno guardando oltre la mia spalla, e non sono il solo. Ho notato quando qualcuno mi chiama verso la loro postazione di lavoro per aiutare con qualcosa, improvvisamente iniziano a fare errori di battitura, selezionando il torto di completamento del codice, anche commettere errori veri e propri - nessuno dei quali avrebbero fatto se non fossi stato seduto proprio lì. L'inferno, ho visto la gente iniziare a utilizzare il menu per il taglio e incolla operazioni, solo perché erano sotto osservazione. Questo non è un comportamento normale, ed i programmatori di cui sto parlando sono ottimi programmatori e abbastanza intelligente oltre.

Recentemente ho avuto un colloquio in cui l'intervistatore mi ha chiesto come avrei codificare un particolare operazione e lui ha detto, "Solo mostrami la matematica." Beh, ho dovuto pensare al problema prima di arrivare alla matematica di esso, in modo che mi aveva orlare e hawing. Quello che ho messo giù sul bordo bianco in un primo momento era imbarazzante, e ho sentito che stavo perdendo in quel punto. Alla fine ho ottenuto il momento A-ha e trovato la risposta (in realtà quando finalmente venne in mente quello che era davvero chiedere), ma il "pasticcio" Ho fatto prima del mio arrivo mi ha fatto sentire molto a disagio . Tuttavia, ho ottenuto il lavoro, ma se l'intervistatore fosse stato meno paziente potrei non avere.

Credo che se si dà un compito intervistati codifica, dare loro un po 'di tempo da solo a lavorare fuori su un computer, forse anche in un IDE che ha familiarità con. Lasciate che scrivono il codice per voi e poi ne parlano. Chiedete loro perché hanno fatto le cose in un certo modo, e se un altro modo non potrebbe essere migliore. Troverete di più da questo tipo di processo che per loro chiedendo di (in senso figurato) pipì in un diritto tazza di fronte a voi.

Contro: Nessuno. Ogni volta che si spende la creazione di un PC, la progettazione di un test di codice e la revisione farà risparmiare mal di testa indicibili in futuro.

Pro: "Fiducia, ma verificare" - Ronald Regan. Tante volte ho visto e sentito di gente finalmente lasciar andare da una posizione, in cui nell'intervista si potrebbe pensare si stavano diventando una rock star. La prova è nel pudding; Voglio vedere che cosa possono fare. Esso rappresenterà quello che succede una volta di investire tempo e denaro di assumere qualcuno e bastone un nuovo progetto di fronte a loro.

Contro:

  • richiede di avere un tecnico nell'intervista

Pro:

  • risparmiare un sacco di tempo e mal di cuore per la strada Se si impedisce assumere qualcuno che non possono programma

Quando ho intervistato per il mio attuale lavoro, mi hanno dato una lista di domande al codice di scrittura per il reclutatore. Sono rimasto molto colpito, perché le domande erano ovviamente scritti da qualcuno che aveva una profonda conoscenza di SQL, in modo che funziona in entrambe le direzioni.

davvero vogliono avere il codice persona scrittura nell'intervista - ancora meglio, li arrivare al programma di accoppiamento con un membro della tua squadra per una quantità X di tempo (qualunque cosa si può comodamente permettersi nel tempo / personale).

E 'praticamente uno dei pochi modi si può dire se quel codice persona può o non.

I po 'preferisco il pair programming in cui vi mostrerò il loro lavoro di squadra, dà loro un vero e proprio IDE per il lavoro con e permette loro di lavorare su un problema 'reale'(l'altra persona nella coppia li può guidare passato eventuali specifiche ambientali che l'intervistato non avrebbe mai potuto ragionevolmente sapere).

Abbiamo iniziato a utilizzare questa politica di assunzione e siamo davvero soddisfatti dei risultati.

giudicare un uccello dalle sue piume e un programmatore con la sua / il suo codice.

Quando ho iniziato con la società attuale sto lavorando per me hanno chiesto di scrivere del codice C che genera o assegni il bit di parità di qualche ingresso binario (a seconda se si codifica o decodifica). Questa è stata una questione intervista esattamente perché questi tipi di problemi sono risolti durante il lavoro. Naturalmente sto pensando di non controllare la parità, ma piuttosto lavorare su un basso livello.

Tutte le risposte finora (che ho letto) non ha affrontato il fatto che Test Joel non è (solo) una lista dei migliori prassi per gli imprenditori , ma una lista di controllo per facilitare la vostra valutazione di un datore di lavoro prospettiva .

Il fatto è che ... se si prova a fondo le loro candiates allora probabilmente assumere persone che sanno il fatto loro ... che significa per

  1. meno mal di testa e anche
  2. la maggiore probabilità di apprendimento qualcosa dai tuoi colleghi workors

al posto di bug-fixing dopo di loro ...

Io direi:

Pro

  • Illustra il candidato ha almeno una conoscenza accettabile di programmazione, dato che riprende possono essere fabbricate / abbellito
  • Se l'intervistatore discute il codice con il candidato, a differenza di esso che è più simile a un test scritto, potrebbe essere un buon indicatore di come si "Mesh" socialmente e se il candidato è una buona misura per l'azienda / società e team sono adatta bene per il candidato

Contro

  • potrebbe essere offensivo per i candidati se le domande sono a memoria sciocchezze / banale che non sarebbe mai venuto in su durante il lavoro (ad esempio, "Scrivi una bubble sort", quando tutte le strutture moderne che uno sarebbe utilizzando sul posto di lavoro hanno ordinamento integrato, " invertire una stringa" quando c'è un built-in metodo Reverse o simili, o per prove cose scritte come 'Quali sono gli argomenti al metodo Foo della classe Bar', quando qualsiasi idiota potrebbe Google che o utilizzare la documentazione) al contrario di domande / di progettazione architettonica che mostrano il candidato in grado di fare le cose e risolvere problemi di business .

Un pro è che mostra che qualcuno ha conoscenza di base della programmazione o qualsiasi altra cosa (l'ultima volta che ho incontrato che, sono rimasto sorpreso come base la domanda di SQL era). Può anche servire come base per una discussione tecnica, chiedendo il motivo per cui il candidato ha fatto così e così, e come potrebbe essere migliorata.

Ci vuole tempo nell'intervista, che potrebbe essere utilizzato per altre cose. Inoltre, la scrittura di codice su una lavagna non è un ambiente naturale, e alcune persone avranno più e meno seri problemi con esso. Si potrebbe causare a mancare uno sviluppatore che ottiene solo nervoso senza attrezzi normali o riferimenti.

La programmazione è una competenza altamente tecnico con un gruppo di "elementi da fornire chiari." O un candidato può o non può consegnarli. Quindi non ci sono "contro" per porre domande tecniche. E 'del tutto per dire, "fammi vedere qualche codice per questa applicazione, o 'mi mostra il codice di un'applicazione che hai già scritto.'

Non farlo potrebbe portare ad un risultato simile al seguente: Un uomo ricco ha intervistato un tutor per insegnare ai suoi figli a giocare a scacchi (come un esercizio di espansione della mente). Il tutor ha aperto una scacchiera e ha iniziato a parlare delle 64 caselle, ma non ha toccato un pezzo degli scacchi. Premuto per tempo, il padre ha assunto il tutor in ogni caso. E il tutor ha insegnato ai bambini di giocare a dama.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top