Uma empresa com a qual trabalho me pediu para fazer exames de telefone dos candidatos para garantir que eles não fiquem completamente constrangidos ao enviar alguém para um cliente em potencial.
Acontece que um número razoável de pessoas estava sendo colocado para uma função de desenvolvedor de C ++. Não passo muito tempo em C ++, mas já fiz alguns projetos triviais e não triviais na linguagem. Imaginei que "Explain the RAII idiom" seria uma boa pergunta sobre softbol que os desenvolvedores mais sérios de C ++ poderiam responder enquanto dormiam e me permitiria passar para perguntas mais interessantes sobre a experiência. Mas acontece que pessoas com mais de 10 anos de experiência em C ++ não reconhecem o termo, mesmo se eu expandir o acrônimo para "Aquisição de recursos é inicialização". Um candidato chegou ao ponto de dizer que achava que nem sempre era prático aplicar a técnica no desenvolvimento do Windows, o que eu achava um sentimento estranho, mas pude ver alguns exemplos que sustentam essa linha de pensamento.)
Até alguns desenvolvedores de C ++ que eu conheço bem o suficiente para julgar sua competência disseram que não reconheciam o termo, mas ao ler um resumo da técnica, disseram "Ah, sim, eu não sabia que tinha um nome. Eu apenas pensei nessas coisas como algo que você apenas precisa fazer . " Lembro-me do termo da segunda edição do livro de Stroustrup, embora o impacto total não tenha caído na época.
Então, é "Você pode me explicar o idioma da RAII?" uma pergunta de triagem justa? É razoável esperar que todos os desenvolvedores competentes de C ++ entendam isso? O termo é mais esotérico do que eu pensaria? Supondo que um candidato não conheça o termo, existem perguntas de acompanhamento que poderiam me ajudar a esclarecer se eles pelo menos internalizaram as práticas que fazem o RAII funcionar? Existem perguntas alternativas "weeder" melhores que dão ao candidato alguma margem de resposta e ajudam o candidato a demonstrar sua compreensão do desenvolvimento de C ++?
Edição para adicionar : para esclarecer, não sou o tipo de entrevistador que desqualifica as pessoas porque elas não sabem palavras-chave e acrônimos. No entanto, acho razoável esperar que um programador C ++ experiente tenha internalizado boas práticas para gerenciamento de recursos. Também acho importante verificar se um candidato entende alguns "conceitos básicos" sobre a tecnologia em que afirma ter experiência antes de passar para perguntas mais interessantes sobre design, resolução de problemas etc. Acho que o que estou procurando é uma boa maneira fazer uma pergunta aberta, adequada para uso em uma breve triagem por telefone, que eu possa usar para julgar o entendimento básico de um candidato sobre boas práticas de gerenciamento de recursos em C ++, antes de fazer perguntas "difíceis".