Olá! Este repositório é uma espécie de guia para pessoas que querem começar ou já estão na área de desenvolvimento backend e desejam se aperfeiçoar nessa área
Slides usados na apresentação que motivou a criação desse repositório: link
Essa apresentação contém também um tutorial de como montar uma API usando Kotlin e Spring boot, acessando a pasta tutorial
deste repositório
Antes de começar a falar sobre desenvolvimento em si, quero deixar aqui minhas considerações sobre a área de desenvolvimento. No conceito popular, a área de tecnologia geralmente cai em uma das duas categorias: muito fácil - em 1 mês a pessoa aprendeu a programar e já ganha 15 mil reais - ou muito difícil - vai levar anos para aprender e mesmo assim ainda vai sobrar muitas skills que você não vai conhecer.
A grande verdade é que a experiência que cada pessoa tem com a área acaba sendo bem única, e nenhum desses dois extremos é verdade absoluta. Pode ser que existam casos assim? Claro! Mas não é regra.
A questão é que, cada empresa, cada faculdade/curso ensina e forma a pessoa desenvolvedora de maneira diferente, pois cada lugar tem uma cultura, processos e formas de disseminar conhecimento específicos, e, por mais que tenhamos técnicas para isso (metodologia ágil, ladders de carreira, avaliações técnicas, processos seletivos, usar a infra na aws, usar ou não javascript, java, etc) ainda assim, tenha em mente que a pessoa que deve tomar as decisões sobre o que aprender e para onde crescer na sua carreira é você.
Compartilhando um pouco da minha experiência, no começo parecia que a área de desenvolvimento tinha muita coisa. É verdade, tem mesmo. E por mais que a gente queira aprender tudo, é preciso tomar cuidado com extremos de "vou usar meu tempo livre para aprender algo novo" ou "depois do trabalho eu não penso mais em código".
Aqui vão algumas dicas - mas, de novo, veja as que fazem sentido para a sua vida, carreira e saúde mental!
- Evite comparações - cada pessoa possui sua própria vivência e ritmo de aprendizado, então evite se comparar a outros devs
- Entenda qual forma de estudo funciona melhor para você - algumas pessoas preferem seguir tutoriais, outras assistir video aulas ou ter aulas presenciais. O importante é entender qual método funciona melhor para você
- Prática: desenvolvimento de software exige prática, tente sempre que possível implementar algo que aprendeu
- Busque entender o conceito, não apenas a prática: quando estamos aprendendo algo novo, é comum já querer sair codando. Não há nada de errado com isso, porém, é importante saber os conceitos das coisas, porque aí independente da linguagem ficará mais fácil de entender códigos já existentes
- Seja paciente e busque ajuda: uma parte muito importante do processo de desenvolvimento é conversar e trocar esperiências com outros desenvolvedores. Revisar código, tentar contribuir com projetos open-source pode ser uma boa maneira de aplicar algo que aprendeu e geralmente nesse tipo de projeto há pessoas que podem ajudar você a desenvolver suas habilidades
Abaixo você encontra uma lista de recursos legais para aprender, divididos por área
- Estruturas de dados
- Arquitetura de aplicações
- Fluxo de desenvolvimento
- Paradigmas de programação
- Banco de dados
- internet, protocolos, camadas, e dns
- REST
- Protocolos de comunicação de APIs
- Nuvem, devops e deploy
- Linguagens e frameworks para backend
- Metodologia ágil
- Ciclo de vida de produtos
- O que cobrar de um gerente de engenharia
- Processo de desenvolvimento de produtos digitais
- TDD - test driven development (ou desenvolvimento orientado a testes)
- DDD - domain driven development (ou desenvolvimento orientado a dominio)
- Código limpo
- GIT
- Logs e observabilidade