Do 0 ao Junior em Backend
Tags: beginners, webdev, career, backend
Published: 2022-08-02 15:27:23

Criei esse pequeno guia pensando em ajudar quem esta começando e não sabe como dar os primeiros passos no desenvolvimento backend, lembrando que estes são os conceitos iniciais para conseguir entrar como dev junior no mercado os estudos nunca acabam...

![Lets go](https://media.giphy.com/media/p6qWfRJ4RxltUEmrl9/giphy.gif)

## Start 🏁

Não tem como fugir de HTML, CSS e JavaScript no início, mesmo sendo dev backend você precisara saber o básico de frontend por vários motivos, então aproveite esse início para estudar e fazer algumas páginas estáticas, o bom e que com isso,  além de aprender você já estará montando um portfólio visual que vai ajudar muito nas suas primeiras entrevistas.

## Escolha uma linguagem 👅

Finalmente chegou a hora de escolher uma linguagem e cabe aqui dizer que não existe uma linguagem melhor que a outra, porém é importante você pesquisar e ver qual faz mais sentido pra você.

Minha recomendação pessoal e começar por JS ou Python, primeiro porque são fáceis de aprender, possuem uma comunidade ativa e atualização constante além de muitas vagas de emprego que vão facilitar sua entrada no mercado de trabalho.

Com o tempo se necessário você pode passar para linguagens com curva de aprendizado um pouco maior como Java e C# e cabe aqui uma dica: **Não fique aprendendo um monte de linguagens desnecessariamente!**

Escolha uma e siga com ela, te garanto que nenhuma sera tão simples que você não vá precisar dedicar horas e horas de estudo para se especializar.

## Controle de versionamento 🎮

Independente da linguagem que você escolher você vai fazer vários exercícios e pequenos projetos para fixar seu conhecimento, que tal pegar os melhores e guardar no Github? 

Com isso você vai aprender o _Git flow_, algo que você vai utilizar a sua vida inteira como dev.

Crie e clone repositórios, crie _branch's_ a partir da _Main_, crie novas _branch's_, _commite_ suas alterações com **commit semântico**, faça _merges_, visando sempre aprender o fluxo básico de trabalho com Git.

Com isso você gradualmente estará montando um portfólio forte para suas primeiras entrevistas.

**Vale aqui um bônus**, se você tiver tempo e curiosidade que tal aprender o básico de Docker e levantar alguns _containers_? 
Será um conhecimento que trará um grande diferencial pro seu currículo no futuro.

Aproveite para pesquisar sobre [CI/CD](https://www.redhat.com/en/topics/devops/what-is-ci-cd), [Github Actions](https://github.com/features/actions) e Deploy.

## Escolha seu framework 🖼️

Ufa, cansou? Respira toma um café que sua jornada ainda está no início! 

Após aprender muito bem o básico da linguagem que você escolheu é hora de escolher um framework, no caso de JS você provavelmente se aproveitará do poder do Node.js para rodar o Express.js um framework web muito popular.

Aqui já fica a dica para seguir o @erickwendel_ um baita especialista Node.js focado no avançado.

No caso do Python o mais popular e o Django ou sua solução mais simples, o Flask.
Na comunidade [Real Python](https://realpython.com/), você vai encontrar várias dicas e tutoriais de como começar com esses framework's ou você pode dar uma olhada no meu passo-a- passo [aqui](https://dev.to/igorgbr/iniciando-uma-aplicacao-com-django-framework-o5g)!


## Banco de dados 🎲
Chegou a hora de passar de nível e começar a persistir seus dados, aprenda banco de dados!

E importante ter um bom conhecimento de MySQL e como funciona um banco relacional, aqui já recomendo o [Hacker Rank](https://www.hackerrank.com/domains/sql) onde você aprende realizando desafios e ainda ganha medalhas ao longo da sua evolução que você pode ir compartilhando no LinkedIn.

Além disso e importante saber lidar com um banco não relacional, sem dúvida o mais popular é o [MongoDB](https://blog.betrybe.com/dados/mongodb-tudo-sobre/) e você pode aprender de forma extremamente didática na [Mongo University](https://university.mongodb.com/) que é de graça e com certificado reconhecido internacionalmente além de te preparar para certificações mais complexas caso você tenha interesse no futuro.

Caso você pense em algo mais prático e mais rápido, o [Freecodecamp](https://www.freecodecamp.org/) tem uma [certificação em backend](https://www.freecodecamp.org/learn/back-end-development-and-apis/) focada em Node.js, Express e MongoDB onde você ainda sai com 3 projetos para usar no seu portfólio.

## Já acabou Jéssica? Take a Rest...

Não isso não e um convite pro descanso, mas sim para mais estudos!

![tired](https://media.giphy.com/media/3o7TKEP6YngkCKFofC/giphy.gif)

Mas calma, dessa vez estamos acabando mesmo! 😊

É de suma importância que você saiba o conceito de [Rest e API Rest](https://www.redhat.com/en/topics/api/what-is-a-rest-api), é basicamente o que vai fazer de você um dev backend, apesar de estar no final do nosso guia não significa que deve ser a última coisa a aprender, você será exposto a estes conceitos ao longo da sua jornada, aqui é o momento de se especializar e aprender de fato esses conceitos.

Para isso basta dar uma pesquisada no Google e ler vários artigos, tomando muito café! ☕

![coffe](https://media.giphy.com/media/hPTZgtzfRIB5Nfb5rL/giphy-downsized-large.gif)

## Projetos finais. 🔚

Hora de pôr em prática seu aprendizado!
Provavelmente você fez alguns projetos enquanto aprendia sua framework preferida, independente a isso minhas sugestões são de fazer projetos alinhados com o que o mercado espera de um dev junior, se você já fez beleza, da uma descansada, se não, bora lá!

![code](https://media.giphy.com/media/13HgwGsXF0aiGY/giphy.gif)

### Blog API
Hora de criar uma APi, se for fazer uma API de blog faça:

- Uma rota para o usuário criar um post e guardar em uma tabela no banco de dados.

- Uma rota para acessar todos os posts de um usuário pelo seu ID 

- Uma rota para acessar todos os posts do blog. 

- Uma rota para atualizar e outra para deletar os posts.

### E-commerce API
Se for fazer uma API de e-commerce crie:

- Uma rota para cadastrar um produto e guarde os dados no banco (por ex. Id, nome, descrição, preço, categoria) e todas as outras rotas do nosso CRUD.

O legal desse projeto e que você pode criar regras de negócio bem complexas.

### Autenticação JWT
Para finalizar aplique [autenticação JWT](https://jwt.io/) nas suas APIs que tal um _middleware_ onde somente um usuário logado pode ter acesso aos seus posts?

Que tal criar uma role de _admin_ para criar e deletar produtos e uma role de usuários para comprar?

![the end](https://media.giphy.com/media/l4FAPaGGeB7D1LfIA/giphy.gif)

## The End(?)

Está na hora do seu merecido descanso!
Tudo que você leu aqui vai levar minimamente de 3 a 6 meses para você passar, isso se você tiver um fluxo constante de estudos, porém é o suficiente para você entrar em uma empresa como dev backend júnior 🎉.

Mas se você gostou desse negócio de estudar aproveite para se aprimorar em conceitos básicos que deixamos às vezes de lado, como conceitos de [Sistema Operacional](https://www.inf.ufsc.br/~j.barreto/cca/sisop/sisoperac.html#:~:text=Sistema%20Operacional&text=Conceito%3A%20%C3%89%20o%20conjunto%20de,hardware%20e%20os%20demais%20softwares.).

Aproveite para se aprimorar nos comandos do terminal, gerenciamento de memória, [paralelismo x concorrência](https://aprendagolang.com.br/2021/11/12/entenda-a-diferenca-entre-concorrencia-e-paralelismo/#:~:text=Concorr%C3%AAncia%20%C3%A9%20basicamente%20a%20capacidade,v%C3%A1rias%20coisas%20ao%20mesmo%20tempo.), I/O, etc.
Para isso um curso básico de Linux já basta, recomendo fortemente o canal [Diolinux](https://www.youtube.com/c/DiolinuxBr).

## Conclusão
Ei, parece difícil, mas você precisa ter muita calma e disciplina nos estudos, divirta-se na jornada, celebre suas pequenas conquistas, intercale seus estudos com seus hobbys, não tem um? É um bom momento para começar!

Eu, por exemplo, escrevo, me divirto e ainda ajudo você que está lendo, mas também coleciono tampinhas, brinco com minhas filhas, etc.

No final das contas equilíbrio é a chave! ❤️