hierarquias, não é a relutância que impede as pessoas de fazê-lo. É a capacidade.
Programadores nerds não podem liderar, e os líderes e gerentes não podem escrever código. É raro encontrar alguém seja bom nos dois.
Suas habilidades transcendem tecnologias.
Outra falha imperdoável é encontrada quando falamos de plataformas e sistemas
operacionais. Ser um cara UNIX que se recusa a trabalhar com Windows é cada vez
mais inviável. O mesmo vale para .NET vs J2EE ou quaisquer outras plataformas de infraestrutura. O tempo vai exigir que você seja neutro com relação à plataforma no seu ambiente de trabalho. Todos nós temos nossas preferências, mas você vai
30
Casa do Código
Capítulo 7. Seja generalista
ter que deixar seus ideais em casa. Domine um e fique bom no outro. Suas habili-
dades devem transcender a tecnologia e plataforma. Ela é apenas uma ferramenta.
Se queremos alguém que só saiba Windows, podemos contratá-lo nas Filipinas. Se
quisermos alguém que realmente entenda de Windows e UNIX e pode integrá-los,
provavelmente vamos procurar aqui por perto. Não seja deixado de lado por causa
de algo que é essencialmente espírito de equipe.
A linha que divide o administrador de banco de dados (um papel solidificado
em TI na última década) e desenvolvedor de software também é tênue. Ser um ad-
ministrador de banco de dados ou DBA, significa em muitos lugares saber como
usar
alguma ferramenta visual de administração e como configurar um banco de
dados. Você não precisa necessariamente saber muito sobre como usar o banco nas
aplicações. Por outro lado, os desenvolvedores estão cada vez mais preguiçosos e ignorantes sobre como trabalhar com bancos de dados. Cada lado alimenta o outro.
O que mais me surpreendeu quando eu entrei na área de TI era que muitos pro-
gramadores (talvez a maioria) não sabiam como configurar os ambientes que eles
utilizavam para o desenvolvimento e para deploy. Eu trabalhei com desenvolvedores que não conseguiam sequer instalar um sistema operacional em um computador se
você pedisse, muito menos configurar um servidor de aplicações para fazer o deploy das suas aplicações. É raro encontrar um desenvolvedor que realmente entende a
plataforma em que está trabalhando. As aplicações são melhores por consequência, o trabalho costuma ser feito mais rápido.
Finalmente, como discutimos no capítulo 3, a barreira entre o negócio e TI deve
ser derrubada já! Comece a entender como sua empresa funciona.
Faça algo
1) Em um pedaço de papel ou em uma lousa, liste as dimensões em que você pode
ou não estar generalizando seus conhecimentos e habilidades. Para cada dimen-
são, escreva sua especialidade. Por exemplo, se sistema operacional é uma de
suas dimensões, você pode escrever Windows/.NET ao lado. Agora, à direita da
sua especialidade, escreva um ou mais tópicos que você deveria aprender. Conti-
nuando com o mesmo exemplo, você pode escrever Linux/Java (ou mesmo Ruby
ou Perl).
Assim que possível (mas ainda essa semana), pegue 30 minutos de seu tempo e comece a aprender alguma tecnologia que você listou. Não basta ler sobre ela. Se possível, faça um hands-on. Se é uma tecnologia web, então faça você mesmo a
31
Casa do Código
instalação e configuração do servidor. Se é um assunto relacionado a negócios,
escolha um de seus clientes no trabalho e chame-os para almoçar ou conversar.
32
Capítulo 8
Seja especialista
Como você escreveria um programa, em Java puro, que trave a Java Virtual Ma-
chine? Silêncio mortal. Oi?
Desculpa. Não entendi. Você pode repetir a pergunta, por favor? A voz soava
desesperada. Eu sabia que repetir a pergunta não iria ajudar em nada. Então, eu
repeti a pergunta, devagar e em um tom de voz mais alto. Como você escreveria
um programa, em Java puro, que faça Java Virtual Machine parar de funcionar?
Uh... desculpe. Eu nunca fiz isso.
Eu sei que não. Que tal essa pergunta: como é que você escreveria um programa
que NÃO trave a JVM"?
Eu estava procurando por programadores Java realmente bons. Para começar
a entrevista, perguntei para esta pessoa (e todos os outros candidatos que eu havia entrevistado naquela semana) para avaliar a si mesmo em uma escala de um a dez.
Ele disse nove. Estou esperando uma estrela aqui. Se esse cara se avalia de forma tão alta, por que ele não consegue pensar em algum simples truque que trave a JVM?
A falta de profundidade técnica.
Casa do Código
Muitos acreditam que ser especialista em algo significa que você não sabe outras coisas.
Essa pessoa se dizia especialista em Java. Se você o conhecesse em uma festa
e perguntasse o que ele fazia para viver, ele diria: Eu sou um desenvolvedor Java.
Ainda assim, ele não conseguia responder a esta simples pergunta. Ele não conseguia sequer chegar a uma resposta errada. Depois de intensas duas semanas e meia de entrevistas em uma viagem de recrutamento, esta foi a regra, não a exceção. Milhares de especialistas Java tinham se candidatado para as vagas abertas, mas quase nenhum deles sabia explicar como Classloader Java trabalhava ou então dar uma visão geral de como o gerenciamento de memória funciona em uma JVM.