Bem vindo(a) ao Bootcamp, no qual foi feito com muito carinho para você aprender e evoluir de forma exponencial #somosNerds, pois afinal somos Zuppers #ZupperAjudaZupper!
O programa foi criado para que você consiga realmente treinar as habilidades que são necessárias para já chegar nos times de desenvolvimento da ZUP se sentindo super capaz.
Agora, antes de começar é importante que você leia tudo que está aqui com calma.
Na Zup Edu entendemos que excelência é formada por três pilares:
- Base teórica;
- Treino para aplicar a teoria;
- Oportunidade de aplicar a teoria + treino na vida real;
Cada um desses pilares exerce influência na busca pela excelência.
A base teórica expande seus horizontes e te faz enxergar o mundo através de novas perspectivas. Sem ela você tem um conjunto de informações mais limitado e isso impacta diretamente na sua capacidade de analisar um problema por diferentes prismas e também na busca por soluções.
Entretanto a teoria sozinha não é suficiente para que você de fato consiga aplicar tais ideias quando os cenários aparecerem, você precisa ficar preparado(a) para enxergar as possíveis soluções e ser capaz de aplicá-las na hora da necessidade. Para maximizar a chance disso acontecer, é necessário muito treino.
Existem alguns aspectos importantes para que você tenha um treino de qualiddade.
- Variabilidade -> Precisamos tentar aplicar aquela teoria em cenários diferentes;
- Repetição -> A repetição faz com que você busque as possíveis soluções de maneira mais fluida;
- Suporte -> Durante o treino você muitas vezes pode precisar de orientação e o nosso material foi preparado com isso na mente.
- Aproximação da realidade que será encontrada: O treino precisa te dar a chance de experimentar a realidade em ambientes simulados.
O treino serve para você masterizar uma ou mais habilidades. Essa masterização é um fator essencial para que você se sinta e também de fato seja capaz de realizar o que precisa com qualidade.
Enfim chegamos na tal da vida real. Por mais que ela também seja uma fonte de preparo, o principal papel da vida real é você performar. Você mostra para si mesmo que é capaz e entrega o máximo de valor em cima da sua atividade.
A teoria e o treino te preparam para que, na hora da necessidade, você consiga aumentar suas chances de fazer o necessário em altíssimo nível.
E aí, quando essa performance é entregue, o sentimento é muito bom. Ficamos muitas vezes tão felizes que queremos ter aquela sensação muitas vezes. Querer ter essa sensação repetidas vezes, é o que te faz querer melhorar cada vez mais. Inclusive essa energia de continuar se movendo, é que o chamamos de motivação.
Também é importante que você seja crítico(a) em relação a sua performance e tente sempre analisar quais foram os gaps que podem ser fechados num próximo ciclo de estudo e treino.
O estudo e o treino te preparam, a vida real te testa. Os três são importantes e você deve buscar maximizar o preparo para que o teste seja cada vez mais fácil.
Aqui você encontra as informações de como consumir tudo que criamos. Por favor, leia!
Antes de entrarmos de cabeça no código e tudo mais, é importante que você prepare sua mente, alinhe suas expectativas internas e também tenha conhecimento de algumas formas mais eficientes de ser a sua melhor versão como estudante.
Para isso é obrigatório que você consuma todo material que está descrito aqui!
O ecossistemas de tecnologias para desenvolver os sistemas mudam de tempos em tempos, afinal de contas estamos sempre em busca de entregar o melhor software possível para os mais variados tipos de cenários. O que até hoje não mudou é a necessidade de escrever código que possa ser mantido do ponto de vista corretivo e evolutivo por outras pessoas.
Claro que o primeiro objetivo de qualquer software é funcionar como o esperado, mas logo depois disso vem a necessidade daquele mesmo código ser entendido por outras pessoas, já que provavelmente muitas mãos diferentes vão passar por ali.
Queremos maximizar sua chance de escrever códigos de alta qualidade em qualquer situação e, por conta disso, essa necessidade vai acompanhar você em todos os desafios do bootcamp.
Então, antes de começar a escrever qualquer código no bootcamp, é obrigatório que você leia e veja, na ordem apresentada, todos os textos e vídeo que estão presentes nesta pasta aqui. As ideias contidas neste material formam a linha mestra do design do código que deve ser produzido durante o bootcamp.
Após cada texto lido ou funcionalidade implementada, sugerimos que você pare, respire e reflita sobre algumas coisas:
- O que eu realmente aprendi aqui?
- Quais foram as dificuldades que tive?
- O que eu preciso reforçar?
Especialmente para cada texto que vai ser lido, sugerimos que você faça um resumo. Reorganizar os conceitos dentro da sua mente é uma forma de fixar mais aquele conteúdo.
Aproveite que você está numa turma de bootcamp com outras pessoas e também tente contar para elas o que entendeu de cada coisa.
Para reforçar ainda mais aqui, o resultado final de toda sua interpretação sobre as teorias sendo apresentadas, é o código que você vai produzir. Então, para cada funcionalidade implementada, compare sua solução com a indicada no material de suporte e escreva uma reflexão sobre o motivo do seu código ter saído diferente. O que tem no seu que deveria ter no outro? O que tem no outro que poderia ter tido no seu?
Este é seu primeiro desafio. O objetivo é que no final você se sinta mais capaz de aplicar as técnicas de design de código em um projeto de verdade utilizando Java + Spring formando a fundação da tecnologia.
Falando em tecnologia, você trabalhará com as seguintes:
- Java
- Spring Boot
- Spring MVC
- Spring Data
- Hibernate
- Sugerimos ficar no padrão: mysql ou postgresql
- SQL
Claro que o design do seu código te acompanhará o tempo todo!
Lembre que o objetivo de um treino é seu desenvolvimento pessoal. Não é sobre andar rápido, é sobre evoluir com qualidade.
Com o tempo você vai perceber que este é o desafio mais fácil em termos de desenvolvimento de código, porém pode ser o mais dolorido para você. Será o primeiro e aqui, talvez, você perceba muitos gaps e tenha algumas dificuldades.
Pronto(a) para começar? Então acesse aqui siga na sequência apresentada.
Agora que já rolou o treino para implementar a casa do código, será que você vai conseguir implementar uma nova api? Dessa vez com um pouco menos de suporte em!
A parte mais importante aqui é você se colocar numa situação desafiadora. Busque implementar com menos suporte, se arrisque e veja o resultado. Aproveite que este é o momento do seu desenvolvimento pessoal.
Falando em tecnologia, você trabalhará com as seguintes:
- Java
- Spring Boot
- Spring MVC
- Spring Security
- Spring Data
- Hibernate
- Feign para requisições http para outros sistemas
- Algum banco de dados da sua escolha. Sugerimos ficar no padrão: mysql ou postgresql
- SQL
De novo o design do código te acompanhará o tempo todo.
O desafio do mercado livre realmenve vai exigir mais de você. Os cadastros são mais complicados e temos também temos algumas necessidades interessantes de fluxos de negócios e flexibilidade de código.
É beeem importante que aqui durante esta implementação você vá olhando para si e tentando verificar o quão capaz está se sentindo de implementar de api's web com as tecnologias que estão sendo trabalhadas.
Pronto(a) para começar? Então acesse aqui siga na sequência apresentada.
Agora chegamos no terceiro desafio do nosso treinamento. Este desafio vai exigir de você novas habilidades, principalmente conectadas com o mundo de microsserviços. Então é esperado que neste momento da jornada você esteja se sentindo mais confortável com as técnicas de design de código, Java, Spring etc.
O treinamento foi pensado para trazer um caso real, ou seja, muitas integrações e bastantes desafios técnicos te espera, tais como:
- Apache Kafka
- OpenTracing
- Métricas
- Kubernetes
Gostou das tecnologias? Foi apenas uma amostra tem muito mais pela frente!
Nesse treinamento você será responsável por criar um sistema de cartões, porém no escopo de provisionamento do cartão, fatura e extrato, não seremos responsáveis por gerenciar as transações, pois, as mesmas são gerenciadas através de um sistema de rede de captura e o nosso sistema somente será notificado via Apache Kafka!
Para que seja possível desenvolver as funcionalidades citadas a acima, precisaremos criar três Microsserviços, sim a gente irá trabalhar com arquitetura distribuída (Microsserviços), que irão em algum momento se integrar com o sistema legado(sistema de rede de captura), conforme imagem abaixo:
O sistema legado conforme imagem acima é composto por três sistemas:
- Analise: Sistema responsável por efetuar as análises financeiras.
- Contas: Sistema responsável por efetuar operações no cartão como: bloquear, aviso viagem, parcelamento, etc.
- Transações: Sistema responsável por efetuar e propagar as transações do cartão.
Está ansioso(a) para começar? Vamos lá!?
O desenvolvimento das funcionalidades devem seguir uma ordem, que deve ser:
1º Desenvolvimento das funcionalidades da Proposta
2º Desenvolvimento das funcionalidades da Transação
3ª Desenvolvimento das funcionalidades da Fatura
Você deve seguir a sequência do treinamento, na qual foi pensando com muito carinho, para que você aproveitar ao máximo e aprender gradativamente cada técnica, tecnologia e conceito!
Cada funcionalidade está segmentada em pastas:
Cada pasta tem seus desafios ordenados, novamente você deve seguir a sequência, como por exemplo:
/proposta
000.setup_projeto.md
001.setup_docker_compose.md
005.criacao_proposta.md
Demais né! Está ansioso(a) para codificar?
Antes de codificar precisamos configurar nosso ambiente de desenvolvimento!
Esse é o momento para fazer isso! Vamos lá?
Configure e verifique as instalações das seguintes ferramentas:
- Docker 1.13 ou superior
- Docker Compose 3 ou superior
- Java 11 ou superior
- Maven 3.6 ou superior
- IntelliJ ou Eclipse
Eba está tudo configurado! Vamos codificar?
Eba está tudo ok! Muito obrigado por estar nesse treinamento!
Estamos a disposição para te ajudar sempre!