Em busca dos poucos da elite – encontrando e contratando os melhores desenvolvedores de software do setor
Publicados: 2022-03-11O desafio
Contratar talentos de desenvolvimento de software – talento real – é uma habilidade multifacetada que se encontra na encruzilhada de redes sociais, perspicácia técnica, gerenciamento de processos e intuição. Qualquer pessoa que já teve responsabilidade de contratação entende muito bem a extensão e a profundidade do desafio de contratação.
Particularmente desafiador é o fato de que as qualidades marcantes de candidatos excepcionais à engenharia de software são extremamente difíceis de avaliar. Como você explora a capacidade de um candidato de inovar e pensar criativamente? Como você determina se ele é um jogador de equipe? Como você diagnostica sua capacidade de receber feedback construtivo? Como você investiga a fibra moral de alguém?
Embora avaliar esses critérios “soft” não seja uma tarefa fácil, fazê-lo é essencial na busca de contratar os melhores. No entanto, com muita frequência, as tentativas de avaliar esses atributos cruciais, mas evasivos, consistem em perguntas ou desafios que são suficientemente transparentes para que as respostas “corretas” sejam óbvias para a maioria dos candidatos. Assim, nada de substancial é alcançado perguntando-lhes.
Uma armadilha comum resultante é, em vez disso, se concentrar demais em minúcias técnicas, em vez de avaliar a capacidade do candidato de resolver problemas, pensar criativamente e trabalhar de forma compatível com o restante da equipe.
É certo que entrevistar e contratar desenvolvedores de software avançados é tanto uma arte quanto uma ciência. No entanto, existem abordagens e metodologias para avaliar as dimensões mais sutis das habilidades e habilidades de um engenheiro de software.
Quando usadas coletivamente, essas técnicas de recrutamento geram um processo de triagem altamente eficaz com um histórico comprovado de sucesso na contratação de talentos de programação assalariados ou freelance. Esse processo é o que este post trata.
Primeiros passos: enchendo o pipeline com o melhor
O processo de encontrar e contratar a elite começa muito antes da entrevista em si. Na verdade, uma abordagem sistemática para identificar adequadamente os candidatos potencialmente qualificados pode agilizar e aumentar significativamente a eficiência de todo o seu processo de recrutamento.
Sem dúvida, a melhor fonte de candidatos qualificados é o networking pessoal, já que pessoas de qualidade tendem a se associar a pessoas de qualidade. As referências pessoais dominam como a fonte mais produtiva para novas contratações bem-sucedidas (fonte).
Outras fontes valiosas de talentos técnicos de alto nível incluem:
- Blogs e postagens técnicas online. Blogs de desenvolvedores podem ser uma ótima fonte de candidatos fortes. Postagens técnicas geralmente fornecem informações valiosas sobre a perspicácia técnica de um desenvolvedor, abordagem para resolução de problemas e habilidades de redação, todos critérios importantes para identificar candidatos de primeira linha.
- Contribuidores de código-fonte aberto. Examinar projetos de código aberto em sites como GitHub e SourceForge pode gerar candidatos altamente qualificados. Um benefício adicional dessa abordagem é que ela permite que você veja e avalie as amostras de código de um candidato antes mesmo de decidir entrar em contato.
- Conferências. Os palestrantes e co-participantes de conferências técnicas relevantes geralmente fornecem um recurso valioso para candidatos qualificados. Se você não puder comparecer, revise o programa on-line e considere entrar em contato com os apresentadores. Você pode simplesmente contatá-los “no momento certo”, ou eles podem encaminhá-lo para outra pessoa altamente qualificada.
A beleza desses recursos é que eles fornecem candidatos de engenharia que você examinou, de uma forma ou de outra, antes mesmo de entrevistá-los. Ou alguém em sua empresa, ou alguém que você conhece, os conhece e os recomenda altamente. Ou você revisou seu código-fonte aberto e está devidamente impressionado com ele. Ou suas postagens no blog sugerem um nível maduro de conhecimento técnico e compreensão (e idealmente até mesmo senso de humor :-) ). A chave aqui é que, no momento em que você faz contato, o candidato já é significativamente mais do que “apenas mais um currículo”.
Além disso, considere o uso de modelos de descrição de trabalho (como esses para SEO, desenvolvimento web front-end e desenvolvimento web back-end) que definam uma alta expectativa para os tipos de candidatos que você deseja.
Avaliando a perspicácia técnica dos desenvolvedores de software
Uma determinação efetiva de proficiência técnica vai muito além das nuances de uma linguagem ou tecnologia de programação específica. Embora esses detalhes técnicos certamente não devam ser ignorados, eles normalmente não são o elemento mais importante do processo de avaliação.
É a força e compreensão técnica fundamental do candidato, o pensamento criativo e a resolução de problemas que são fundamentais para avaliar.
Os melhores desenvolvedores não perdem tempo guardando na memória o que pode ser facilmente encontrado em uma especificação de linguagem ou documento de API. Além disso, aprender uma nova linguagem, tecnologia ou padrão de projeto é um exercício relativamente trivial para um desenvolvedor forte (e, na verdade, é uma habilidade essencial, dada a taxa acelerada em que novas tecnologias estão sendo introduzidas e ganhando participação de mercado). Portanto, é fundamental avaliar a força e a compreensão técnica do candidato, o pensamento criativo e a resolução de problemas.
Um método comprovado para fazer isso é apresentar um desafio de programação sem restrições de linguagem . Apresente um problema ao candidato e peça-lhe para codificar uma solução no idioma de sua escolha. Os únicos requisitos devem ser que a solução seja completa e correta, incluindo o tratamento de quaisquer condições de borda ou erros potenciais. Lembre-se, o objetivo aqui é avaliar a capacidade do candidato (a) de resolver problemas, (b) conhecimento de ciência da computação e (c) estilo de codificação. Você não está neste momento avaliando a aptidão em uma linguagem de programação específica. (Um benefício adicional dessa abordagem, aliás, é que ela evita exigir que o entrevistador seja um especialista no idioma em que o candidato está codificando.)
Existem vários recursos on-line dos quais você pode selecionar esses desafios de programação para incorporar ao seu processo de entrevista. Aqueles que se concentram em algoritmos (em vez de conhecimento de uma linguagem de programação específica) facilitam a avaliação da base de ciência da computação de um candidato e dos recursos de resolução de problemas. Alguns exemplos notáveis incluem hackerrank.com, projecteuler.net e beatmycode.com. Tenha em mente, porém, que você não precisa usar esses sites para administrar os testes; em vez disso, você pode simplesmente usá-los como recursos para selecionar desafios e, em seguida, fazer com que o candidato codifique uma solução durante a entrevista pessoal (em um quadro branco, etc.).
Dito isto, o teste online pode ser um componente adicional valioso do seu processo de entrevista. Ao usar os serviços de teste online, porém, é importante evitar o risco de se concentrar demais nas pontuações geradas pelo site de um candidato, em vez das especificidades de suas soluções. Por um lado, você pode não concordar com as métricas de avaliação empregadas pelo serviço de teste. Além disso, pode haver aspectos de uma solução que você considere particularmente inteligente ou elegante, aos quais o processo de avaliação automatizado pode ser totalmente alheio.
Há também o potencial para “falsos positivos” ou “falsos negativos” com classificações fornecidas por serviços de teste online. Por um lado, os falsos positivos podem resultar em desperdício de tempo e recursos entrevistando candidatos não qualificados, enquanto os falsos negativos podem desqualificar candidatos que mereciam consideração. A longo prazo, este último tem ramificações mais sérias e, portanto, é algo que deve ser monitorado cuidadosamente.
Em geral, os testes administrados pessoalmente são inerentemente mais confiáveis do que os administrados online, pois reduzem o potencial de engano. Além disso, os testes presenciais oferecem a oportunidade de observar como um candidato a engenheiro de software opera sob pressão. No entanto, o uso de serviços de teste on-line pode ser um componente eficaz do tipo mais abrangente de processo de triagem aqui defendido, que incorpora outras técnicas para ajudar a eliminar candidatos fraudulentos ou subqualificados.
Os testes de desenvolvimento online também podem servir como um filtro preliminar valioso para eliminar a porcentagem incrivelmente alta de candidatos cujas habilidades técnicas estão muito abaixo do esperado. Curiosamente, muitos desses candidatos abandonam o processo sem sequer tentar fazer os testes, por falta de confiança. Dito isto, a confiança nem sempre é o melhor barômetro de atitude, como atesta o efeito Dunning-Kruger.
Outra técnica extremamente valiosa para avaliar a perspicácia técnica é pedir ao candidato que forneça uma lista de projetos de código aberto que ele criou, ou pelo menos contribuiu, em sites como GitHub e SourceForge (se ele for apenas um colaborador, peça para ele indicar a você quais partes do código eles criaram pessoalmente). Você pode então vir para a entrevista tendo revisado seu código, preparado para perguntar sobre decisões específicas de design, estilos de codificação, padrões empregados e assim por diante. Tal discussão pode ser substancialmente mais valiosa do que simplesmente questionar o candidato sobre as minúcias técnicas de um idioma.

Falando em linguagem…
Os membros da elite não são apenas tecnologicamente experientes, eles são profissionais de desenvolvimento de software consumados que se comunicam de forma clara, eficaz e sucinta, tanto verbalmente quanto por escrito.
As habilidades de comunicação verbal são fáceis de avaliar no decorrer de uma entrevista, seja pessoalmente ou por telefone. Embora as habilidades verbais sejam reconhecidamente menos críticas em certas funções técnicas de “sala dos fundos” que não envolvem contato com o usuário, elas ainda são importantes para maximizar as interações eficazes da equipe e o intercâmbio de ideias.
As habilidades de comunicação escrita podem ser melhor avaliadas pedindo ao candidato que forneça amostras de escrita. Amostras de redação técnica são fortemente preferidas, pois demonstram não apenas habilidades de escrita, mas também clareza técnica. Solicitar essas amostras antes da entrevista pode ser particularmente útil. Por um lado, isso oferece a oportunidade de revisar e analisar seus escritos com antecedência, para que você possa chegar à entrevista preparado para discutir e criticar seus escritos com eles. Além disso, alguns candidatos técnicos serão “desapontados” pela solicitação de amostras de redação que, por si só, podem servir como um filtro valioso.
O Dilema Moral
Há uma velha piada sobre um pai que quer ensinar ética ao filho. O pai conta ao filho que ele e o sócio têm um negócio de lavagem a seco. Um dia, conta o pai, uma cliente entra em nossa loja para buscar sua roupa na lavanderia. Quando a cliente se vira para sair, percebo que ela pagou 10 dólares a mais. OK, então aqui vem a ética... eu conto ou não para o meu parceiro?!
Em contraste, dilemas éticos reais – dilemas morais – muitas vezes podem ser obscuros e complexos e certamente se apresentam nos negócios. O desenvolvedor de software mais forte pode causar estragos incalculáveis em um projeto se não tiver uma bússola moral devidamente calibrada. Esta dimensão de um candidato é, portanto, fundamental para avaliar.
Uma técnica altamente eficaz para conseguir isso é apresentar ao candidato um dilema moral hipotético e perguntar o que ele faria na situação. Para que isso seja eficaz, é essencial que o dilema não tenha uma resposta óbvia. Idealmente, qualquer resposta possível deve ser imperfeita e um tanto problemática. A resposta que o candidato fornece a essa pergunta pode fornecer uma visão enorme de como eles pensam, seus padrões éticos e suas prioridades.
Aqui está um exemplo:
A empresa em que você trabalha foi contratada para trabalhar em um projeto por outra empresa. O projeto requer o uso de um subcontratado específico. Você trabalhou anteriormente para esse subcontratado e, portanto, sabe em primeira mão que eles costumam preencher suas horas e sobrecarregar seus clientes por seu tempo. Se eles fizerem isso neste projeto, porém, não prejudicará sua empresa, pois esses custos serão repassados ao cliente da sua empresa. Você mencionou isso ao seu chefe e ele o aconselhou a não dizer nada ao cliente, especialmente porque a parte do projeto do subcontratado representa apenas uma pequena fração do orçamento geral. Você tem um amigo muito próximo que trabalha para o cliente. Um dia, durante o almoço, seu amigo lhe pergunta o que você sabe sobre esse subempreiteiro, pois ele sabe que você trabalhou lá. Como você responde e o que você diz a ele?
A beleza aqui é que não há uma resposta claramente “certa” e a situação reflete a complexidade moral da vida real e do mundo dos negócios. Se perguntada corretamente, a resposta para essa pergunta de “dilema moral” pode ser uma das partes mais reveladoras e valiosas do processo de entrevista para a contratação de desenvolvedores de software.
Conhecendo você (Quem é você realmente ?)
Uma das falhas inerentes ao processo de entrevista é que realmente não há como saber como será trabalhar com uma pessoa até que você realmente trabalhe com ela. Obter uma noção realista da personalidade e do temperamento de um candidato é, no entanto, crucial para uma contratação bem-sucedida.
A elite técnica não é apenas tecnicamente superior, mas também altamente profissional. A busca por eles não se limita, portanto, a uma avaliação estritamente técnica.
Com isso em mente, aqui estão algumas técnicas de entrevista que podem ser benéficas para avaliar a personalidade e o profissionalismo de um candidato…
Por um lado, considere iniciar intencionalmente o processo de entrevista com uma pré-triagem por um membro da equipe não técnica (como um assistente administrativo). Você pode então perguntar a esse membro da equipe como o candidato o tratou quando percebeu que não era técnico. Eles eram humilhantes, impacientes e condescendentes, ou eram agradáveis, pacientes e respeitosos? O que o membro da equipe relata para você pode ser muito revelador. Você quer saber se o candidato trata os outros com respeito, independentemente de quem eles sejam.
Ao longo da entrevista, procure oportunidades para fornecer ao candidato um feedback construtivo. Observe cuidadosamente a reação que isso provoca. O feedback é apreciado ou o candidato parece ficar na defensiva?
Participe de um “chat chat” não técnico nos primeiros 5 ou 10 minutos de uma entrevista como meio de obter informações sobre a personalidade do candidato. O candidato pode pensar que isso é simplesmente um prelúdio para a entrevista real e, portanto, será mais provável que “desabafe”. Você pode, assim, discernir uma quantidade surpreendente sobre a personalidade deles durante esse período. E, claro, se eles exibem senso de humor, isso é sempre um bom sinal. :-)
Além dessas técnicas gerais para contratação de engenheiros, aqui estão alguns exemplos de perguntas para ajudar a avaliar a personalidade, a confiança, a honestidade e o profissionalismo de um candidato :
- Ao olhar para trás em sua carreira, qual é uma situação difícil específica com a qual você se deparou que se destaca em sua mente? Descreva o desafio e como você lidou com ele em detalhes. O que você sente que lidou particularmente bem? O que você faria diferente se tivesse a oportunidade de fazer tudo de novo?
- Qual é o maior erro que você acha que já cometeu em sua carreira?
- O que você mais gosta no desenvolvimento de software? O que você menos gosta?
- Se você pudesse pintar a posição ideal para você, qual seria? Como seria em termos de seu papel e responsabilidades, tamanho e tipo de empresa, ambiente de trabalho e assim por diante?
- Quais são seus maiores pontos fortes? O que ganharíamos contratando você?
- Nenhum de nós é perfeito. Quais são alguns aspectos da sua personalidade que você está trabalhando para melhorar?
- Se eu ligasse para seu chefe atual e perguntasse sobre você, o que ele ou ela me diria?
- Com o que devemos nos preocupar ao contratá-lo?
Coletivamente, essas perguntas e técnicas provaram promover uma compreensão muito mais forte e profunda de quem o candidato realmente é, o que é vital para tomar uma decisão de contratação bem-sucedida.
O sentimento é mútuo?
Então, você encontrou um candidato A+. Altamente qualificado. Personalidade positiva e otimista. Excelente ajuste cultural. Isso é ótimo! Mas…
Ainda há uma pergunta crucial que precisa ser respondida: até que ponto o candidato está especificamente interessado em sua posição disponível e em trabalhar para sua empresa? A resposta para isso é de suma importância para garantir uma contratação bem-sucedida. Os relacionamentos unilaterais não funcionam melhor nos negócios do que em qualquer outro aspecto de nossas vidas.
Mais uma vez, simplesmente fazer a pergunta diretamente é de valor mínimo, pois, no contexto do processo de entrevista, deve-se desconfiar da franqueza de um candidato ao responder a tal pergunta. Pelo contrário, isso é algo que se deve tentar verificar por outros meios menos diretos.
Para começar, a maneira como o candidato se aproxima de você desde o início é um indicador de interesse bastante confiável. O candidato oferece uma explicação convincente e convincente de por que ele está particularmente interessado em sua empresa e na oportunidade disponível? Se assim for, isso não apenas mostra um interesse real, mas também um nível de maturidade e sofisticação profissional. Esse candidato claramente fez pelo menos algum nível de pesquisa prévia sobre sua empresa e a oportunidade antes de entrar em contato com você (em vez de simplesmente “atirar seu currículo pela cidade”).
Os candidatos que entram no processo de contratação de desenvolvedor depois de fazerem sua lição de casa sobre a empresa e seus produtos ou serviços fornecem um indicador útil de seu interesse e conhecimento. Os candidatos que chegaram a fazer pesquisas antecipadas sobre o entrevistador (por exemplo, ler sua biografia, perfil do LinkedIn, postagens de blog e assim por diante) são particularmente notáveis. Candidatos mais sofisticados farão questão de revelar essas informações no decorrer da entrevista. Para outros, perguntas simples e abertas, como “O que você sabe sobre nossa empresa?” e "O que em particular lhe interessa sobre nossa empresa e esta posição?" pode provocar respostas muito reveladoras.
Por fim, um candidato genuinamente interessado provavelmente fará perguntas durante o processo de entrevista. Apesar disso, é sempre bom encerrar a entrevista perguntando se o candidato tem alguma dúvida. A falta de qualquer pergunta pode ser uma bandeira vermelha, mesmo para alguém que de outra forma seria considerado um candidato A+.
Embrulhar
As técnicas aqui descritas podem servir como um valioso processo central para encontrar e contratar desenvolvedores de software que sejam os melhores do setor. No entanto, é importante lembrar que uma contratação eficaz não é um destino, é uma jornada. É preciso reavaliar e ajustar continuamente seu processo, pois um processo estático está destinado a se tornar um processo morto.
A jornada de cada empresa será diferente, com base em sua própria cultura e prioridades. Encontre o caminho certo para sua organização e execute-o. Você terá sucessos e fracassos, mas desde que aprenda com o último, pode ter certeza de que está no caminho certo.