Alcançando a especialização em backend Java: O passo a passo

Se tem uma pergunta que eu recebo nas minhas caixinhas do Instagram é essa: como é que eu me torno um especialista no backend como dev Java?

E mais do que isso: como é que eu me torno alguém que seja visto assim? Como faço para o mercado me ver assim?

Se essa dúvida (ou algo parecido) já passou pela sua cabeça, fica aqui comigo que eu elaborei o passo-a-passo abaixo para te ajudar com isso!

Inclusive eu gravei um vídeo sobre este assunto! Se você for alguém mais visual, provavelmente vai gostar:

Sem mais delongas, confira aqui o guia definitivo para você que deseja se tornar um especialista do backend Java.

  1. Correndo o risco de parecer óbvio: abandone o front-end
    • Afinal, foco é isso também: abrir mão de uma ou mais coisas em prol de outras;
    • E sim, pode ser que na situação atual (emprego, projeto, etc) seja impossível você de fato abandonar o front-end;
    • O que fazer nesse caso? Torne-se alguém tão forte no backend, que o front-end passe a ser irrelevante no seu leque de skills;
    • Foi o que eu fiz. Eu já trabalhei muito com front-end. Já trabalhei com mobile. Já fiz projetos inteiros em JavaScript. Mas isso tudo hoje é irrelevante na minha carreira perto do que eu construí como especialista em backend;
    • Além de tudo isso, tanto o backend quanto o front-end são áreas de estudo imensas. Então é muito mais provável que você tenha melhores resultados no médio e longo prazo se escolher um deles.
  2. Mais EE e menos SE
    • Para ficarmos todos na mesma página:
      1. EE vem de Enterprise Edition, ou Jakarta Enterprise Edition, que é o nome do Java Enterprise Edition desde 2019 quando foi finalizada a transferência dele para a Eclipse Foundation. É basicamente o conjunto de especificações para desenvolvimento enterprise;
      2. SE vem de Standard Edition, ou Java Standard Edition. É o core da plataforma Java, que engloba o compilador, as APIs e todas as ferramentas para desenvolvimento Java de um modo geral.
    • Então porque eu digo “mais EE e menos SE”? Quer dizer que não preciso conhecer o core da linguagem?
    • Claro que não! Mas quer dizer que a partir de um bom conhecimento do core da linguagem, um especialista em backend Java precisa ir ainda mais além em conhecer um framework top de mercado;
    • “Ain.. mas quem fica só no framework não sabe como as coisas funcionam…“;
    • Tudo a seu tempo: você prefere entregar a API que o seu cliente pediu utilizando o JAX-RS em todo o seu potencial, ou passar semanas escrevendo uma nova API Rest na mão?
    • Os grandes frameworks enterprise são isso: ferramentas construídas por alguns dos maiores devs Java do mundo para facilitar a sua vida. Porque não usá-las?
    • Quais eu recomendo? Do ponto de vista enterprise mesmo, temos o Spring e o Jakarta EE.
      1. Pessoalmente eu prefiro o Jakarta EE por ter um processo forte de padronização e especificação, além de não ter o risco de lock-in por ter uma única empresa mantendo;
      2. Mas é inegável que o Spring hoje domina o mercado do ponto de vista de projetos e oportunidades de trabalho. Mas lembre-se: o Spring roda em cima do Jakarta EE, então no fim do dia estamos todos no mesmo barco!
    • E claro que hoje temos os frameworks e plataformas mais voltadas para microservices. Neste ponto, Spring Boot e Quarkus dominam as atenções atualmente:
      1. Spring Boot veio muito bem na onda do próprio Spring, então também tem uma penetração muito grande no mercado;
      2. Por outro lado, o Quarkus entrou de maneira avassaladora no mercado em 2019, e hoje é o único que realmente compete com o Spring Boot;
      3. Porém existe uma “sacada” no Quarkus: por ser uma plataforma (e não apenas um framework), ele implementa APIs de vários projetos open source. Inclusive do Spring Boot!
      4. Ou seja: você pode escrever o mesmo código que escreveria no Spring Boot, porém com muito mais performance, baixo consumo de recursos, e um arsenal de ferramentas que nenhum outro oferece no mercado atualmente;
      5. E a melhor parte: o Quarkus possui uma implementação do MicroProfile. Então quem veio do Jakarta EE tem uma curva de aprendizado quase nula.
  3. Domine o framework que você escolheu
    • Bacana, você colheu informações sobre os frameworks de mercado e resolveu que vai focar em um deles: agora é hora de ir a fundo nisso;
    • E porque? Além da parte óbvia, que é conhecer bem a sua ferramenta de trabalho, existe uma outra não tão óbvia assim…;
    • Esses frameworks costumam ser tão grandes e tão completos, que você corre o risco de estar fazendo na mão algo que ele faria por você (e muito melhor, diga-se de passagem);
    • Então invista tempo em conhecer essa ferramenta. Leia blogs, assista vídeos, ou melhor ainda: leia a especificação;
    • Ain… ler especificação é muito chato…“;
    • Chato é gastar horas fazendo algo porque deixou de gastar alguns minutos lendo.
  4. Escolha um cloud provider chamar de seu
    • Primeiro: porque um dev backend deveria manjar de cloud? Oras, porque é pra onde estamos indo!
    • Estimativas mostram que chegamos apenas a 25% do potencial de aplicações em cloud em todo mundo. Ou seja, ainda temos muuuuuuito crescimento pela frente!
    • Então, se você é um dev backend que ainda não está lidando com cloud (seja ela privada ou pública), provavelmente isso vai mudar em breve;
    • E quem são os cloud providers que valem ser mencionados?
    • Não são muitos: AWS, Azure, Google Cloud, Oracle Cloud e IBM Cloud (não necessariamente nesta ordem);
    • E não tirei essa lista da minha cabeça, é só você dar uma olhada lá no Gartner;
    • E no estágio de maturidade que chegamos no mundo cloud hoje, uma coisa é fato: as ferramentas oferecidas por todos eles são muito parecidas;
    • Muda a interface, muda o modelo de serviço… mas, no fim das contas, tem muito overlapping;
    • Então, a minha dica é: escolha um e vá a fundo nele. Tenha fluência no uso dos serviços que você mais usa. Se gosta de certificações, tire! Ajuda bastante;
    • Daí, se em algum momento você precisar trabalhar com outro cloud provider, muita coisa você vai resolver fazendo “de-para”. Palavra de quem já usou todos eles!
  5. Domine containers
    • Durante muito tempo, usar Java em containers era um problema: mas esses dias já passaram faz tempo!
    • A versão mínima recomendada para usar Java em containers é a 11, lançada em 2018;
    • Ou seja, se você ainda não usa Java em containers porque acha que não funciona bem… acorda!
    • E porque dominar containers é essencial para um dev backend Java? Por dois motivos:
      1. Java é e vai continuar sendo uma das linguagens mais relevantes do mercado. Por décadas!
      2. Containers está se tornando a solução padrão para distribuição de aplicações, especialmente em ambientes orquestrados, elásticos e escaláveis;
    • Então, se você é um dev Java e quer ser reconhecido como um super especialista em backend, você precisa dominar a tecnologia de containers.
  6. Entenda a arquitetura da solução, e não apenas o seu código isolado
    • Eu não canso de dizer: o especialista não é um tapado da vida, alguém que só olha pra aquilo que quer e o que precisa;
    • Então nunca perca de vista que o seu código, a sua API, o seu microservice, o seu projeto… tudo isso é parte de um todo;
    • Entenda como aquilo que você está fazendo precisa se comportar dentro desse todo. Conheça a solução inteira. Questione. Reveja. Vá a fundo;
    • A única pergunta ruim é aquela que não é feita. E você nunca vai errar por querer resolver o problema do seu cliente da melhor forma possível.
  7. Seja o melhor amigos destes dois irmãos: a Implementação e o Compartilhamento
    • Aqui o lance é bem direto:
      1. Se você nunca implementou algo, então você não sabe esse “algo”. Pode ter estudado o quanto for, mas esse conhecimento ainda não “entrou” de fato na sua mente;
      2. Se você sabe algo, mas nunca compartilhou isso com ninguém, então ninguém sabe que você sabe isso. O que não ajuda muito.
    • E porque falo dessas duas coisas juntas, como se fossem dois irmãos? Porque a combinação de ambas é poderosíssima!
      1. Você estudou algo. Daí foi lá e implementou. Criou código, fez um projeto… sei lá!
      2. Daí você pegou esse algo que de fato aprendeu e compartilha com alguém: pode ser um colega do trabalho, ou na reunião com o time, ou fez um blog, um vídeo, um post em qualquer rede social;
      3. Você está, ao mesmo tempo, crescendo como profissional (implementando aquilo que estuda) e criando uma base para ser reconhecido por aquilo que você sabe (através do compartilhamento do seu conhecimento);

E aí, qual desses passos faz mais sentido pra você? Deixe aqui nos comentários!

Um grande abraço e até a próxima.