Tenho bons amigos empresários e gerentes de projeto, com os quais converso bastante. Um tema comum é o mercado de trabalho. Eles sabem que eu trabalho com treinamento e ocasionalmente me pedem para indicar um profissional. O que eu vou dizer aqui não está baseado em nenhuma pesquisa formal, mas nesses bate-papos com amigos. Parece haver um consenso entre eles: há muita gente despreparada no mercado. Não há falta de vagas, mas falta de desenvolvedores preparados para as vagas existentes.
Aliás, essa foi uma das coisas em que pensamos bastante antes de abrir a Visie. Trabalhar com treinamento para quem já é profissional de web é uma maneira de preencher lacunas no mercado, e isso significa ganhar dinheiro oferecendo algo de valor real, que vai fazer diferença na vida dos alunos.
Conversei anteontem com um amigo que acaba de contratar um bom desenvolvedor VB. Salário de mais de R$ 6000,00, razoável, não? Mas ele teve dificuldades em contratar. Não achava alguém que desse conta do recado.
Veja, por exemplo, essa oferta de emprego: Python Developer para o Ubuntu. Você trabalha em casa, com Python (uau!) e num projeto Open Source. Trabalha com uma equipe grande, faz viagens ocasionais ao exterior para encontrar o resto do time e ganha em Euros!
Veja a descrição da vaga. O sujeito precisa saber Python e de experiência com Orientação a Objeto (e citam Python, Ruby, Java, C++ e C#) e com SQL. Essa é parte técnica. Parece fácil?
Além disso, o candidato precisa de um bom inglês, curso superior, responsabilidade e produtividade, trabalhar bem em equipe, conhecer TDD e metodologias ágeis, experiência com padrões de código e com arquitetura cliente/servidor. Pedem também que o sujeito goste de revisar código e discutir design de software com os colegas.
Perceba algo curioso ali. Entre as exigências para o candidato não há muita coisa a respeito da linguagem de programação ou do banco de dados. O foco está na metodologia. A questão não é com “o quê” você trabalha, mas “como”.
Peguei uma vaga pública num projeto Open Source como exemplo, mas há uma porção de oportunidades como essa por aí, com ferramentas Open Source, com .NET, com Java ou com quase qualquer linguagem atual com a qual você preferir trabalhar. Gente que está interessada em alguém que tenha no currículo não uma lista de linguagens, mas conhecimentos, e se possível experiência, que comprovem que ele sabe trabalhar bem com essas linguagens.
Veja um currículo como um milhão de outros que recebemos, na parte que diz o que o sujeito sabe fazer:
Conhecimentos avançados:
- .NET (C# e VB.NET)
- MS SQL Server
- Oracle
- ASP e ASP.NET
- HTML, CSS e Javascript
- Visual Basic 6 (e anteriores)
- Windows DNA
- Crystal Reports
- Visual Studio .NET
- Dreamweaver
- … e assim por diante …
Troque .NET e ASP por Java, ou Python, ou Ruby, ou PHP. Troque MS SQL Server por MySQL ou Postgre e Oracle por Sybase. Troque VB 6 por Delphi ou Swing/AWT, e Windows DNA por J2EE, ou LAMP, Visual Studio .NET por Eclipse, Dreamweaver por GoLive, ou FrontPage (argh!) Variando essas opções, você vai ter varrido 95% dos currículos de programadores brasileiros.
O sujeito do currículo aí em cima me deu uma impressionante lista de siglas, mas esqueceu-se de dizer se vai escrever os testes de unidade antes do código, se só fará commit de código funcionando para o controle de versões, se seu código vai estar identado e comentado, se vai refatorar o código até que esteja em sua forma mais simples, se vai escrever pensando em reuso e documentar isso para o resto da equipe, se o HTML gerado será semântico e aproveitável pelos designers, se trabalha bem em equipe, ajuda os colegas menos experientes e escuta os mais experientes e se vai trazer ânimo, energia e bom humor para o time.
Vamos falar sobre como você trabalha, tá legal?
É importante ter uma impressionante lista de siglas em seu currículo, principalmente se você for usá-las. Mas apenas conhecer linguagens e ferramentas não faz de você mais do que um Code Monkey.
Digamos, por exemplo, que eu precise de um programador com experiência em testes de unidade. Não vou pesquisar por uma linguagem específica porque assim fica mais fácil encontrar algum com experiência em testes de unidade, embora, numa situação real, eu fosse procurar um com experiência em testes de unidade e Java (ou Python, ou C#, ou Ruby, ou PHP…) Bom, vamos lá: www.apinfo.com
Veja os resultados da pesquisa agora:
- TDD: 0 currículos
- teste de unidade ou testes de unidade: 0 currículos
- teste unitário ou testes unitários: 7 currículos
- unit test ou unit tests: 0 currículos
- extreme (porque o pessoal da extreme programming trabalha com testes de unidade): 13 currículos
Percebeu? Treze currículos no Brasil inteiro. Para comparar, faça uma pesquisa por PHP ou mesmo Python.
Um bom programador aprende uma linguagem nova em uma semana, e se torna fluente e produtivo nela em poucos meses. Como você trabalha é muito mais importante que com o quê. Como você desenha o software, como você analisa e resolve problemas de software, como você assegura que seu software funciona bem, como você se assegura de que outras pessoas da equipe não irão quebrar seu software, de que outra pessoa poderá continuar seu trabalho, de que não terá que reescrever todo o sistema se o cliente mudar uma regra de negócios?
Um de nossos objetivos para o próximo ano é oferecer a nossos alunos a possibilidade de obter esse conhecimento. Quem for ao Workshop de Produtividade entenderá do que estamos falando. Chega de perder tempo, você precisar trabalhar rápido e ter completo controle sobre o que está fazendo.
Você pode nos ajudar, deixando o seu comentário, nos dizendo como você trabalha. Como faz para ser produtivo e garantir a qualidade do seu trabalho?
3 de novembro de 2006