Domanda originale
Ho già fatto alcune interviste per la mia azienda, principalmente informatici per posizioni di sviluppo, ma anche alcuni tester e project manager. Ora devo riempire un posto vacante nel nostro gruppo di ricerca all'interno del dipartimento di ricerca e sviluppo (nota a margine: "ricerca" significa che cerchiamo di risolvere i problemi nel nostro settore professionale / nicchia di mercato utilizzando software in progetti di ricerca insieme a università, altre società, centri di ricerca e le organizzazioni degli utenti finali. Non si tratta di ricerca informatica, non risolveremo il problema P = NP).
Ora abbiamo invitato un ragazzo in possesso di un Master in chimica (con molta fisica anche nel suo CV), che non ha mai avuto alcuna lezione di informatica. Ho già parlato con lui circa mezz'ora nei giorni della carriera di un'università locale e non c'è dubbio che il ragazzo sia intelligente. Anche i suoi voti sono eccellenti e si è laureato con distinzione. Per la sua laurea ha dovuto insegnarsi a programmare in Mathematica e mi ha detto credibilmente che gli piaceva molto programmare. Inoltre ha risolto alcuni problemi di chimica fisica che probabilmente non capisco usando il suo software, implementato in Mathematica, per la sua tesi di laurea specialistica. Include una GUI e una dimensione notevole di 8.000 LoC. Sembra essere molto attratto da ciò che stiamo facendo nel nostro gruppo di ricerca e, ad essere sinceri, è abbastanza difficile per una PMI come noi ottenere brave persone. Sono anche molto interessato ad assumerlo poiché potrebbe aiutarmi a scrivere proposte di progetti, relazioni, fare presentazioni e così via. Probabilmente si sarebbe adattato anche al nostro team.
L'unica domanda rimasta è: come posso verificare se acquisirà le capacità di programmazione necessarie per implementare il software nei nostri progetti, dal momento che questa sarà una parte significativa del lavoro?
Certo, gli chiederò di cosa si tratta, questo lo affascina della programmazione. Chiederò anche come ha proceduto alla stesura del suo software di scienze naturali e come lo ha strutturato. Chiederò come è riuscito a ottenere le competenze e le informazioni sullo sviluppo del software di cui aveva bisogno. Ma c'è qualcos'altro che potrei chiedere? Qualcosa di più concreto forse? Devo chiedergli di spiegare la sua soluzione Mathematica?
Per essere chiari: non sto cercando conoscenza in un particolare linguaggio o stack tecnologico. Siamo un negozio .NET nello sviluppo di prodotti ma voglio avere una scelta libera per i nostri progetti di ricerca. Quindi sono interessato alla meta-competenza di poter apprendere tutto ciò che è effettivamente necessario.
Spero che questa domanda sia rispondente e non aperta poiché mi piace davvero sapere se esiste un modo predefinito per verificare la capacità di acquisire ulteriori competenze di programmazione sul posto di lavoro. Se qualcosa non ti è chiaro, ti prego di darmi alcuni commenti e di farmi migliorare la mia domanda.
Aggiornamento per riflettere le risposte fornite fino al 01-12-2011
Quale risposta ho accettato e perché
Grazie a tutti per le risposte, la maggior parte di esse è molto utile, quindi ho votato molto! Sebbene la risposta di Tom Squires abbia ottenuto il maggior numero di voti, accetterò la risposta data dal Principe Goulash . Naturalmente Tom è oggettivamente corretto, ma la risposta di Prince è solo più utile per me e ho ricontrollato le FAQ che questo è il criterio per accettare una risposta.
Cosa gli chiederò durante l'intervista
Gli permetterò di spiegare alcuni semplici compiti come nell'esempio in The Camel Has Two Humps menzionato da Chris Burt-Brown
Gli chiederò di spiegare alcuni flussi di controllo più avanzati, magari in una notazione grafica.
Verificherò la sua comprensione della ricorsione usando un esempio di matematica.
Gli lascerò spiegare un algoritmo di sua scelta in linguaggio naturale.
Gli farò spiegare la sua soluzione Mathematica, in particolare chiederò il suo modello di procedura, l'uso di strumenti, la strutturazione di codice e software in generale, nonché diversi livelli di astrazione.
Per verificare la sua motivazione chiederò il suo fascino nello sviluppo di software.
Gli chiederò se è a conoscenza di cosa dovrà imparare sullo sviluppo del software aziendale. Soprattutto voglio trasformare la discussione nella direzione di lavorare in gruppo, accoppiare la programmazione, TDD poiché mi aspetto che non ne sappia molto dopo aver lavorato solo sul suo Master.
Sembra che sarà una lunga intervista;)
Aggiornamento dopo l'intervista 2011-12-09
Ancora grazie a tutti per le buone risposte. Ha superato l'intervista a pieni voti. Non sono mai stato più soddisfatto di un candidato. La sua soluzione Mathematica sembra essere strutturata abbastanza bene. È stato in grado di spiegare dove ha usato le funzioni di ordine superiore, anche se non sapeva che queste venivano definite in questo modo. Ha risposto alle mie domande di ricorsione basate sulla matematica, nonché a semplici incarichi e al flusso di controllo da The Camel Has Two Humps. Durante la spiegazione di alcuni algoritmi ho imparato molto sull'adattamento non lineare;) Inoltre ha onestamente affermato che, naturalmente, non può garantire che sarà in grado di apprendere cose sullo sviluppo di software professionale che non conosceva finora. Ma crede fermamente di essere sempre stato bravo a imparare nuovi concetti - anche da solo - ed è veramente interessato allo sviluppo del software. Ha anche chiesto lo stack tecnologico del progetto, a cui sarebbe stato applicato per primo, per dare un'occhiata a casa. Era curioso anche della programmazione delle coppie e del lavoro di gruppo. Ora spero che il contratto di lavoro sarà concluso.