Home > Gestão

Como (realmente) avaliar o conjunto de habilidades de um desenvolvedor

Contratar desenvolvedores de aplicativos de software está claramente ficando mais difícil, mais complexo e mais multifacetado

Adrian Bridgwater, CIO Connect

17/12/2018 às 9h27

Foto: Shutterstock

A interpretação de currículos no mundo técnico é muitas vezes considerada um assunto simples. Argumenta-se que é comparativamente mais fácil avaliar habilidades técnicas precisas do que (por exemplo) medir competência e proficiência em Artes, carreiras envolvendo Ciências Sociais ou funções em que as competências definidas são mais intangíveis e subjetivas.

Um desenvolvedor conhece uma quantidade x de idiomas, um número y de ambientes de desenvolvimento e conjuntos de ferramentas, trabalhou para empresas do tipo z em equipes de projetos específicos... e está confortável com uma plataforma específica (como no Windows, Linux, Apple, outro) ou uma combinação definida de plataformas.

Além disso, um desenvolvedor terá um 'tipo' especificamente classificado, isto é, será um especialista em interface do usuário, um administrador de banco de dados ou um administrador de sistema (talvez não desenvolvedores, por algumas definições, mas ainda essencialmente da mesma família), um desenvolvedor de segurança ou um programador...

Isso tudo torna a contratação, colocação e remuneração de desenvolvedores supostamente muito simples, certo? O problema é que não é tão fácil assim no mundo real.

Razões para complexidade
A ascensão do conhecido desenvolvedor de 'pilha completa' na interface de usuário front-end, na rede de camada intermediária e na codificação do lado do servidor torna inerentemente mais difícil definir programadores individuais hoje em dia.

Devemos também considerar a necessidade de desenvolvedores 'pessoa-pessoa' (quase não-nerd) que possam trabalhar dentro de equipes e ter uma boa comunicação pessoal com outros programadores e clientes. Essa realidade agora vem à tona porque o software precisa mudar muito mais rápido no mundo sempre orientado a dispositivos móveis.

Então, as coisas estão realmente ficando muito mais difíceis e, em caso afirmativo, como devemos nos posicionar para medir as habilidades do desenvolvedor nesta superfície de trabalho aparentemente muito mais desigual?

Tempero complexo e sabor
Randall Degges é chefe da equipe do programa de defesa de desenvolvedores da Okta. Ele explica que contratar um bom desenvolvedor sênior pode ser complexo, porque não há maneiras confiáveis ​​de testar as habilidades de alguém e descobrir como são verdadeiramente experientes.

"Você não pode, por exemplo, dar a alguém um problema complexo de programação e esperar que ele saiba a resposta rapidamente. Você também filtraria 99 por cento dos candidatos qualificados dessa maneira e poderia acabar eliminando excelentes candidatos". disse Degges. "A melhor maneira de determinar habilidades é conversar com os candidatos. Descubra quais projetos eles construíram e faça perguntas específicas indo fundo nesses projetos. Discuta arquitetura, problemas, soluções, erros e assim por diante."

A própria Okta realiza uma entrevista, além de um projeto que deve ser desenvolvido e apresentado para todos os candidatos. A empresa insiste que esse processo de 'apresentação' é crítico porque destaca as habilidades, mas também mostra a qualidade de um indivíduo.

"Quando os desenvolvedores constroem um projeto usando nossa tecnologia, queremos saber o que eles gostam. Mas também, crucialmente, queremos saber de quais coisas eles não gostam e com quais problemas eles se deparam. A capacidade de reconhecer e julgar a qualidade do software, em qualquer serviço ou ferramenta, é extremamente importante para os desenvolvedores seniores, já que essas são as pessoas que estarão impulsionando o produto nos próximos anos", disse Degrees.

Caminho de menor resistência
David Ives é gerente de engenharia na Pusher. Ele está ativamente envolvido no processo de contratação da empresa para sua equipe de engenharia de software.  Ives sempre dá a um potencial membro da equipe um problema real para ser analisado durante a entrevista. Na sua avaliação, o "método e abordagem" usados pelo candidato são mais importantes do que os resultados iniciais.

"Não estamos preocupados com o quão bem eles possam reverter uma árvore binária em um quadro branco. Queremos ver como eles abordam o tipo de desafios que enfrentarão ao se juntarem a nós", disse Ives. "Independentemente da linguagem ou da tecnologia usada, os melhores engenheiros sempre procurarão a solução mais simples primeiro - eles não serão mais engenhosos, vão interagir".

Parte do segredo, da perspectiva Pusher, é procurar desenvolvedores que se afastem e questionem se o que eles receberam realmente é um problema, em vez de mergulhar de cabeça na construção de uma solução complexa de microsserviços. Eles farão as perguntas certas e tentarão entender completamente o que estão tentando resolver antes de disparar a toda velocidade.

Ives insiste que um engenheiro de alta qualidade, realmente, deve ser capaz de explicar uma solução para um problema incrivelmente complexo de uma maneira que seja simples o suficiente para que alguém possa entendê-lo, mas ainda assim ser detalhado e completo o suficiente para dar confiança na abordagem.

Co-fundador do ICOBox, Daria Generalova concorda que classificar os candidatos pode ser um processo complicado de entrevistas e testes de codificação e seleção de pilhas de currículos. O problema se torna mais difícil devido ao grande número de diferentes tipos de qualificações e certificações que os desenvolvedores apresentam hoje em dia.

Declaração de independência
Distinguir os melhores talentos pode ser ainda mais difícil quando você (obviamente) deve considerar que cada candidato geralmente trabalha duro para apresentar a melhor 'versão de si' no processo de contratação.

"No entanto, um marcador importante que parece consistentemente indicar um candidato será um recurso valioso para encontrar aqueles com um histórico de projetos independentes de alta qualidade. A relevância ou complexidade dos projetos fala muito. Eles também indicam várias habilidades sociais, como a auto-motivação, determinação, independência e criatividade, que podem ser inestimáveis para o seu projeto ", disse Generalova.

Contratar desenvolvedores de aplicativos de software está claramente ficando mais difícil, mais complexo e mais multifacetado, não mais fácil. Não se trata apenas de ser capaz de lançar código e analisar dados. É necessária uma abordagem muito mais holística para avaliar habilidades técnicas e procurar por competências em gerenciamento de projetos, comunicação interpessoal e outras soft skills.

"Soft skills são mais interessantes para nós agora. A contratação ideal é alguém como analista de negócios, gerente de projetos, arquiteto de peças e gerente de processos. Cada um deles costumava ser trabalhos separados, mas todos são necessários em um desenvolvedor hoje", disse Geoff Parkhurst, CTO da VoucherCloud.

Desenvolver as habilidades do desenvolvedor
Dada a necessidade de um novo excesso de engenheiros de software nativos da nuvem e aqueles capazes de conectar-se à Internet das Coisas (IoT), microsserviços e a 'próxima grande coisa'  sobre a qual sequer estamos falando hoje… esse trabalho certamente ficará ainda mais difícil. Mas os desenvolvedores não deveriam estar construindo ferramentas de desenvolvimento para resolver esse problema? Sim, isso está acontecendo.

"O que torna a medição de habilidades tecnológicas tão difícil - o ritmo acelerado dos avanços tecnológicos - é o que estamos usando agora para determinar a experiência de um desenvolvedor. Ao criar uma experiência de teste adaptativa e preditiva usando uma série de algoritmos, podemos quantificar a proficiência em habilidades, com precisão, em apenas cinco minutos, através do Pluralsight IQ", disse James Aylward, vice-presidente sênior e chefe de dados de produtos da Pluralsight.

Enquanto a Pluralsight, com sede em Utah, tem um mercado inegavelmente crescente e está claramente usando o poder da análise algorítmica para a vantagem de seus clientes, ainda é (muito discutível) 'apenas' uma análise matemática clínica da competência de habilidades. Ninguém construiu ainda algoritmos capazes de analisar a competência técnica do desenvolvedor combinada com habilidades interpessoais suaves, além de capacidade de auto-arranque e ajuste cultural.

Esse trabalho de programação específico ainda está aberto.

Junte-se a nós e receba nossas melhores histórias de tecnologia. Newsletter Newsletter por e-mail