Faz-me rir: Por que �© t�£o dif�­cil encontrar bons programadores ?

Vejam o "tosco" artigo que saiu na webinsider, escrito por Marcelo Okano. Porque será que tiraram o artigo do ar ?

--

Por que é tão difícil encontrar bons programadores

Ã? um problema sério no mercado: programadores bons normalmente estão empregados e a concorrência com as trocentas empresas de TI que estão pipocando por aí fazem com este profissional seja realmente valorizado.

Formar programadores nem sempre é uma boa opção, pois eles tendem a ir embora com o tempo, seduzidos pelo mercado. No entanto, mesclar bons programadores da empresa com programas de estágio, renovação constante e incentivos de curto e médio prazo pode ser uma boa opção. O mercado de TI está em franca expansão no Brasil e a tendência é ficar cada vez difícil a tarefa de se achar desenvolvedores no mercado.

Ã? bom ter programadores estagiários?

Ã? ótimo quando você tem programadores mais experientes dando tutoria a estagiários. Mas quando você usa o estagiário como mão de obra barata, está dando um tiro no pé. Vai precisar ler meu artigo sobre crises se ficar se cercando de estagiários.

Qual a diferença entre programador Júnior, Pleno e Sênior na prática?

Programador Júnior. Recebe pouco, não tem experiência, precisa de acompanhamento e te complica em situações de crise ou estresse. Funciona bem mas sem o devido acompanhamento vai trazer problemas.

Programador Pleno. Recebe médio, experiência média, não precisa de acompanhamento, costuma se enrolar em projetos grandes mas resolve na maioria da vezes. Ajuda em momentos de crise sem bem orientado, caso contrário, tem a tendência em assumir posicionamento defensivo.

Programador Sênior. Recebe bem, você acha que nunca precisa dele, mas em momentos de crise é o cara que salva a sua vida. Se você nunca precisou de um cara bom, é porque nunca se meteu em encrencas.

O que usar? ASP, PHP, Cold Fusion, Java, ASP.net ou outras?

ASP. Fácil de achar programadores, muito popular, curva de aprendizado baixa, pouca performance. Os projetos, quando crescem, tendem a ficar ruins por falta de meios de modularização e as IDEs (softwares que ajudam na programação) não são muito poderosas. Média produtividade. Ã? péssima para dar manutenção mas é fácil de achar quem faça.

PHP. Tem programadores de sobra, muito popular, curva de aprendizado média, média performance. Média produtividade. Médio para dar manutenção pois tem uma estrutura mais inteligente que ASP (é Orientada a Objetos).

ASP.net. Médio de se achar programadores, curva de aprendizado alta, alta performance. Quando utilizada por quem entende, a manutenção é fácil independente do tamanho do projeto. Boa produtividade. [Recomendada]

Cold Fusion. Muito boa, melhor que ASP, mas pior que ASP.NET, difícil de achar programadores e pouco popular. Esqueça.

Java. Existem muitas formas diferentes de se programar para web usando Java com vários frameworks e tecnologias. O programador tem ser especialista no framework e tecnologia. Curva de aprendizado alta, boa performance, programador difícil de achar e caro, baixa produtividade comparada com as outras acima. Em outros ambientes (não web) é a melhor escolha na maioria das vezes.

Outras. Esqueça as outras. Não é interessante detalhar os motivos, mas passam pela curva de aprendizado, popularização e dificuldade achar profissionais.

Qual é o melhor lugar para se contratar um programador?

No site da Apinfo.

Qual é a forma mais eficiente para avaliar programadores? Como saber se ele é bom?

Faça um teste prático, você ficará surpreso com a falta de conhecimento das pessoas em questões básicas mesmo que elas afirmem no currículo que são especialistas. Avalie junto com uma pessoa técnica.

Procure coerência entre conhecimento e experiência. Pergunte no que ela é boa e não se iluda com siglas. Quanto mais siglas, pior, significa falta de foco e/ou pessoas generalistas. Generalistas são bons para darem manutenção, mas ruins para construírem do zero por não estarem focadas em boas práticas da tecnologia. Generalistas podem ser bons líderes de projeto se tiverem o devido perfil para tal.

O que você acha das consultorias de informática?

Existem dois tipos: consultorias de RH que contratam e alocam profissionais e consultorias de PROJETO, que executam o projeto como terceirizado.

RH. Cobra caro para achar o profissional, não avalia bem o conhecimento técnico e te manda qualquer um. Já me mandaram um cara que parecia um travesti, outro que tinha um problema mental (de verdade, ele mesmo me disse) e outro que era estagiário e foi vendido como programador pleno. Trabalhei com várias consultorias de RH.

Projetos. Só querem te cobrar muito caro e vender horas, não projetos. Fique atento ao escopo do projeto, você terá problemas se aumentar o escopo e não estiver disposto a pagar mais.

Quais são as piores coisas para um programador dentro da empresa?

  • Pressão para entregar um projeto

  • Gente que não entende nada, mandando e dando opinião

  • Mudança constante

  • "Invenção de moda"

  • Trabalhar com gente incompetente

Há vários outros, estes são os que vieram Ã?  cabeça agora.

Por que dá tanto problema na área de programação da agência?

A área de desenvolvimento de uma agência é a mais indomável de todas. Poucas vezes eu vi a parte de criação, redação e arte darem problemas, mas a área de programação é responsável por mais de 90% das crises de projetos. Não é necessariamente a causa das crises, mas os problemas do projeto sempre se refletem mais fortemente na programação, pois é uma área extremamente sensível a mudanças, planejamento ruim e atrasos dos outros.

O que você acha de programadores freelancers?

Péssima idéia, não tem coisa pior do que isso. Você tem que dar muita sorte para achar um programador freelancer bom e compromissado. Eu, por exemplo, conheço somente dois. Tem que procurar muito e constantemente.

O meu programador faz trabalho freelancers para outros?

Há 99,99% de chances dele fazer.

"Se ele faz trabalho freelancer, ele levar informações estratégicas da minha empresa!"

Isso é verdade, mas dificilmente isso ocorrerá porque essa idéia faz muito mais parte da sua "mente conspiratória" do que da dele. Ele só quer uma grana extra. Relax.

Se eu brigar com um programador, ele pode querer se vingar e apagar todos os sites ou o bancos de dados?

Pode ter certeza que isso é uma das coisas que vão passar pela cabeça dele. Você é muito inocente se não leva esta situação a sério. Eu já isso acontecer mais de uma vez.

Por que alguns programadores sempre orçam o tempo do projeto errado?

  • Ele é muito júnior

  • Você muda muita coisa no projeto sem consulta-lo ou exerce muita pressão. Com isso ele não consegue prever a mudança com precisão

  • Ele é realmente um incompetente ou não tem esta habilidade

Como um programador pode orçar o tempo de um projeto corretamente?

A forma mais segura de avaliar o tempo de um projeto é separa-lo em pequenos módulos (ou entregas) e calcular o tempo de cada módulo para chegar a uma estimativa segura.

Ã? importante que o escopo do projeto esteja bem detalhado para isso. Faça isso com um desenvolvedor experiente, evite programadores júniores nesta tarefa. A diferença de avaliação de tempo pode variar de acordo com o expertise, confiança e experiência do programador.

Como saber se a avaliação de tempo do projeto é correta se não entendo de programação?

Depois que o projeto estiver dividido em módulos, compare com a avaliação de tempo de outros módulos em outros projetos e procure incoerências.

Exemplo: um sistema de enquete não pode levar três dias para ser feito num projeto e seis dias em outro. Um cadastro simples demora muito menos tempo para ser feito do que um sistema de enquetes. Tendo um histórico de avaliações e utilizando bom senso e experiência, você pode fazer um bom julgamento sobre a avaliação de tempo no projeto.

Por que ele � s vezes fala que precisa de dois dias para uma tarefa e outras vezes a mesma tarefa dura cinco dias?

Certifique se as tarefas são realmente parecidas. Se forem:

  • Ele está querendo se proteger do excesso de trabalho

  • Ele é muito ruim

  • Ele está te enganando (mais comum)

Por que algumas pequenas modificações no projeto demoram tanto?

Existem projetos complexos ou mal programados onde pequenas modificações são realmente complicadas, mas a experiência e o conhecimento do programador podem influenciar este tempo. Isso é normal.

Antes de mandar um programador embora, do que é bom se certificar?

  • Verique se ele possui acesso a dados da empresas, senhas e logins. Mapeie para trocar logo após a saída dele

  • Tome cuidado se ele vai levar conhecimento embora. Se ele é o único que sabe mexer em determinado projeto, você terá problemas em dar manutenção neste projeto, pois outro programador terá o esforço de aprender o projeto para começar a mexer

  • Verifique a dificuldade em contratar outra pessoa com o mesmo conhecimento para a área

  • Preveja o impacto destas dificuldades na continuidade de seus projetos

O que fazer se o programador da minha empresa é um folgado?

Eu conheci muitos programadores realmente folgados, mas a sua empresa contribui muito para isso. Acontece normalmente quando ele é o único programador ou é gerenciado por pessoas que não entendem nada de programação e o tratam como se fosse um pasteleiro de feira. Tente identificar o motivo dele ser assim. Na maioria dos casos não tem jeito, tem que mandar ele embora.

Sou Atendimento. Se eu entendesse de programação, ou pelo menos me esforçasse, isso iria melhorar o trabalho dos programadores da minha agência?

Sem dúvida. Um dos maiores problemas das agências é que o cara que faz a venda ou lida com o cliente não entende nada do que vai ser programado.

Sou Arquiteto de Informação e faço wireframes na minha agência. Como posso melhorar a vida do programador que vai desenvolver o projeto?

Valide o wireframe com ele constantemente. Um dos grandes problemas que vejo nas agências é o fato das pessoas que fazem wireframes não entenderem de programação. Cansei de ver wireframes improgramáveis porque o AI não tinha conhecimento de programação, apenas visão de usuário.

O que vai acontecer se eu acelerar a programação? Botar o programador para fazer uma coisa muito rápido?

Você vai criar um programador que utiliza POG.

Ele vai fazer mal feito e vai te dar muita dor de cabeça quando você entregar o projeto para o cliente. Isso é tão certo quanto 1 + 1 = 2.

O que vai acontecer se eu botar ele pra trabalhar mais que 8 horas por dia, finais de semana e madrugadas?

Leia a resposta acima.

Um hacker fez um estrago no meu site. O meu programador é culpado?

Não necessariamente, mas a experiência dele, tecnologia utilizada e a forma com você implementa a segurança do seu servidor podem contribuir significativamente para isso.

Você conhece algum projeto que ficou tão mal programado por causa da pressão da agência que trouxe problemas por longos prazos?

Vários. Conheço gente que está chorando há muito tempo. Já vi a coisa ficar muito feia mesmo. O esforço para fazer bem feito pode te livrar de dores de cabeça grandes.

O programador da minha agência não testa o que faz! O que fazer?

A idéia de que um programador pode ser capaz de testar os projetos que faz é uma lenda. Grave isso: ELE NÃ?O VAI TESTAR! Ou pelo menos vai fazer um teste muito superficial. Solução? Tenha um área de testes.

Contrate uma pessoa responsável por testar os projetos e criar relatórios sobre eles. Não é difícil de se formar uma pessoa assim. E seguindo uma metodologia simples, ele é capaz de te livrar de 90% das dores de cabeça. A quantidade de defeitos do projeto tem relação direta com experiência, pressão para entregas e mudanças no projeto.

E sobre os talentos?

A diferença de produtividade entre um cara talentoso e um cara bom pode ser absurda. Saiba quem são os talentosos e invista neles. Se for um trabalho de produção (não criativo), a diferença de velocidade pode ser 100% ou 200% maior. Acredite.

Qual a solução para projetos rápidos e a variação de demanda na agência?

Não é uma fórmula simples de resolver, mas é essencial que se trabalhe com parceria com pequenas e médias empresas. Evite ficar enchendo a agência de programadores, mescle os projetos com parceiros, trabalhe com uns poucos freelancers confiáveis e mantenha uma equipe mais sênior internamente capaz de gerenciar outras empresas e passar o conhecimento para os mais novos mesclando o trabalho com estes.

Num projeto normal, acredito que 20% do trabalho pode ser feito com geradores de código, 30% com programadores júniors, 30% com plenos e em 20% do tempo você realmente precisa de um programador sênior.

Claro que isso não é uma regra, mas um projeto não precisa ser 100% construído por programadores sêniors para ficar bom. Além disso, a utilização de programadores júniors resolve apenas parte do projeto, ele vai se embananar quando precisar fazer coisas mais complexas e que exigem um pouco mais de conhecimento e experiência. [Webinsider]

Sobre o autor

Marcelo Okano (okano@mandic.com.br) é gerente de TI da CDN Interativa.

Clique aqui para o artigo original (Depois de receberem milhares de críticas, retiraram do ar)

Updated: