Programadores PHP e agências web: onde está o problema?

Qual é o problema com os programadores PHP disponíveis no mercado? Ultimamente tenho repetido esta pergunta o tempo todo. Já se vão mais de dois anos tentando achar bons programadores para estabelecer e formar uma equipe. Perdi a conta de quantas entrevistas fizemos, quantos testes, quantos contatos… E o resultado disso tudo, até agora, foi extremamente desanimador. Às vezes acho que nosso padrão é que é alto demais (ou o padrão do mercado é baixo), mas não consigo engolir isso.

Nesse post pretendo compartilhar com vocês um pouco dessa minha frustração e, quem sabe, tentar achar uma solução (ou alguns bons programadores disponíveis!). Será que esse problema é exclusivo do PHP? Ou é difícil assim por sermos uma empresa relativamente pequena? Ou será uma questão geográfica? Estariam todos os programadores de qualidade concentrados em São Paulo?

Fale conosco

Vou começar pelo clássico. Quando anunciamos uma vaga para programador PHP, não queremos um profissional para desenvolver formulários de fale conosco (com prazo de uma semana…) em um site qualquer. Se isso é tudo que você sabe fazer, não perca seu tempo e não gaste o nosso. Também não adianta só saber fazer uma conexão com o banco e exibir os dados de uma coluna no site.

Você vai ter que fazer sistemas diversos. Publicadores, intranets, sistemas de controle financeiro, disparo de e-mail marketing, jogos, testes online para ensino, e-commerce… as possibilidades são infinitas. Programar para web não é só fazer sites dinâmicos ou configurar um blog Wordpress.

Atitude

Fico muito incomodado mesmo com a reação de mais da metade dos profissionais que entram em contato com a gente. Depois de avaliar rapidamente o currículo do candidato, enviamos o nosso teste padrão. E recebemos muitas desculpas do tipo: “esse código não está bom, não vou nem perder tempo analisando isso”, “não tem um outro teste mais simples?”, “minha metodologia é diferente, não tenho como fazer esse teste”. Pode não ser o melhor código do mundo, mas é PHP. Pode não ser o SEU código, mas é PHP.

Como programador você tem que estar preparado pra tudo. Tem muito projeto de manutenção que pegamos onde os sistemas foram desenvolvidos há 3, 4 anos. Imagine que beleza! Mas o que mais me impressiona mesmo é a atitude. O código está ruim? Explique porque, de forma direta. Sua metodologia é melhor? Tudo bem, pode ser, mas nem sempre (nos primeiros meses, quase nunca) você vai começar um projeto do zero. Aceite o desafio e tente implementar suas ideias aos poucos. Trabalhe em equipe com os outros programadores.

Deixe de lado essa orgulho e essa atitude.

E, caso você não tenha entendido o código, fale. Explique suas limitações, mas mostre vontade de aprender. Seja honesto.

Orientação a objetos

Se pra você programação orientada a objetos é criar um monte de funções e salvar em um arquivo funcoes.inc, por favor, não diga que você domina OOP. Se você nem ao menos sabe os conceitos básicos, como herança e polimorfismo, não venha para a entrevista como se você fosse o mestre de programação orientada a objetos. Não, também não diga que conheça OOP caso você saiba criar uma classe mas utilize métodos e propriedades que não tenham absolutamente nada a ver com o objeto da classe. Não vou nem entrar no mérito de OOP avançada, já que ainda existem muitos sistemas rodando em php4, mas pelo menos o básico você deve saber antes de dizer no seu currículo que você possui programação OOP avançada.

Debugar é preciso!

_- Não consegui finalizar essa tarefa, deu um bug sinistro.

  • Que bug, cara?
  • Sei lá, um bug… fatal error, acho. Ou cache!
  • …_

O diálogo acima já rolou algumas vezes nesse processo. Posso esperar ouvir esse tipo de coisa do cliente, do atendimento interno, mas nunca de um programador. E não tô falando nem de ferramentes de teste etc. A maioria não usa nem o bom e velho echo(‘passei aqui’);!

Debugar PHP, dependendo das configurações do servidor, é uma verdadeira arte. E você, como programador, tem que saber se virar nesse tipo de situação. Não dá pra empacar porque ficou faltando um ponto e vírgula.

Pensamento estatal

Você procurou uma empresa pequena. Entrou em contato. Mandou seu currículo. Você precisa entender que o ritmo, o esquema de trabalho, é muito, muito diferente de um departamento de TI em uma estatal ou multinacional. Não existe metade da burocracia. Não existe um “departamento de TI”, não tem gerente, “xerife de código”, DBA. Você muitas vezes vai modelar o sistema, o banco e programar – e modelagem ocupando 10% do tempo. Os prazos serão muito curtos, sempre. Você SEMPRE vai ter o que fazer.

Por outro lado, você vai poder fazer seu horário, vai poder trabalhar de bermuda e vai poder jogar Playstation 3 no escritório pra dar aquela relaxada.

Você vai aprender muitas coisas novas, porque com todas essas “limitações” de tempo e planejamento você precisa se virar, inventar novas soluções. Esse dinamismo, pra mim, é o grande barato de trabalhar com web.

Português? Vou ser redator ou programador?

“fui verificar nos passos anteriores se via ajax, era alimentado algo nele que pudece provocar o tal erro, e os unicos operacoes que é executada e funciona quando se elimina o header do index, e o xajax_functions.inc.php registrando 4 funcoes (que não as roda).”

É triste, mas o exemplo acima é real. Foi uma resposta que recebemos em um teste. Depois de ler o e-mail nem me dei ao trabalho de olhar o código. Pra mim uma pessoa que escreve assim não tem a menor chance de ser um bom programador. Não demonstra o menor capricho, cuidado. Não tô pedindo pra ninguém ser um mestre em língua portuguesa, mas pelo menos escreva direitinho. Pontuação, maiúscula/minúscula e sem erros de português como “pudece”! ;)

Só escrevo código do meu jeito (e não coloco a mão em código dos outros!)

Deixe o orgulho de lado. Sim, o código desse sistema pode ser um lixo, mas você tem que dar um jeito nele. O cliente está esperando. Pode ser ruim, chato, mas tem que ser feito. Eu também acho que seria muito mais fácil refazer o sistema, mas nem sempre é possível. Nesses casos, onde não tem outro jeito senão trabalhar no código de um outro programador, encare isso como um novo desafio. Entenda o que o outro programador estava tentando fazer. E, pra não piorar as coisas, mantenha o padrão dele. Comente o que você achar que necessita uma explicação especial. Pense no próximo. :)

Produtividade zero

Todo mundo tem um dia daqueles, que não consegue produzir quase nada. Isso é normal, ainda mais com programação. Às vezes esse é o trabalho mais chato do mundo. Mas não dá pra ser assim todo dia, ou 4 vezes por semana. Volto a dizer, se você quer morcegar, ficar navegando, vendo vídeos no YouTube, deixando scraps no Orkut… vá trabalhar em uma empresa grande, de preferência uma empresa do governo. Numa empresa pequena, se você ficar dois dias sem trabalhar, você vai atrasar o lado de TODO MUNDO. Aquele programador que senta do seu lado vai ter que trabalhar em dobro. O cara que faz o atendimento vai ter que aturar malcriação de todos os clientes que você atrasou o prazo. Toda a fila vai atrasar e quando você resolver trabalhar vai ter muito mais trabalho a fazer.

Mantenha o foco! Mate logo essas tarefas chatas porque no meio delas sempre aparece alguma coisa legal. Pense no seu camarada de trabalho, porque, diferente de uma empresa grande, aqui ele vai ser diretamente afetado por sua morcegagem.

HTML, CSS, javascript, usabilidade…? Meu negócio é PHP.

Você vai trabalhar com web, com sites de relacionamento, redes sociais. Você precisa saber, no mínimo, javascript e AJAX. E não tô dizendo pra saber o básico. TEM que saber essas coisas. Mas é impressionante como quase nenhum programador PHP que a gente encontra conhece AJAX ou Javascript. Ou, quando dizem que conhecem, são aqueles que copiam e colam tudo, sem entender nada. Não tem mais desculpa pra não saber javascript.

HTML e CSS a empresa considera como um bônus, mas eu considero essencial. Não dá pra admitir que você ainda desenvolva seus formulários com tabelas. Nós temos designers para isso, mas você tem que ter alguma noção. Pra trabalhar com web, você tem que ser versátil.

E se você fosse o cliente?

Quase ninguem se coloca no lugar do cliente quando marca uma tarefa como “concluída”. Teste. Teste novamente. Teste no Internet Explorer. Olhe com carinho. Pergunte pra você mesmo: eu gostaria de usar esse sistema? Cadastre dados. Edite. Exclua.

Quando receber as telas do designer, já montadas, não as destrua com a programação. Você gosta quando um designer afeta seu código, fazendo-o parar de funcionar? Então…

Olhe para o sistema como se fosse o cliente antes de responder o e-mail com “feito”.

Considerações finais

Eu sei que, da mesma forma que eu escrevi aqui um post falando mal de todos os programadores PHP que conheci nessas entrevistas e testes, seria fácil escrever alguma coisa falando mal de uma empresa, ou de um processo seletivo. De repente nós é que somos o problema. E se realmente for esse o caso, adoraria descobrir. Infelizmente, tenho que seguir acreditanto que realmente faltam profissionais de qualidade para trabalhar em empresas pequenas, com aplicativos exclusivamente desenvolvidos para web. Profissionais versáteis, pró-ativos, cheios de ideias. Profissionais que venham para acrescentar e não atrapalhar ainda mais o desenvolvimento de uma empresa em crescimento.

Apesar de muitos tópicos deste post servirem para qualquer linguagem, acredito também que o fato de ser PHP contribui e muito para a qualidade dos profissionais. É muito fácil “aprender” PHP. É muito fácil desenvolver sistemas e publicar mesmo que o código esteja muito ruim, que a manutenção/atualização seja impossível. O importante, pro cliente (e pro desenvolvedor também, por que não?), é estar funcionando naquele momento. Então por isso a qualidade do código de sistemas PHP, no geral, é tão ruim.

Alguem aí enfrenta problema parecido? PHP ou não, como é o mercado de TI na sua região? Como são os profissionais? O que fazer para reverter isso? Como fazer para encontrar e segurar bons profissionais? Tem alguma história boa pra compartilhar? Abro o espaço agora pra opinião de vocês. Participem!