eldermoraes.dev
busca

24 de fevereiro de 2023

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.