Qual è il modo migliore per valutare nuovi programmatori? [chiuso]


52

Qual è il modo migliore per valutare i migliori candidati per ottenere un nuovo lavoro (parlando semplicemente in termini di capacità di programmazione)? Nella mia azienda abbiamo avuto molte brutte esperienze con persone che hanno buoni voti ma non hanno reali capacità di programmazione. Le loro abilità sono semplicemente come scimmie codice, senza la capacità di analizzare i problemi e trovare soluzioni.

Altre cose che devo notare:

  • Il sistema educativo nel mio paese fa schifo - fa davvero schifo. Le persone che sono brave in questo tipo di lavoro sono brave perché hanno talento per questo o cercano davvero di imparare da sole.

  • La laurea / laurea / post-laurea non significa necessariamente che tu sappia esattamente come fare le cose.

  • Anche qui le certificazioni non significano nulla perché anche i responsabili del corso di certificazione non hanno competenze (o svolgono lavori a basso costo).

Dobbiamo davvero ottenere buoni candidati che siano flessibili e che non abbiano un pensiero meccanico (perché questo tipo di persone per esperienza ha una prestazione bassa).

Siamo in un'istituzione governativa e le persone candidate non vengono necessariamente dall'esterno, ma abbiamo la possibilità di accettare o meno candidati fino a quando non troveremo quello giusto.

Spero di non sembrare troppo aggressivo nella mia domanda; e BTW sono anch'io un programmatore.

modifica: ho capito che qui ho chiesto qualcosa di veramente complesso. Disattiverò "la risposta corretta" solo per far sì che la discussione diventi fluente, senza alcun pregiudizio.


Apprezzerei la creatività, come dici tu per quanto riguarda il codice scimmia. Non mi piace l'approccio della forza bruta, se generazioni di programmatori del passato hanno usato un determinato approccio, potrebbe significare che è fantastico, o semplicemente che è stato perpetuato per molto tempo. Inoltre, l'istruzione non dovrebbe concentrarsi sulle abilità commerciali, e direi che è estremamente importante, ma che mette i voti effettivi acquisiti oltre un livello di base competente come non così importanti. Mi piacerebbe vedere di più su un sistema in stile Khan Academy di molti piccoli moduli pass / fail con altre dipendenze per i passaggi dei moduli e un periodo di raffreddamento prima di essere autorizzato a riprendere un modulo.
alan2here

Risposte:


52

Per quanto riguarda la selezione dei candidati, di solito vado con un piano a tre colpi:

  • Test regolari con domande di codifica simili a FizzBuzz e molte domande di conoscenza in cui devono fornire esempi codificati. A seconda della posizione, possono essere principi OO, principi di progettazione SQL, ecc. Incremento le difficoltà delle domande durante il test per vedere fino a che punto possono arrivare. L'idea non è davvero quella di avere una risposta a tutte le domande (se lo fanno, meglio è), ma anche di vedere se possono riconoscere quando non sanno qualcosa. La fiducia è essenziale e non voglio avere qualcuno che mi mente nella mia squadra.

  • Ritorna alla prova con il candidato e discussione sulle risposte. Possibile estensione delle domande per raggiungere i limiti del candidato. Questo può essere esteso, e più esteso è, meglio è.

  • Ultima parte, ma non meno importante, The Code Review . Chiedo al candidato di portare un pezzo di codice (generalmente spazio qualche giorno prima il test / discussione precedente e questa recensione, per consentire loro di scrivere e lucidare un pezzo di codice). Quindi eseguiamo una revisione periodica del codice con due persone: una persona che lavorerà direttamente con il candidato e la persona che ha esaminato il test con il candidato in precedenza. Per quanto riguarda la revisione del codice, puoi leggere questo articolo di JohnFX .

Alla fine di tutto ciò, dovresti essere in grado di decidere se vuoi che questo candidato faccia parte o meno della tua squadra.


4
Sono d'accordo su domande di codifica e domanda di conoscenza, non ho mai accettato di chiedere ai candidati di portare un pezzo di codice. Secondo me non è facile trovare un codice sostanziale che: mostra qualcosa di non banale, non richiede troppa conoscenza di un sistema più grande e che ti è permesso mostrare agli altri.
Andrea Zilio,

Direi la recensione del codice. FizzBuzz è così abusato. E potresti spaventare le persone. Sono stato programmatore di servizi sanitari e finanziari e cose come il fizzbuzz sono inutili. Devi essere in grado di capire l'interazione molto più complicata. Chiedi loro esempi di codice, anche se si tratta di un FPS in pygame. Se non hanno esempi di codice, non sono programmatori.
Christopher Mahan,

1
@ChristopherMahan Il valore di FizzBuzz (e una codifica analoga) è come un semplice gatekeeper. Se non sono in grado di implementare FizzBuzz, nella loro lingua preferita, possono scrivere QUALSIASI codice?
Vatine,

Test @Vatine FizzBuzz per capacità di ragionamento logico, non abilità di programmazione. Certo, si dovrebbe essere in grado di farlo. Una semplice domanda di programmazione sarebbe: visualizzare sullo schermo un elenco di elementi ordinati in modo interessante. Dovrebbero codificare, ma sarebbero in grado di attingere all'esperienza per trovare qualcosa da scrivere e non dovrebbero anche cercare di capire il rompicapo. Una volta ho fallito un'intervista perché volevano che usassi regex e ho risposto che per quel problema regex è eccessivo e Python ha funzionalità integrate per farlo. Non volevo lavorare lì, immagino.
Christopher Mahan,

Code Review è un'idea terribile e la confutazione di JohnFX è insufficiente. Conosco un sacco di sviluppatori che sono fantastici ma non lavorano su nulla al di fuori delle basi di codice proprietario del loro datore di lavoro. Queste sono persone con famiglie e cose da fare al di fuori del lavoro. Tuttavia, quando lavorano, sono molto produttivi.
MrFox,

20

Inizia dando loro FizzBuzz per risolvere. Quello dovrebbe eliminare il peggio di loro.

Quindi qualcosa di un po 'più difficile, ad esempio come invertire una stringa senza funzioni di libreria integrate. Chiedi loro di parlare mentre risolvono per vedere qual è il loro processo di pensiero.

Puoi continuare a dare problemi più difficili se li trovano molto facili, fino a quando non sei convinto di poter camminare e non solo parlare.


1
Immagino che possa dipendere dal livello di programmatore che stai intervistando. Mentre potrebbe essere OK accedere alla capacità di un noleggio di livello junior, considererei tali domande in un'intervista un chiaro indicatore che questa non era una società in cui volevo lavorare.
jfrankcarr,

3
Non sono d'accordo con la parte parlante. Parli spesso con te stesso o con altre persone mentre risolvi i problemi? Che ne dici di dare un po 'di spazio a una persona e lasciarlo pensare un po'? Quindi, a meno che non sia completamente banale, penso che non sia una buona pratica.
Andrey Rubshtein,

1
@Andrey - La parte parlante è approfondire il loro processo di pensiero. Volete vedere come pensano un problema e come affrontarlo per risolverlo. Hai un'opzione migliore?
Oded,

5
@Oded, sì, in effetti lo faccio. Lascia che pensino un po ', da soli , come farebbero nella vita reale, specialmente se si tratta di un problema difficile, quindi chiedi loro quanto vuoi. Come in qualsiasi esame orale.
Andrey Rubshtein,

4
Anche come assistente in una scuola che ha diversi professionisti CS recentemente riconosciuti, trovo che il banale fizzbuzz sia un ottimo filtro. La maggior parte delle persone con cui mi sono laureata probabilmente non sono riuscite a risolverlo in un ragionevole lasso di tempo. Quelle persone hanno lottato per trovare lavoro o no. Penso che seguire joelonsoftware.com/articles/GuerrillaInterviewing3.html sia buono.
Rig

14

Cerca solo la passione per il lavoro.

Per citare Joel, cerca le persone che sono " intelligenti e fai le cose " .

Il resto non ha importanza


7
Il problema è che non puoi dire se sono intelligenti.

4
@Chad: la passione per l'apprendimento non "fa le cose". Per scoprire se qualcuno riesce a fare le cose, devi chiedere loro di fare qualcosa.
Kevin Cline,

2
@kevin cline, ottimizzato il mio post. Hanno bisogno di avere passione per il lavoro, di solito è dimostrato dal voler imparare. Sì, ci vogliono alcune domande, la conversazione dovrebbe fluire, non dovrebbe essere solo una serie di domande. Ma per scoprire se riescono a fare le cose, chiedi esempi in cui hanno avuto un ostacolo e come lo hanno superato. Tutti colpiscono i blocchi stradali nel loro lavoro, che si tratti di tecnologia, persone, processi, ma una persona intelligente, che fa le cose, troverà un modo per superarlo e sarà in grado di spiegarlo, in dettaglio, abbastanza per venderti la loro abilità.
CaffGeek,

3
@mouviciel non nella mia esperienza. Alcuni dei programmatori più intelligenti che conosco sono molto estroversi.

4
Se non riesci a sederti in una stanza con un candidato sviluppatore e capire se sono intelligenti o no, trova qualcuno che possa farlo.
JeffO,

13

Sulla base dei miei 25 anni di programmazione (che, certamente, include solo 5 o 6 casi di assunzione di altri programmatori):

Indicatori positivi:

  • Appassionato di tecnologia

  • Programmi come hobby

  • Ti incoraggerà a parlare di un argomento tecnico se incoraggiato

  • Significativi (e spesso numerosi) progetti secondari personali nel corso degli anni

  • Impara nuove tecnologie da solo

  • Considerato quali tecnologie sono migliori per vari usi

  • Molto a disagio sull'idea di lavorare con una tecnologia che non crede essere "giusta"

  • Chiaramente intelligente, può avere grandi conversazioni su una varietà di argomenti

  • Ha iniziato a programmare molto prima dell'università / del lavoro

  • Ha alcuni "iceberg" nascosti, grandi progetti personali sotto il radar CV

  • Conoscenza di una grande varietà di tecnologie non correlate (potrebbe non essere presente nel CV)

Indicatori negativi:

  • La programmazione è un lavoro diurno

  • Non voglio davvero "talk shop", anche se incoraggiato a farlo

  • Impara nuove tecnologie in corsi sponsorizzati dall'azienda

  • Felice di lavorare con qualsiasi tecnologia tu abbia scelto, "tutte le tecnologie sono buone"

  • Non sembra troppo intelligente

  • Ha iniziato a programmare all'università

  • Tutta l'esperienza di programmazione è nel CV

  • Incentrato principalmente su una o due pile tecnologiche (ad esempio tutto ciò che riguarda lo sviluppo di un'applicazione java), senza esperienza al di fuori di essa

Inoltre, suggerirei:

  • Il test FizzBuzz (o qualcosa del genere per testare la capacità di base di scrivere un algoritmo.
  • Versione più difficile del test FizzBuzz (per portarli al punto di errore o quasi-fallimento).
  • Discutere il loro codice e vedere se sono disposti a essere autocritici e cercare miglioramenti (che probabilmente non hanno avuto il tempo di fare in un breve test sul posto) come:
    • buoni nomi di variabili (ho avuto programmatori esperti molto esperti usano variabili in produzione come "flag" (WTF ??)
    • modularizzazione.
    • Anticipare i problemi e fare "codifica difensiva"
  • La volontà di vedere i "difetti" come opportunità di miglioramento. Penso che i migliori programmatori siano sempre alla ricerca di difetti nel loro codice precedente. Non sono così egocentrici da pensare che trovare un difetto sia un affronto personale. Lo vedono come un'opportunità per fare meglio. (Quelli che non riescono a guardare i difetti senza battere ciglio o sono sopraffatti dal vedere un difetto (e diventano superconfidenti o, per evitarlo, ignorano i difetti.
  • Possono eseguire il debug?
  • Possono unit test? (Ho parlato con troppi programmatori che dicono "QC lo fa". Non sto parlando di Test, sto parlando di test: scrivi una funzione, funziona? Fa sforzi ragionevoli per gestire probabili problemi (input NULL, ecc.)? Se non riesci a farlo, come fai a sapere quando hai finito?
  • Hanno buone capacità comunicative? (come minimo: buona comprensione e conoscenza di sé su quando fanno e non capiscono e disponibilità a dire "Non capisco, per favore spiegalo di nuovo".

Gran parte del riassunto sopra è tratto da Come individuare un buon programmatore , che è un ottimo articolo, focalizzato un po 'di più sugli indicatori a lungo raggio. Conferma sicuramente le mie intuizioni ed esperienza. Sono anche molte cose (come la "passione") che normalmente non sono menzionate in una lista di controllo di "cos'è un buon programmatore".


10

La valutazione dell'intelligenza di programmazione è una forma di test di Turing. Pertanto non esistono (attualmente) procedure di valutazione in forma chiusa che sono garantite per funzionare. Ci vogliono programmatori intelligenti per riconoscere altri programmatori intelligenti, ma solo con una ragionevole probabilità.

Le tue possibilità saranno migliori se nella tua squadra ci sono intervistatori che sentono l'odore dei lavori sulla neve e istintivamente non amano lavorare con persone stupide (anche quelle che sono di bell'aspetto, hanno curriculum di bell'aspetto e possono sparare dalla memoria tutte le solite soluzioni in scatola) .

(Una possibile metodologia che aiuterebbe la qualità dello stackoverflow come effetto collaterale è quella di scavare vecchie domande stackoverflow, correlate in qualche modo ai requisiti del tuo lavoro ma che secondo te hanno risposte inferiori; chiedi all'intervistato come avrebbero risposto, e invitali a pubblicarlo se è una buona risposta. Simile a un riepilogo per l'OCR di crowdfunding.)


7

Concedi loro un problema, preferibilmente uno associato al dominio problematico su cui lavoreranno, e chiedi loro di discutere su come affrontarlo. Puoi farli discutere, pseudo-codice o scrivere bit di codice reale a seconda di quanto sei sicuro del loro livello di abilità

Ad esempio, se la tua organizzazione ha tenuto conferenze, chiedi loro di delineare come codificherebbero un sistema di registrazione online sicuro. Dovrebbero essere in grado di coprire alcune delle basi e porre buone domande su ciò che deve essere implementato. Mentre interagisci, dovresti essere in grado di determinare se saranno adatti alla tua organizzazione e il ruolo che devi svolgere.

Non sono un grande fan della programmazione di test trivia e di rompicapo. Mentre possono essere divertenti per alcune persone, possono anche infastidire e / o stressare altre persone, comprese le persone che potrebbero essere la soluzione migliore per la tua squadra. Inoltre, le informazioni su molti di questi test sono prontamente disponibili online e incoraggeranno a stipare per i test e altre tattiche che sminuirebbero la loro fattibilità per valutare l'abilità del programmatore.


Concordo con te sugli aspetti negativi del test trivia / brain per la selezione dei candidati. il problema è che rivedere / discutere il codice con ogni candidato richiederà troppo tempo. E forse il risultato sarebbe più subjetive. non esattamente quello che sto cercando, preferirei qualcosa che necessita di meno supervisione personale. e più tardi, quando avrò i candidati più adatti, parlerò / discuterò / intervisteremo
Rafael,

3
Troppo tempo? Qualcuno dovrà parlare con i candidati. Nessun test scritto funzionerà. Il contenuto del test diventerà rapidamente di dominio pubblico e i candidati arriveranno con risposte memorizzate.
Kevin Cline,

10
@kevincline: Esatto, devi parlare con loro. Stavo intervistando a Xerox (negli anni '70) e mi è stato chiesto come gestire le collisioni in un algoritmo di hashing. Non avevo molta istruzione formale in programmazione, ma lo facevo da circa 5 anni, quindi dissi che non sapevo cosa fosse un hash. Il mio intervistatore me lo ha spiegato, poi ha ripetuto la domanda. Siamo andati avanti per oltre un'ora quando ho scoperto e risolto diversi tipi di problemi di collisione. Mi disse che se avessi potuto farlo in un'ora, avrei potuto gestire qualsiasi cosa mi avessero lanciato. Ho ottenuto il lavoro. Perché mi ha parlato .
Peter Rowell,

@PeterRowell Ecco come devono essere le cose. +1
Chirone,

3

La lettura di questa domanda e alcune delle risposte ricevute mi hanno spinto a scrivere un articolo che ritengo possa interessare:

Strane pratiche di reclutamento quando si assumono sviluppatori di software

Ok, quindi il titolo dell'articolo è spazzatura, ma l'articolo arriva al nocciolo del problema. Non è il problema del candidato che hai scelto di intervistarli, non importa quanto possano essere inappropriati per il ruolo che hai in mente. Se non sei riuscito a definire una procedura di assunzione ben ponderata per permetterti di trovare le gemme allo stato grezzo, allora dovrai solo convivere con le conseguenze, e sì, questo significa ottenere alcuni candidati che potrebbero mai soddisfare le tue aspettative. Filtrare i candidati in base alle loro lettere e curriculum richiede prima di tutto, chiedere ai candidati di scrivere una lettera su se stessi e su ciò che vogliono dal ruolo, quindi guardare come è scritto il curriculum. Se hai solo uno o due potenziali candidati da intervistare, probabilmente hai fatto correttamente la pre-screening.

Quando alla fine trovi 1 o 2 candidati che ritieni davvero utili, non porre semplicemente una manciata di domande insane sui tester, ma investi il ​​tempo per conoscere queste persone e per avviare discussioni aperte sul software ingegneria in generale. Imparerai di più da un approccio casuale al candidato di quanto tu abbia mai fatto nella situazione tradizionale (e in qualche modo contraddittoria) del colloquio. Inoltre, non accontentarti semplicemente di un singolo colloquio, ma tratta i tuoi candidati chiave in diverse riunioni in cui viene utilizzata la discussione aperta e in cui il candidato può incontrarsi con i suoi potenziali colleghi. Il tempo non è mai perso, poiché i candidati inappropriati non prospereranno molto bene in una discussione altamente tecnica e mostreranno i loro difetti molto rapidamente man mano che abbassano la guardia.


Punti buoni. Tuttavia, starei attento a troppe interviste. Sia il tempo che il candidato sono preziosi (in particolare se il candidato è attualmente impiegato altrove). Nella mia esperienza, sempre più interviste hanno rendimenti decrescenti, quindi limiterei a una o due interviste. Un'intervista telefonica (aggiuntiva) potrebbe anche essere un compromesso.
sleske,

1
@Sleske, sono d'accordo in linea di principio, in particolare se le stesse persone partecipano a tutte le interviste. È quindi meglio condividere l'onere di trovare la soluzione migliore sia per l'azienda che per il team, e ti dà la possibilità di imparare dalle osservazioni degli altri. Le cattive interviste non andranno oltre, ma più parti interessate sono interessate al candidato, più interviste potresti aver bisogno, quindi non è insolito avere 3 o anche 4 interviste in team molto ampi. Troppe altre però darebbero l'impressione di essere terribilmente disorganizzata. Vale anche la pena di dire al candidato il numero di interviste in anticipo.
S.Robins,

@ s-robins opinioni interessanti, voglio solo mettere un po 'di luce su alcuni aspetti della mia domanda. Per una ragione fuori dal nostro controllo non possiamo selezionare i nostri candidati sulla base di un normale processo di reclutamento, invece i candidati arrivano solo e dobbiamo dire se lui / lei ha le abilità / conoscenze giuste per accettare il lavoro. Forse in un normale processo di reclutamento queste cose non accadono troppo spesso. ma nella nostra posizione dobbiamo affrontare questa situazione.
Rafael,

@Rafael, se ho capito bene i tuoi commenti, stai dicendo che ti vengono nutriti i candidati da "altrove" per valutare e che la tua difficoltà sta nel fare una valutazione obiettiva di un candidato senza una conoscenza preliminare di quel candidato. Sembra più un problema sistemico all'interno dell'organizzazione in cui lavori. Suggerirei di incontrare le persone che inviano i candidati a modo tuo e di lavorare con loro per escogitare un sistema per filtrare i candidati ovviamente inappropriati prima di intervistarli. Forse anche richiedere l'implementazione di un processo di candidatura più formale.
S.Robins,

@S-robins hai capito bene ...
Rafael,

1

Non hai detto per quale lingua, ma è abbastanza facile testare le conoscenze di qualcuno. Dipende anche dal livello che stai cercando, ma c'è un gruppo abbastanza ampio di domande riguardanti le domande del colloquio.

Comunque decidi di tenere la tua intervista, non fare quelle domande "intervista a ragionamento laterale" .


2
in realtà non ho specificato la lingua che stiamo usando per sviluppare, perché crediamo che un buon programmatore (con il suo rispettivo corso di capacità) possa imparare a programmare in qualsiasi lingua indipendentemente dalla sua sintassi.
Rafael,

2
@Rafael norvig.com/21-days.html . Come ho detto, dipende se stai cercando un programmatore junior o uno senior.
BЈовић,

Perché sto parlando della maggior parte dei candidati sono neolaureati. Mi riferisco ai programmatori junior, ma la mia domanda va in un contesto più ampio rispetto al mio specifico processo di reclutamento personale
Rafael,

@Rafael In quel caso ti aspetti troppo da un giovane. Leggi l'articolo che ho pubblicato nel commento sopra, dove dice quanto tempo ci vuole per padroneggiare un linguaggio di programmazione.
BЈовић,

non sto parlando di padroneggiare un linguaggio di programmazione specifico, sto parlando di ottenere la persona migliore con il miglior set di competenze di programmazione generiche, (per questo motivo non specifica il linguaggio), non posso aspettarmi che tutti che viene come master candidato il linguaggio che stiamo programmando, ed è per questo che siamo in grado di portare un corso di capacitazione se le persone non conoscono il linguaggio.
Rafael,

1

Ti suggerisco di andare con una domanda FizzBuzz e assumere il primo che passa. Ulteriori test tendono ad essere imperfetti poiché non tutti i bravi programmatori affrontano un problema come te, o gestiscono un'intervista senza balbettare, o conoscono le lingue che desideri o ti interessano o la stupidità come lo scambio di numeri interi senza una terza variabile (chi ne ha bisogno comunque? significa, poiché la RAM ha superato i 128 byte?).

Pensaci. Se la domanda FizzBuzz elimina 199 su 200, ha eliminato solo centinaia di interviste. Avresti davvero intervistato centinaia di potenziali clienti?

Sembra solo rendimenti decrescenti dopo FizzBuzz. Ciò presuppone che 199/200 sia persino approssimativamente vicino. E presumo che anche il TUO tempo sia prezioso ...


2
Spaventoso come FizzBuzz sia il test standard per valutare la competenza di un programmatore. Tuttavia, questo è un test provato e vero - non posso dirti quanti programmatori con gradi CS non possono farlo (nella loro "lingua preferita")
Nodey The Node Guy

0

Non sono sicuro che si tratti di un commento o di una risposta, ma in sostanza quello che ha detto Matthieu. Volete stupide domande facili che richiedono un minuto o due (ma non più di 5) minuti e dovrebbero riguardare aree diverse.

Tali esempi di stupida domanda facile sono una domanda sulla ricorsione come se tu abbia un elenco e devi stamparlo in ordine inverso senza usare un ciclo. Una semplice domanda regex se regex è normalmente fatto nel tuo sviluppo. Una domanda su bit e byte se si utilizza C ++ (scrivere un modello che accetta caratteri lunghi e stampa la rappresentazione binaria. Non è richiesta la specializzazione, basta usare sizeof () per capire la lunghezza dei bit)

Dovrebbero essere necessari circa <= 3 minuti per domanda


0

Poni loro la sfida di programmazione più interessante che abbiano mai tentato di risolvere ma non sono riusciti, quale approccio hanno usato durante la risoluzione, perché non sono stati in grado di risolvere e quale altro approccio pensano possano risolverlo.

Questo mi basta per giudicare le capacità di un programmatore come programmatore.


0
  1. Possono difendere ciò che sostengono di sapere? Lo hanno inserito nel curriculum / CV come un'abilità o qualcosa che hanno fatto in un altro progetto. Guarda come possono approfondire l'argomento.
  2. Possono imparare qualcosa di nuovo? Parla di un aspetto di alto livello della tecnologia che stai utilizzando o di qualcosa di specifico per il business domian in cui lavori e vedi se riescono a capire l'argomento. Pongono domande intelligenti? Possono escogitare un'analogia? È simile a qualcosa che hanno fatto in un altro settore o tecnologia?

  3. Preferirebbero programmare? Non deve essere il numero uno nella loro lista, ma devono mostrare una preferenza per scrivere il codice. E intendo davvero scrivere codice e fare qualcosa, non sedermi e parlarne o disegnare sulla lavagna tutto il giorno. Non per minimizzare la pianificazione o per promuovere la codifica da cowboy, ma alla fine devi avere il codice. Evita coloro che evitano la tastiera. Questa non è una posizione di gestione.

Puoi fare un punteggio su una scala da una a dieci cose o semplicemente fare affidamento sul fatto di sentire l'odore del tuo tipo.


0

Se ti fa sentire meglio, esistono programmatori cattivi in ​​quasi tutti i paesi. Come eliminarli è il problema.

Il primo diserbo è il curriculum. Una cosa che cerco è molta esperienza linguistica dichiarata e nulla per descrivere ciò che hanno fatto in quella lingua. Ho visto riprendere che praticamente sostengono di conoscere ogni lingua mai inventata e tuttavia la loro esperienza dimostra che hanno effettivamente lavorato solo con Access e Visual Basic. Quelli vanno proprio nella spazzatura. I curriculum di 10 pagine vanno proprio nel cestino (in particolare dieci curriculum da persone con meno di 2 anni di esperienza che ho ottenuto). Da neolaureati con poca esperienza, devi essere molto esigente su come si presentano. I migliori candidati sono attenti ai loro curriculum, non hanno errori. Stai davvero cercando qualcuno a cui importa così poco che non si sia preso la briga di rileggere il suo curriculum?

Anche i curriculum preparati professionalmente vanno nella spazzatura. Dopo aver letto centinaia di curriculum, puoi sceglierli in quanto usano esattamente lo stesso fraseggio. Non puoi fidarti del contenuto in un curriculum preparato professionalmente e sai che la persona non ha fatto la sua preparazione. Questo è il tipo di persona che farà affidamento sugli altri per risolvere i suoi problemi per lui, lo vuoi davvero in una posizione di programmazione?

Cerca le cose che distinguono la persona da quelle che scegli. Ovviamente è più difficile con quelli appena usciti dalla scuola, ma cerca risultati, contributi all'open source, ecc.

La prossima uscita è l'intervista telefonica. Chiedi informazioni sui concetti di base relativi al lavoro effettivo che svolgi. Se le persone non hanno una conoscenza di base dei concetti di cui hai bisogno, non vale la pena preoccuparsi di partecipare a un colloquio personale. I giovani spesso pensano che ciò sia ingiusto perché possono cercare tutto su Internet, ma la verità è che non ho mai incontrato un buon programmatore che ha dovuto cercare tutto su Internet. Dovresti avere una certa conoscenza della tua professione che non devi cercare ogni volta.

Dopo l'intervista telefonica dovresti scegliere i migliori 4-5 candidati e intervista. Naturalmente se hai solo 1-2 buoni candidati, non preoccuparti di intervistare le persone che hai già eliminato. Ora farai le domande difficili e avrai un'idea di come affrontano i problemi. Non userei mai il test fizzbuzz perché è troppo noto, quindi le risposte non ti dicono nulla. Risolvi invece alcuni problemi dalla tua base di codice. Potrei dare loro un requisito e un pezzo di codice e chiedere loro se il codice soddisfa il requisito e, se no, perché no e cosa potrebbero fare per farlo soddisfare il requisito. Chiederei loro di descrivere il problema di programmazione più difficile che hanno dovuto risolvere e quali passi hanno preso per trovare la risposta. Vorrei porre alcune domande tecniche più approfondite. Ricorda che stai cercando di farti un'idea delle loro competenze tecniche, delle loro capacità di risoluzione dei problemi e di debug e della loro capacità di adattarsi al tuo team esistente. Faccio anche domande che probabilmente non conoscono la risposta per giudicare quanto bene gestiscono lo stress, è un lavoro stressante, non voglio qualcuno che si pieghi nell'intervista perché lo stress del lavoro è maggiore dello stress dell'intervista . Cerco punti di forza in aree in cui siamo attualmente deboli e capacità di lavorare in team e di presentarsi ai clienti (i nostri sviluppatori si occupano ampiamente degli utenti), la tua lista potrebbe essere diversa. voglio qualcuno che ripieghi nell'intervista perché lo stress del lavoro è maggiore dello stress dell'intervista. Cerco punti di forza in aree in cui siamo attualmente deboli e capacità di lavorare in team e di presentarsi ai clienti (i nostri sviluppatori si occupano ampiamente degli utenti), la tua lista potrebbe essere diversa. voglio qualcuno che ripieghi nell'intervista perché lo stress del lavoro è maggiore dello stress dell'intervista. Cerco punti di forza in aree in cui siamo attualmente deboli e capacità di lavorare in team e di presentarsi ai clienti (i nostri sviluppatori si occupano ampiamente degli utenti), la tua lista potrebbe essere diversa.


-1

Ai candidati deve essere dato un problema del mondo reale da risolvere con la libertà di utilizzare qualsiasi tecnologia.

Se esce a pieni voti, è dentro!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.