As dicas abaixo são baseadas na primeira seção do livro The Passionate Programmer de Chad Fowler, O Programador Apaixonado em português. Se você é daqueles que se interessa por aquelas listas profissionais da Exame, você está perdendo seu tempo. A única coisa que você está fazendo é diminuindo suas chances de encontrar boas recomendações de carreira ao colocar no topo do mecanismo de busca artigos populares unicamente porque possuem um título e imagem atrativos.
A lista que aqui apresento não é muito diferente por ser sucinta, porém é baseada em uma fonte confiável e respaldada por grandes desenvolvedores como Martin Fowler e David Heinemeier Hansson, criador do Ruby on Rails. Antes, porém, gostaria de fazer uma breve observação sobre um das palavras mais usadas(e desgastadas) do mercado profissional nos dias de hoje: paixão.
As pessoas falam tanto em paixão que muita gente empolgada acaba achando que não foi feita para determinada profissão. Bom, antes de você procurar saber o que te apaixona, você deveria observar o que te desestimula. Se você não consegue se empolgar com a atividade que você realiza mesmo com a perspectiva de ser muito bom algum dia, então você não é e não terá nenhuma chance de ser apaixonado por aquilo que faz. Foi isso que percebi durante minha experiência profissional na engenharia civil. Descobri que eu não ficaria empolgado nem se algum dia eu fosse um dos maiores especialistas em pontes no Brasil(e pontes é legal, acredite).
Assim, antes de ficar pensando se você é apaixonado ou não, pense se você gostaria de fazer o que faz mesmo ganhando pouco ou mesmo não sendo o melhor naquilo que faz. Caso a resposta seja sim, você está no caminho para ser um dos melhores profissionais do mercado, um profissional apaixonado. Entretanto, até um programador apaixonado pode desestimular quando faz escolhas erradas ou não sabe se desvencilhar delas. E é exatamente para isso que serve a lista abaixo. Para servir de guia para ótimas decisões e o desenvolvimento de uma carreira gratificante.
1. Tecnologia de ponta ou estabelecida?
Quando você é desenvolvedor, você tem duas opções. Ou você se torna bom em uma tecnologia que você sabe que está perdendo adesão, mas ainda assim é muito popular principalmente no mercado de trabalho (Java) ou você foca em tecnologia de ponta, de última geração antes mesmo de ela se tornar popular.
Os desenvolvedores Java que saíram para Ruby se deram muito bem e acabaram ganhando muito dinheiro. Aqueles que apostaram em Node alguns anos atrás também estão colhendo os frutos agora e provavelmente irão colher ainda mais. O risco é apostar na tecnologia errada.
Aqueles que trabalham com tecnologias mais ultrapassadas como COBOL, por exemplo, vão aos poucos ganhando mais pela total escassez de profissionais dispostos a exercer tal atividade. Entretanto,correm o risco da total extinção.
O que você jovem com tendências empreendedoras faz? Aprende uma tecnologia estabelecida e uma tecnologia de ponta com foco na mais atual. Cada vez mais se precisa conhecer os dois. Em um mundo real, você sempre terá que saber coordenar o velho com o novo.
2. Onshore e Offshore
No Brasil e na Índia há uma tendência nas chamadas fábricas de software a trabalharem com projetos internacionais, pois nossa mão-de-obra é mais barata. Isso acontece, porque uma tecnologia se estabeleceu nos EUA, gerando grande demanda por desenvolvedores(elevando o salário) e o pessoal daqui aproveita para entrar na concorrência, enquanto se está pagando bem, diminuindo o custo por lá e empregando brasileiros aqui(os dois saem ganhando).
Como consequência direta, os americanos (onshore) se especializam para tomar as grandes decisões, enquanto o desenvolvimento geral é feito por profissionais em geral menos qualificados(offshore). Se você quer ser um profissional que quer trabalhar com projetos internacionais com grande chance de trabalhar no estrangeiro, procure ao menos ficar por dentro das tecnologias que estão se estabelecendo no estrangeiro. Atualmente as fábricas de software trabalham mais com Java e C#. Não será nada espantoso se em breve começarem a trabalhar com Ruby e Node.
3. Domine o domínio
Alguns desenvolvedores são tão fanáticos por tecnologia que esquecem que estão trabalhando a serviço de um outro setor. Dessa forma, acabam desconhecendo tanto o domínio em que trabalham que se tornam incapazes de perceber o real potencial de um software e como torná-lo melhor.
Não importa qual o domínio de sua aplicação, o domine. Conheça-o tão bem quanto os seus clientes. Esse é um diferencial extremamente valorizado.
4. Seja o Pior
Ao longo de sua carreira, agradeça pelas oportunidades de estar com pessoas melhores que você e isso serve pra qualquer profissão. Se você estiver em um ambiente de pessoas boas, você vai se tornar bom nem que seja por osmose. Tudo que precisa é estar disposto a aprender.
Não é a toa que Harvard, MIT e Stanford possuem tantos nomes conhecidos. Não porque o ensino é necessariamente melhor, mas o ambiente é de pessoas muito boas.
Em minha passagem pelo Instituto Militar de Engenharia, eu vivenciei exatamente isso. Ensino nada extraordinário, porém pessoas extraordinárias, cada uma em sua especialidade.
5. Invista em sua Inteligência - Curiosidade Importa
Se você já se deparou com aqueles anúncios procurando por um desenvolvedor que saiba PHP, JavaScript, Java, Python, C# e vários frameworks, você deve ter achado um tanto absurdo. Acontece que algumas vezes é mesmo, porém em outras é uma técnica de seleção. É uma maneira de filtrar candidatos que tem interesse genuíno por aquilo que fazem a ponto de ter curiosidade de aprendizado diverso. Normalmente, candidatos que realmente sabem outra linguagem são melhores que aqueles que só conhecem uma.
Acontece que profissionais assim também são mais caros, então se algum dia você for selecionado em meio a vários requisitos, não tenha medo de pedir um salário até maior do que está sendo ofertado.
6. Não Escute Seus Pais
A geração de nossos pais é a geração concurso público, é a geração desatualizada que se fossem entrar no mercado de trabalho nos dias de hoje provavelmente enfrentariam grande dificuldade em frente a um computador.
Independente disso, porém, pais tem um instinto natural de proteger aqueles que amam e mesmo pais empreendedores acabam incentivando os filhos a seguirem por uma carreira estável. Sem riscos, mas sem realizações.
É seu destino cumprir a vontade de qualquer outra pessoa que não seja a sua?
7. Seja um Generalista
Saiba pelo menos um pouco de cada tecnologia que o cerca: banco de dados,testes, sistema operacional, git, frontend e backend. Obviamente se torne melhor em alguma.
Ter uma idéia do todo é um diferencial que o torna melhor naquilo que é realmente o seu interesse, além de aumentar sua capacidade de comunicação com outras áreas. No mínimo, você vai saber pedir ajuda a um especialista quando necessário.
8. Seja um Especialista
"Como você escreveria um programa que faria a JVM quebrar?"
" Como, desculpe, pode repetir?"
Você, se fosse um empregador, contrataria um cara que se diz especialista, mas não sabe responder perguntas que necessitam de um pouco mais de profundidade?
Existe uma má interpretação sobre o que significa ser um especialista. Ser especialista não significa saber apenas uma tecnologia e não saber nada de outras. Isso é ser um profissional limitado.
Ser especialista é saber tudo sobre determinada tecnologia. Desde a linguagem em profundidade até as entranhas dos frameworks e fazer um deployment da aplicação no servidor.
9. Sua Carreira Não é Atrelada a Uma Tecnologia Nem a Uma Empresa
"O que você quer alcançar na sua carreira?"
"Ah, eu quero ser desenvolvedor sênior em ASP.NET MVC."
Mesmo que você queira passar o resto de sua vida trabalhando com a mesma tecnologia ou na mesma empresa, você deve saber que tecnologia muda e que a empresa que você trabalha pode não existir daqui a 5 anos. Colocar todo seu dinheiro na petrobrás, por exemplo, pode ser perigoso, diversifique sua carteira.
Por outro lado, conhecer linguagens, padrões de projetos, técnicas de desenvolvimento e processos para construção de software sempre serão de grande serventia para sua carreira.
10. Se Não Gostar, Saia.
Se você não gostar de programar, abandone a carreira.
Se você estiver trabalhando somente para no final do mês receber seu salário, abandone a empresa que trabalha, não deixe que uma má experiência de trabalho acabar com o gosto que você tem pela profissão.
Se em toda empresa que você trabalha, a única coisa que você pensa é em seu salário. Bom, eu diria que é hora de repensar se o problema é com sua falta de pendor, se você deveria empreender ou se você deveria se esforçar mais para encontrar o ambiente que busca. De qualquer forma, eu tentaria aproveitar melhor as oportunidades no meio do caminho. Elas sempre existem.