Rodrigo Strauss :: Blog
Como contratar um bom programador
Uma reclamação constante entre programadores é a (falta de) qualidade dos processos de seleção das empresas. Outra reclamação constante é das empresas, sobre a dificuldade de contratar bons programadores. Tentei separar aqui alguns pontos que eu acredito que podem melhorar um processo de seleção de programadores, tanto para empresa quanto para o candidato:
Pague um salário justo. É lógico que reduzir os custos é uma das metas de toda empresa, mas essa é mais uma tentativa de economizar que custa caro no médio prazo. A área de programação tem empregos à vontade para quem tem o mínimo de qualificação - sim, o mínimo é suficiente. Se você paga uma salário baixo, 10% de aumento é um aumento ridículo em termos reais, o que faz com que uma empresa concorrente possa tirar um funcionário seu em uma fase crítica de um projeto pagando R$ 250,00 a mais. Normalmente as empresas pagam quanto o funcionário quer receber quando ele pede menos que o valor de mercado, e vêem nisso uma grande oportunidade - afinal, foi ele que pediu para ganhar esse salário. Com a internet, sua empresa não conseguirá esconder por muito tempo que o salário dele é baixo.
Não minta sobre as condições de trabalho. Ele pode descobrir isso rápido, enquanto ele ainda tem outras entrevistas em aberto. Você corre o risco de perder seu novo funcionário em algumas semanas, e ter que começar o processo de seleção novamente, pedindo pelamordedeus para que os candidatos que não foram escolhidos antes reconsiderem e façam uma nova entrevista ou negociação.
Mostre ao candidato que existe um canal aberto para negociações. Na maioria das vezes a forma mais fácil de ganhar um aumento é arrumar outro emprego e pedir mais. Se não der certo, pelo menos você não brigou com ninguém no seu emprego atual e tudo continua como estava. O risco é menor. Mostre que se ele pedir o dobro do salário e você falar não, isso não vai torná-lo um renegado, só será uma resposta negativa.
Evite testes teóricos longos. Isso é extremamente irritante e demorado, além de você arriscar perder o candidato. A última vez que resolvi mudar de emprego, eu estava fazendo entrevistas em duas empresas, uma na área de segurança da informação e outra na área financeira. Eu tinha preferência pela empresa de segurança, pois era a área que eu mais gostava e tinha mais experiência. Só que o processo seletivo da empresa de segurança era tão horrível (RH, dinâmica de grupo, lentidão, etc), que eu fechei com a empresa da área financeira. A entrevista na empresa financeira foi rápida, focada na parte técnica e com a pessoa que seria meu gerente. Dei sorte, estou nessa empresa até hoje, e o processo de seleção tem vários dos pontos que eu sugiro aqui. Já a empresa de segurança perdeu um funcionário especializado numa área onde não é fácil encontrar profissionais.
Faça uma entrevista mais técnica. Reduza o contato dele com a equipe de RH ao mínimo necessário. Pode parecer pedante da minha parte (afinal, sou um programador), mas se o candidato quisesse lidar com burocracia ele não seria um programador, teria outra profissão. Faça primeiro a entrevista técnica, deixe as burocracias para depois. Você só vai conseguir que o candidato fique animado com a sua empresa depois que ele puder saber exatamente o que ele vai fazer, e o pessoal do RH não vai conseguir explicar. Imagine o diálogo:
- É framework 1.1 ou 2.0?
- Acho que é 2.0. É o mais novo, né?
- Sim é o mais novo. Você acessam o Oracle usando OLEDB ou usando o provider nativo?
- É... ã... Não sei.
O candidato vai se sentir muito mais a vontade conversando com outro programador.
Faça o candidato escrever código na entrevista. Nem que você tenha que contratar um programador free lancer só para fazer as entrevistas. Ele não vai codificar no trabalho? Como você sabe como ele se sai fazendo isso antes de vê-lo programando? Peça para ele fazer um programa pequeno, nada que tome mais do que 1:30hs.
Coloque um requisito não negociável no teste de codificação. Crie um requisito que não seja fazer o mais óbvio nem a melhor opção, só para descobrir o quanto o candidato é xiita e o quanto ele respeita o que está sendo solicitado. Exemplos:
- Obrigue-o a usar o Visual C++ 6, mesmo que ele prefira (e possa) usar o 8
- Obrigue-o a não usar generics em C# para manter compatibilidade com o .NET Framework 1.1
- Proiba-o de criar procedures e obrigue-o a colocar as consultas diretamente na aplicação
Você descobrirá logo a quantidade de chilique que você terá que aguentar quando pedir para ele fazer algo que ele não acredita ser o melhor, mas que é requisito do sistema por algum motivo de força maior. Um programador experiente explicaria que não é a melhor forma mas faria o que você pediu.
Faça a primeira entrevista por telefone. Uma primeira entrevista técnica por telefone ajuda muito para filtrar os candidatos não qualificados, com um custo mais baixo. Faça algumas perguntas técnicas básicas e peça para que ele resolva algum problema simples, que não envolva escrever código diretamente. Exemplos:
- Como você organizaria uma rotina de backup e quais softwares usaria?
- Que containers da STL você usaria para controlar os usuários conectados em um servidor?
- Como você faria comunicação entre duas threads?
- O que é necessário para um objeto COM+ suportar pooling?
- Que módulos você precisaria para fazer um sistema de pedidos em C# usando MSMQ?
- Quais tabelas seriam necessárias para controlar o saldo e as operações de uma conta bancária?
- Se você trabalhasse em uma fábrica de canetas, como testaria uma caneta no controle de qualidade?
Não acredite cegamente em certificações. Faça o candidato escrever código e pergunte dos projetos que ele já participou e qual o papel dele nesses projetos. Pergunte como ele resolveu os problemas que apareceram durante os projetos. Uma certificação ajuda, mas não resolve, conheço um monte de programadores que têm certificação e são bons programadores, mas também conheço vários que têm certificação mas não conseguem fazer um sistema. Não limite uma vaga somente a profissionais com certificação, a não ser que a Microsoft/Sun/IBM/etc pare de te dar dinheiro por causa disso. Existem MUITOS profissionais bons que não tiraram certificação. E antes que perguntem, eu tenho 3 certificações (C++, C# e VB.NET) e elas são ótimas para encher lingüiça no meu curriculum, da parte técnica não me acrescentaram nada (lembrem-se: minha opinião, meu caso específico, muita gente aprende muita coisa estudando para tirar certificação).
Nada de grandes testes psicológicos ou dinâmica de grupo. Você não está contratando vendedores. Independente da discussão sobre a valia desses testes, você pode espantar bons candidatos. Um programador precisa saber se comunicar como qualquer profissional, mas ele muitas vezes nem terá contato com os clientes. Muitos bons programadores não são bons oradores ou negociadores, não é um requisito da profissão. Se você faz testes psicológicos para reduzir as possibilidades de contratar alguém que desestabilize a equipe e atrapalhe, mude sua estratégia. Contrate todos os bons técnicos que sejam sociáveis somente o suficiente para trabalhar. E comece a demitir mais. Isso mesmo, contrate o candidato, se ele atrapalhar ou for incompetente, demita-o. É mais fácil e sua equipe ficará muito feliz em saber que caso alguém entre para desestabilizar e atrapalhar, a empresa resolverá esse problema rapidamente. Acredito que muita gente já tenha trabalhado em alguma empresa onde alguém atrapalha o andamento dos projetos e ninguém toma uma atitude, ninguém demite o infeliz. O gerente dorme com a consciência mais tranquila (como se omissão fosse um motivo para isso) enquanto todo o resto da equipe é obrigada a suportar o stress de trabalhar com alguém desse tipo.
Proporcione o básico: paz pra programar, um micro bom e um salário justo. É só isso que um programador quer. Muitos bons programadores não estão preocupados com planos de carreira ou possibilidade de cargos de gerência (um dos argumentos preferido das "meninas do RH").
Não prometa nada que não possa cumprir, não use velhos truques. Talvez você consiga contratar um bom programador com promessas falsas, mas não vai conseguir mantê-lo por muito tempo.
Em 04/05/2007 21:05, por Rodrigo Strauss





Excelente!
Todas as empresas deveriam ler isso.
E como complemento, o texto do Joel:
http://www.joelonsoftware.com/articles/GuerrillaInterviewing...