Pergunta original
Eu já fiz algumas entrevistas para a minha empresa, principalmente cientistas da computação para cargos de desenvolvedor, mas também alguns testadores e gerentes de projeto. Agora tenho que preencher uma vaga em nosso grupo de pesquisa no departamento de P&D (observação: "pesquisa" significa que tentamos resolver problemas em nosso domínio profissional / nicho de mercado usando software em projetos de pesquisa em conjunto com universidades, outras empresas, centros de pesquisa e organizações de usuários finais.Não é pesquisa em ciência da computação; não vamos resolver o problema P = NP).
Agora convidamos um cara com um mestrado em química (com muita física em seu currículo também), que nunca teve nenhuma aula de ciência da computação. Eu já conversei com ele cerca de meia hora nos dias de carreira de uma universidade local e não há dúvida de que o cara é inteligente. Também suas notas são excelentes e ele se formou com distinção. Para seu bacharelado, ele precisava aprender a programar no Mathematica e me disse que gostava muito de programar. Ele também resolveu um problema de físico-química que eu provavelmente não entendo usando seu próprio software, implementado no Mathematica, para sua tese de mestrado. Inclui uma GUI e um tamanho notável de 8.000 LoC. Ele parece estar muito atraído pelo que estamos fazendo em nosso grupo de pesquisa e, para ser honesto, é bastante difícil para uma PME como nós conseguir pessoas boas. Também estou muito interessado em contratá-lo, pois ele poderia me ajudar a escrever propostas de projetos, relatórios, fazer apresentações e assim por diante. Ele provavelmente se encaixaria em nossa equipe também.
A única pergunta que resta é: como posso verificar se ele obterá as habilidades de programação necessárias para implementar o software em nossos projetos, pois isso será uma parte significativa do trabalho?
É claro que vou perguntar a ele o que é, o que o fascina sobre programação. Também perguntarei como ele começou a escrever seu software de ciências naturais e como ele o estruturou. Perguntarei como ele conseguiu obter as habilidades e informações sobre desenvolvimento de software de que precisava. Mas há algo mais que eu poderia perguntar? Algo mais concreto, talvez? Devo pedir que ele explique sua solução Mathematica?
Para ser claro: não estou procurando conhecimento em um determinado idioma ou pilha de tecnologia. Somos uma loja .NET em desenvolvimento de produtos, mas quero ter uma escolha livre para nossos projetos de pesquisa. Então, eu estou interessado na meta-competência ser capaz de aprender o que é realmente necessário.
Espero que esta pergunta seja respondida e não seja aberta, pois realmente gosto de saber se existe uma maneira padrão de verificar a capacidade de obter mais habilidades de programação no trabalho. Se algo não estiver claro para você, faça-me alguns comentários e deixe-me melhorar minha pergunta.
Atualização para refletir as respostas dadas até 01/12/2011
Qual resposta eu aceitei e por que
Obrigado a todos por suas respostas, a maioria delas é bastante útil, então eu votei muito! Embora a resposta de Tom Squires tenha mais votos, vou aceitar a resposta dada pelo príncipe Goulash . É claro que Tom está objetivamente correto, mas a resposta de Prince é apenas mais útil para mim e verifiquei duas vezes o FAQ de que este é o critério para aceitar uma resposta.
O que vou perguntar durante a entrevista
Vou deixá-lo explicar algumas tarefas simples, como o exemplo em O Camelo Tem Duas Corcovas, mencionado por Chris Burt-Brown
Pedirei a ele para explicar alguns fluxos de controle mais avançados, talvez em uma notação gráfica.
Vou verificar seu entendimento de recursão usando um exemplo de matemática.
Vou deixá-lo explicar um algoritmo de sua escolha na linguagem natural.
Deixarei que ele explique sua solução Mathematica, em particular solicitarei seu modelo de procedimento, uso de ferramentas, estruturação de código e software em geral, bem como diferentes camadas de abstração.
Para verificar sua motivação, pedirei seu fascínio pelo desenvolvimento de software.
Vou perguntar se ele está ciente do que precisará aprender sobre o desenvolvimento de software corporativo. Especialmente, quero transformar a discussão na direção de trabalhar em equipes, programação em pares, TDD, já que espero que ele não saiba muito sobre isso depois de trabalhar sozinho no mestrado.
Parece que vai ser uma longa entrevista;)
Atualização após a entrevista 09/12/2011
Mais uma vez obrigado a todos por suas boas respostas. Ele passou na entrevista com cores voadoras. Eu nunca fiquei tão satisfeito com um candidato. Sua solução Mathematica parece estar bem estruturada. Ele foi capaz de explicar onde usava funções de ordem superior, embora não soubesse que essas são referidas dessa maneira. Ele respondeu minhas perguntas de recursão baseadas em matemática, bem como tarefas simples e fluxo de controle do The Camel Has Two Humps. Quando ele estava explicando alguns algoritmos, aprendi muito sobre ajuste não linear;) Ele também disse honestamente que é claro que não pode garantir que será capaz de aprender coisas sobre desenvolvimento profissional de software que ele não conhece até agora. Mas ele acredita que sempre foi bom em aprender novos conceitos - mesmo por ele mesmo - e está realmente interessado no desenvolvimento de software. Ele também pediu para a pilha de tecnologia do projeto, a qual ele seria aplicado primeiro, para dar uma olhada em casa. Ele também estava curioso sobre a programação em pares e o trabalho em equipe. Agora espero que o contrato de trabalho seja concluído.