Java Do Básico Ao Jr.
Java Do Básico Ao Jr.
https://linktr.ee/devmagro
Eu sou o Lucas Carrilho, vulgarmente conhecido como
@devmagro, sou desenvolvedor java e go. Fiz este guia para
ajudar iniciantes em migração de carreira / iniciando na área!
Este guia foi montado com base em MINHA trajetória
estudando java e migrando de carreira, com base nisso, eu
elenco skills técnicas (hard skills) para buscar uma vaga de
estágio ou Jr, com foco em JAVA.
Lembrando que não basta somente isso, ter skills de
relacionamento (busque por soft skills no google) é essencial
e são muito bem valorizadas em entrevistas de emprego em
todos os níveis, portanto, não se prenda somente no conteúdo
que será exposto aqui.
1.1 ERROS E REGRAS
Caso seu foco NÃO seja backend com Java, a dica de ouro é pra você NÃO tentar ser
fullstack ou aprender tudo ao mesmo tempo, foque somente em 1 coisa, por exemplo:
Opções: (C#, FrontEnd com React + básico de node + TS, Go, DevOps)
Dito isso, hoje o que eu mais vejo é uma galera começando com HTML, CSS + JS, não é
ruim, mas caso vá por este caminho, foque no frontend (caso você goste). Por outro lado,
se você gostou do backend, o que eu mais indico seria o Java ou C#. Caso goste de análise
de dados, machine learning, eu indicaria por exemplo Python.
Este guia é baseado EM JAVA, mas aplica-se para C# de uma forma bem parecida.
Portanto, escolha seu foco e vá até um ponto de estar fazendo bons projetos com ele,
procure um mentor na área e peça para que ele o avalie e julgue seu desempenho nos
projetos próprios.
Então, nada de começar com JS, depois ir pro Java, depois pro Python ok? Foco até o fim.
Mantenha-se em um estudo de forma constante, mesmo que estude pouco tempo por dia,
faça isso TODO DIA. Isso te ajuda a memorizar e criar uma adaptação à rotina muito boa!
Não posso te prometer que você vai virar um dev java jr em 6 meses, afinal, hoje em dia
não basta SÓ saber fazer código, mas sim, ter todo um conjunto de habilidades que o
mercado pede, porém, ACREDITAR no processo e trabalhar duro e de forma disciplinada
(traduzindo, fazer repetidas vezes todo dia), te traz resultados de forma bem rápida.
Até hoje, como eu disse, já falei com diversas pessoas iniciando na área, conheci alguns
que com 6 meses estavam empregados, com 4, com 1 ano, 3 anos, mas todos persistiram
até chegarem lá. No final dá certo se você se dedicar, eu garanto.
Resolvi adicionar este ponto porque vejo muita gente sem um direcionamento, eu mesmo
não tenho tempo suficiente para analisar e fazer code reviews orientando a galera
(ocasionalmente eu tento fazer), este guia serve para te orientar, mas um mentor faz isso de
forma mais detalhada.
O que eu indico? Procure um mentor com experiência na área e, de preferência, de mesma
stack que você. Essa pessoa poderá lhe indicar a melhor forma de estudar determinado
assunto, tirar suas dúvidas e lhe dar aulas particulares de determinado tema.
Onde encontrar? Em fóruns da linguagem, grupo de telegram entre outros, além de
comunidades como SouJava por exemplo.
Quando estiver estudando, NUNCA pule os exercícios, sempre tente resolvê-los ao máximo
sem copiar, tente entender o que se pede e busque soluções aplicando o conhecimento
aprendido, ficar apenas copiando e colando código não vai te fazer aprender, pensar e
resolver problemas vai.
Além disso, hoje temos o CHAT GPT e milhões de outras ferramentas que podem SIM te
ajudar, mas eu não indico para pessoas que estão começando.
Sim, vários resolveram meu desafio, me chamaram pra mostrar e quando fui ver inúmeros
trechos que as pessoas simplesmente não sabiam responder ou pra que servia, era nítido o
uso de chatGPT em diversas partes do código. Logo, eu não indico o uso no começo
devido a forma indiscriminada que é utilizado por iniciantes, mas posteriormente pode
ser de grande ajuda.
REGRA 1 - EU NÃO TENHO CULPA DA SUA VIDA.
🗣️ Ahhh Lucas, mas eu trabalho de 8-18, chego em casa vou malhar e só me sobram 1
hora do dia.
- Vire fisiculturista, já que é mais fácil não faltar a academia do que estudar. Seu foco é lá,
não em estudar.
🗣️
Ahh Lucas, mas eu estudo na faculdade, mas eu arrumo casa e blá blá blá.
- Um sábio uma vez me disse:
“Cada cão que lamba sua caceta.”
Eu infelizmente não tenho controle sobre sua rotina e dia a dia, o que eu indico é
(infelizmente e não indicado por muito tempo):
Sacrifique seu sono (durma 6:30 por dia) e foque em maximizar o maior tempo útil do
seu dia (estude as 5 ou 6 da manhã, estude algo no almoço ou no busão).
Saudável? NÃO !
Recomendo? NÃO !
Mas cada um sabe da sua realidade, apenas dei uma sugestão de uma forma que pode
ajudar temporariamente.
REGRA 2 - NÃO FAÇA GRADUAÇÃO SEM ESTUDAR POR FORA.
DEVO FAZER GRADUAÇÃO? SIM, e, de preferência, tecnólogo EAD.
Devo focar em estudar para graduação ou por fora?
- Por fora, sempre.
A graduação te permite realizar ESTÁGIO, e, hoje, esta é a forma + fácil de se iniciar na
área, porém, você PRECISA de estar tecnicamente + preparado, utilizando assim a
graduação para obter o estágio, mas não como fonte principal de conhecimento, ok?
🗣️
Lucas, fiz graduação mas não estagiei. O que eu faço?
Pós graduação EAD e busque estágio, ou JR (Hard)
REGRA 3 - EU NÃO VOU VENDER SONHOS
O mercado de T.I não está mais com o boom da pandemia. Ele NÃO VAI PAGAR 5 mil
inicial para júnior, muito provável que você não irá conseguir um estágio / vaga de jr em
menos de 1 ano, então NÃO VENHA querer viver um mundo mágico.
A área é boa? Sim.
Está aquecida? Sim, mas não é um mundo dos sonhos.
Como eu citei, não basta só saber teoria, estude ela SIM, mas saiba ter outras skills além
do código ok? Isso facilita e muito a busca de uma oportunidade.
Salário médio de estagiário -> 1000 - 1500 + refeição
Salário médio de jr -> 2.2 - 3k + benefícios.
ASSISTA APENAS ESSA INTRODUÇÃO, é o que eu indico, mas se você curtiu.. pode
seguir por ela também, mas eu indico youtube o DevDojo (seção 3.1, logo a frente).
2.2 - APRENDA GIT E USAR ARQUIVOS .MD para ORGANIZAR O QUE VOCÊ
ESTUDOU!
Bom, agora que você aprendeu a fazer o mínimo de código em Java, antes de propriamente
começarmos, eu recomendo que você aprenda a usar o básico do Git, que será sua
ferramenta de versionamento e gerenciamento de CÓDIGO, além de utilizar para mostrar
projetos e suas criações para outras pessoas.
O que eu indico -> Um simples arquivo .md para poder ANOTAR o que você estudou e
organizar o conteúdo das aulas para você mesmo não perder nada.
EXEMPLO:
Curso de Git para iniciantes - Aula 1
3 - CURSOS PARA SEGUIR
Neste ponto, haverá vários caminhos a seguir, aqui eu vou listar 3 deles, indico você ir pelo
YOUTUBE , GRATUÍTO.
Nélio / Alura SÃO BONS também, mas EU indico YOUTUBE.
Alura.1
https://cursos.alura.com.br/course/java-criando-primeira-aplicacao
Aqui você vai aprender o básico do javinha, usando SEMPRE o Intellij.
Alura.2
https://cursos.alura.com.br/course/java-introducao-orientacao-objetos
https://cursos.alura.com.br/course/java-aplicando-orientacao-objetos
https://cursos.alura.com.br/course/java-heranca-interfaces-polimorfismo
Neste ponto, você irá aprender o principal do java, que é uma linguagem orientada a
objetos, então você vai dar os primeiros passos para a compreensão do que é a OO.
Alura.3
https://cursos.alura.com.br/course/java-listas-colecoes-dados
https://www.youtube.com/watch?v=nFmvG3OG79s
Neste ponto, você irá aprender uma das principais bibliotecas do java e essencial no dia a
dia.
O curso adicional eu recomendo pois no dia a dia utilizamos bastante lambdas e streams
para manipulação de listas.
Alura.4
https://cursos.alura.com.br/course/java-consumindo-api-gravando-arquivos-lidando-erros
Nesse ponto, você vai aprender sobre java.io, requisições http entre outros, também
essenciais ao dia a dia.
Feito o desafio, eu não indico concluir o curso do nélio nesse instante, recomendo seguir o
caminho comum (aprender banco + persistência via youtube + spring - > TÓPICO 5 DESTE
GUIA) mas você pode optar também por continuar com o nélio caso você goste, ok?
Neste caso, pule também o tópico sobre interface gráfica com Java.
4 - DESAFIO - SISTEMA DE CADASTROS!
PARABÉNS!!!
Banco de dados é um assunto diário mais que necessário, dito isso, precisamos que você
aprenda com consistência devido conteúdo, dito isso, eu indico que:
5.1 -> INTERFACE PARA VER O BANCO DE DADOS
Recomendo antes de tudo, baixar o DBeaver para poder conectar-se ao banco de dados.
https://dbeaver.io/download/
6.3 - FINALIZANDO TEORIA JAVA + CONEXÃO DE APLICAÇÃO + ASSUNTOS
FINAIS
Depois, retornaremos ao dev dojo, mais precisamente na aula:
246 - Padrões de Projeto pt 01 - Builder
Segue a playlist com as aulas:
https://www.youtube.com/playlist?list=PL62G310vn6nFIsOCC0H-C2infYgwm8SWW
Neste ponto, assista a aula 246, até o final, que é a aula 285 (devdojo)
PARABÉNS MAIS UMA VEZ!
PARA MIM NESTE PONTO, VOCÊ
CHEGOU AO NÍVEL PRÉ ESTAGIÁRIO!
(espero que você ainda não esteja viciado 100% em café)
7 - PRIMEIRA API REST.
Neste ponto, já sabemos o que é o maven, já sabemos conectar no banco de dados,
sabemos o que são as operações CRUD, agora, aprenderemos a ferramenta + utilizada
com java, o Spring e suas features.
7.1 O QUE É O SPRING?
https://www.treinaweb.com.br/blog/o-que-e-spring-framework
ALURA - https://cursos.alura.com.br/course/spring-boot-3-desenvolva-api-rest-java
UDEMY - Está incluso em qualquer curso java, incluíndo o do Nélio.
GRATIS– Spring Boot 3 | Curso Completo 2023
Além disso, nesse ponto, há diversas opções de curso para criar API REST via youtube ok?
8 - DESAFIO - VERSÃO 2
Bom, neste ponto, não há muito o que desafiar ou criar novas ideias, o que faremos aqui, é
REUTILIZAR O PRIMEIRO DESAFIO.
Porém, dessa vez, iremos implementar o mesmo sistema de cadastro, porém sem .TXT.
O que você irá fazer?
Refatorar, conectando a um banco de dados DIFERENTE do que você aprendeu na aula de
persistência em banco.
Depois, criará todas as operações CRUD para este processo, criará todas as entidades que
criamos antes (perguntas, alunos, respostas) e terá integração com banco de dados.
ALÉM DISSO, é NECESSÁRIO que tenhamos testes unitários na aplicação (são muito bem
valorizados, julgo que seja um conteúdo essencial).
Além disso, temos que tratar as exceções de nossa aplicação, deixar rotas bem definidas,
responder pro usuário com o status HTTP correto ok?
9.1 - SOLID
https://medium.com/desenvolvendo-com-paixao/o-que-é-solid-o-guia-completo-para-você-e
ntender-os-5-princípios-da-poo-2b937b3fc530
https://www.youtube.com/watch?v=ZYCABdRwRNk
https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264
http://www.linhadecodigo.com.br/artigo/2367/abordando-a-arquitetura-mvc-e-design-patterns
-observer-composite-strategy.aspx
https://www.turing.com/pt/interview-questions/java
https://www.geeksforgeeks.org/java-interview-questions/
https://codegym.cc/pt/groups/posts/pt.78.as-21-principais-perguntas-da-entrevista-sobre-jav
a
https://www.guru99.com/pt/java-interview-questions-answers.html
10 - COMO EU VIRO JÚNIOR?
Normalmente, em termos de níveis, seja júnior, pleno, senior, o que vai te diferenciar é a
MELHORIA dos aspectos em gerais, normalmente um júnior vai ter um conhecimento
técnico + aprofundado, terá também um conceito da regra de negócio mais bem entendido,
e, principalmente, softskills mais bem desenvolvidas, além de autonomia na tomada de
decisões e vivência de cotidiano em programação, e daí por adiante.
Portanto, não há uma regra bem definida do que estudar para chegar no JÚNIOR, algumas
empresas, vão considerar o conteúdo que citei até AQUI como suficiente pra júnior, outras
mais, outras menos.
O que vou falar a seguir são melhorias que acredito que pra um backend faça mais sentido,
não considero que sejam TODAS obrigatórias, mas acho que conhecimento nunca é
demais, e, além disso, avaliando diversas vagas para desenvolvimento backend, é COMUM
que sejam cobrados conhecimentos adicionais.
Agora falando o famoso PORTUGAL:
IMAGINA QUE TU TÁ NUM JOGO DE RPG, CHEGOU NO LEVEL 50 E AGORA VAI TER
QUE ESCOLHER UMA PROFISSÃO PRA “ESPECIALIZAR”
Ou seja, não há certo ou errado, há o que cada um escolheu aprofundar +, e isso pode
agradar vaga X OU Y de acordo com sua preferência.
O que eu indico? Aprofundar ao máximo em algo que o “core” do java costuma pedir, depois
você decide de acordo com teu gosto, ok?
10.2 - SUGESTÕES DE ESTUDO
Nesse tópico, vou elencar implementações que acho que seriam boas para serem feitas no
seu projeto anterior, lembrando, não indico criar 1 separado pra cada, mas ir aprimorando o
que já foi feito ok?
10.2.A - > DOCKER
Entender o conceito, aplicações e uso cotidiano, uma ideia é rodar a sua aplicação web com
ele, um banco de dados, um frontend qualquer com ele
10.2.B -> FERRAMENTA DE DOCUMENTAÇÃO
Descrever documentação de cada endpoint da sua aplicação é algo também muito bem
visto, aprender o básico de HTML e criar um README pro seu projeto agradável é ótimo,
isso somado a uma boa documentação de cada endpoint da api com o uso de uma
ferramenta como, por exemplo o Swagger.io é uma boa pedida.
10.2.C -> BANCO noSQL (não relacional)
Este conteúdo é constantemente cobrado nos dias atuais, tente entender a finalidade de
usar bancos não relacionais, tente implementar um mongodb na sua aplicação pode ser um
ótimo desafio.
Entender como o cache funciona nas aplicações web e o ganho (e custos) por trás dessa
forma pode ser muito útil no dia a dia, além de claro, ser mais um conhecimento adquirido.
Assunto essencial para boa parte das vagas backend, nesse ponto, recomendo escolher a
AWS (por deter maior parte do mercado e ter + recursos), e implementar via Spring Cloud
utilizações e integrações de alguns serviços famosos como:
S3, filas SQS (outro conceito FODA), LAMBDAS, SNS, System Manager, Ec2
10.2.G -> CI / CD
É algo muito utilizado nos dias atuais que garante a entrega de forma integra nos deploys
de aplicações cotidianos, neste ponto, você pode usar o Actions do github, FLUX, Jenkins
entre outros.
https://linktr.ee/devmagro
Bjos do Magro pessoal!