O objetivo deste material é treinar e preparar novos desenvolvedores para os desafios do mercado de tecnologia, por meio do desenvolvimento de soft skills e hard skills essenciais para sua carreira.
A proposta é oferecer uma trilha de aprendizado que ajude você a se destacar desde os primeiros contatos com recrutadores até o ambiente profissional. Aqui, vamos abordar:
- ✅ Apresentação pessoal: como se comunicar bem em entrevistas e processos seletivos.
- ✅ Entrevistas técnicas: como estruturar suas respostas e mostrar seu potencial mesmo com pouca experiência.
- ✅ Construção de presença profissional: como organizar e destacar seu perfil no LinkedIn e GitHub.
- ✅ Aprimoramento técnico: práticas de estudos, projetos pessoais e como evoluir constantemente em tecnologias exigidas pelo mercado.
- ✅ Comunicação e postura profissional: saber se posicionar, receber feedbacks, trabalhar em equipe e demonstrar atitude proativa.
Nesta tarefa inicial, cada aluno deve criar uma apresentação curta com informações sobre sua formação, objetivos e interesses com a tecnologia. O objetivo é desenvolver uma narrativa pessoal que possa ser usada também no LinkedIn e em entrevistas. Assim como exercitar um novo tema e desenvolver a pesquisa e aprendizado.
📄 Documentação
📄 Acesse a tarefa aqui
Nesta etapa, vamos aprofundar o entendimento sobre bancos de dados relacionais, focando na instalação prática, criação de tabelas e identificação de problemas comuns de modelagem que violam as 1ª, 2ª e 3ª formas normais (1FN, 2FN, 3FN). Você também aprenderá a usar o DBeaver para explorar dados e visualizar a modelagem por meio de um Diagrama Entidade-Relacionamento (DER).
Nesta etapa, vamos aprofundar o conhecimento sobre comandos do git e funcionamento do gitflow.
📄 Documentação
📄 Acesse a tarefa aqui
Nesta etapa, você irá criar e executar seu primeiro projeto com Spring Boot utilizando o Spring Initializr. Vai aprender a configurar o banco H2 em memória, utilizar o Actuator para health check e aplicar versionamento de banco com Flyway.
📄 Documentação
📄 Acesse a tarefa aqui
Esta prova tem como objetivo revisar os fundamentos de programação com foco em lógica, sintaxe e estrutura da linguagem Java. São exercícios práticos que abordam desde variáveis e operadores até classes, métodos e estruturas de dados.
Material complementar para reforçar conceitos básicos e intermediários da linguagem Java. É essencial para se preparar para os exercícios da prova e para outras tarefas práticas da trilha.
Nesta tarefa você deverá criar um projeto Java com Spring Boot utilizando o Spring Data JPA para reforçar o entendimento de:
- Mapeamento de entidades com anotações JPA
- Criação de relacionamentos entre tabelas
- Uso do Flyway para versionamento de scripts SQL
- Implementação de repositórios com métodos usando JPA Query Methods
Nesta tarefa você deverá criar um projeto Java com Spring Boot utilizando Spring MVC para reforçar o entendimento de:
- Criação de controller REST com
@RestController - Implementação do método
GET /clientes - Criação de classes
RepositoryeService - Uso de
@Autowiredpara injeção de dependências - Testes de requisições com o Postman
Nesta tarefa você deverá refatorar o CRUD da entidade Cliente aplicando boas práticas de arquitetura, como o uso de DTOs para entrada e saída, separação entre as camadas (Controller, Service e Repository), aplicação do princípio do mínimo privilégio e tratamento global de exceções.
Requisitos principais desta tarefa:
- Separar responsabilidades entre Controller, Service e Repository
- Criar e utilizar DTOs (
ClienteRequestDTOeClienteResponseDTO) - Usar
Optionalpara tratar buscas na camada de serviço - Implementar um handler global de exceções com
@ControllerAdvice - Evitar que a camada Controller tenha acesso direto ao modelo de domínio
🚀 Tarefa Extra: adicionar Swagger para documentação dos endpoints do ClienteController.
📄 Acesse a tarefa aqui: tarefas/009_CONTRACTS.md
Nesta tarefa, você deverá evoluir o CRUD da entidade Cliente implementado na Tarefa 9, aplicando melhorias e boas práticas avançadas para APIs REST em Spring Boot.
- Validações com Bean Validation: garantir que os dados de entrada estejam corretos, como nome obrigatório, tamanho mínimo/máximo e e-mail válido.
- Paginação e Ordenação: permitir listagem de clientes paginada e ordenada por campos específicos.
- Mapper centralizado: criar uma classe
ClienteMapperpara conversão consistente entre DTOs e entidade. - Testes unitários e de integração: garantir que os fluxos de criação, busca e listagem de clientes funcionem corretamente.
- Logs estruturados: registrar operações importantes para auditoria, como criação de clientes e consultas.
- Documentação OpenAPI / Swagger: enriquecer os endpoints do
ClienteControllercom descrições, parâmetros e respostas esperadas. - HATEOAS (opcional): fornecer links relacionados ao recurso nas respostas da API, permitindo navegação dinâmica.
- Centralizar lógica de conversão em
ClienteMapperpara reduzir duplicação no Service. - Tratar erros de validação no
GlobalExceptionHandler, retornando mensagens amigáveis. - Configurar endpoints no Postman com parâmetros de paginação (
page,size,sort) e salvar a nova collection comoclientes-collection-v2.json.
🚀 Tarefa Extra: adicionar suporte HATEOAS no ClienteResponseDTO, incluindo links como self, update, delete e all.
📄 Acesse a tarefa aqui: tarefas/010_MELHORIAS.md