Desafio de vaga backend para estágio na prática
Desafio de vaga backend para estágio: schema, text columns e API responsiva
Resposta direta
Desafio de vaga backend para estágio: schema, text columns e API responsiva. Então sem mais enrolação vou criar o projetinho aqui do zero para vocês eu vou usar o Spring Initializer porque eu gosto de usar é muito mais simples e tranquilo aqui E aí eu vou chamar de magalu as dependências que eu vou utilizar então vai ser a web vai ser o jpa vai ser.
Formato do desafio de estágio
Quando o episódio chega em «Formato do desafio de estágio», o gancho útil para desafio vaga backend estágio é transformar o trecho em decisão — não em resumo genérico.
Então, se você está procurando um estágio e quer ter o sentimento de ver um desafio sendo desenvolvido aqui no canal, se prepare que esse vídeo é exclusivo para você. Antes, assim, você ter lido sem pegar e desenvolver como vocês já sabem, se dá certo eu posso, se dá errado eu posto então, aqui, o que que eu tive que fazer? E eu considero ele um processo seletivo bem legal pra quando você tá querendo seu primeiro emprego como back-end Tá, então olha só, sem enrolação aqui. Em si não será desenvolvido nessa etapa, você não precisa se preocupar com isso então isso que eu achei muito legal a única coisa que a gente precisa fazer é o endpoint para armazenar essas informações para esse sprint ficou decidido que a solicitação do agendamento do envio da comunicação será salva no banco de dados portanto, assim que receber a solicitação do agendamento do envio ela deverá ser salva no banco de dados.
Pense com carinho nessa estrutura do banco, apesar de não ser você quem vai realizar o envio, a estrutura já precisa estar pronta para que o seu coleguinha não precise alterar nada quando for desenvolver esta funcionalidade. Utilizar banco de dados, uma SQL Postgres, se a gente for usar Spring Boot com Java é muito tranquilo. Points e vou detalhar um pouquinho para vocês, obviamente, vou usar algumas coisinhas diferentes que eu já estou pensando aqui e num outro vídeo eu faço os testes unitários, então vou ficar combinado assim, tá? Então a criação do banco e das tabelas fica a seu critério, ou seja, a gente pode criar via script via aplicação, enfim, e é isso tá?
Então sem mais enrolação vou criar o projetinho aqui do zero para vocês eu vou usar o Spring Initializer porque eu gosto de usar é muito mais simples e tranquilo aqui E aí eu vou chamar de magalu as dependências que eu vou utilizar então vai ser a web vai ser o jpa vai ser o devtools vai ser o longbox pode ser longbox Vou colocar um validation para dar uma diferenciada. Aqui no meu IntelliJ eu vou pegar e vou abrir, aqui na pasta downloads mesmo, pronto para realizar esse desafio aqui eu vou usar a arquitetura em camadas mas antes eu vou configurar o application.proportis para se conectar no banco de dados PostgreSQL, beleza? Eu estava com o meu GitHub aberto para ver o meu curso aqui que eu bolei de Spring Boot, e eu já tenho aqui o application.properties, coisa linda então, colo aqui o hibernate dialect, o driver class name, o usuário o password a URL do banco de dados, para mostrar Tchau. A geração dos comandos show SQL para mostrar o console enfim, está aqui, o application.proport aqui para vocês, e aqui eu vou criar a arquitetura em camadas mas o primeiro pacote que eu vou trabalhar vai ser com o model, ou entity vou criar o model beleza, depois vou ter que reconfigurar todo o meu IntelliJ para usar o meu pacote de de pastas, ficar bonitinho aqui pra vocês, bom, vamos lá new java class eu vou criar aqui o agendamento né, que eu tenho que fazer um agendamento acho que esse é o cenário melhor né, agendamento de envio de comunicação então eu vou criar uma classe beleza, essa classe aqui como eles não estipularam as colunas, eu vou criar por conta própria, então Long ID.
Feche «Formato do desafio de estágio» com um experimento de 30–90 minutos ligado a desafio vaga backend estágio: artefato + critério binário — sem inventar número fora da fonte.
Na prática
Information gain: use só o que a fonte afirma sobre desafio vaga backend estágio; scaffolding editorial não inventa número.
Modelagem e column definition
«Modelagem e column definition» é onde desafio vaga backend estágio deixa de ser vibe e vira critério. O material empurra execução observável, não plateia.
Ou seja, ela vai ser uma entidade que vai corresponder a minha tabela no meu banco de dados vocês tem que pensar que é sobre isso vou usar o Lombok pra fazer os getters e setters pra facilitar a vida, eu vou usar o no args constructor, o que que tá dando? Eu vou criar uma string com a mensagem então, arroba column nullable false e eu vou colocar um column definition como text vai ser um text lá no banco de dados o que mais que eu vou colocar aqui? Desse envio aqui, então vou usar um local date time para fazer isso aí, eu vou chamar de data hora envio, ele vai usar um arroba column também de nullable, o que mais que eu posso usar aqui? Eu vou precisar consultar o status do agendamento, então eu vou também criar uma enumeration aqui, então eu vou chamar de status agendamento, que eu vou chamar de status ele vai ser um enumerated de string também vou botar o nullable nem precisaria botar o nullable nesse caso mas tudo bem, só para ele montar o banco direitinho e eu vou criar uma coluninha para a auditoria aqui que vai ser um local datetime que eu vou chamar de criado em é isso, nem precisaria mas eu vou criar ela aqui, então column nullable Beleza, agora eu vou criar esses enumerations aqui.
Então, quando eu não quero expor tudo, por exemplo, eu não quero expor o ID ou não quero expor as datas aqui de criado o E, enfim, eu crio um DTO. Bom então o que que eu vou fazer aqui eu vou criar aqui um recorde pode ser que eu vou chamar de agendamento request de tio beleza então o que que vai ter aqui dentro deste recorde pessoal algumas coluninhas né então o que que eu quero que trafegue de requisição quando eu receber o post vai ser o destinatário o que mais? Aqui vocês viram que quando eu peguei no Spring Initializer eu coloquei o validation, aqui eu já posso fazer algumas validações pessoal, que validações são essas? Eu posso vir aqui usar o NOT é not new ou melhor, not blank, porque daí eu posso vir aqui e dar uma mensagenzinha se ele vir em branco.
São obrigatórios e eu vou fazer um arroba filtro e pessoal acho que eu nunca usei aqui no canal mas quando é data assim de data hora envio ó eu posso dar uma mensagem aqui que automaticamente que a data e hora de envio deve ser futura cara eu tô morrendo de frio vocês também que eu tô ficado aqui beleza então esse aqui foi o nosso primeiro de ti ou que é o de agora a única coisa que eu preciso criar é um detail de respiração response né para responder a informação para o nosso cliente server client-side então eu vou vir aqui vou criar um agendamento response de teu também vai ser um record e eu vou colocar aqui dentro um long a id um string destinar Response, eu coloco o ID, porque geralmente quando ele quiser fazer uma outra requisição passando o ID para eu fazer um update, por exemplo, então, na minha resposta, eu tenho que trafegar esse atributo. Repository show de bola e o repository ele é uma interface eu vou fazer um videozinho explicando tá o que que é uma interface para vocês beleza agendamento repository ele é uma interface e a única coisa que ele vai fazer é dar o extends ao nosso jpa repository que vai pegar a nossa entidade e falar que a chave primária dela que é o long Feito isso, agora eu posso partir já para o services, se eu tiver um service, se eu tiver alguma regra de negócio para implementar, ou então direto o controller, né? Um serviço que vai ser tranquilo que vai fazer só o agendamento enfim então agendamento service pronto como é que vai funcionar o meu serviço aqui ó ele vai ter o arroba services que ele vai usar o nosso repouso story então private final agendamento repouso story e eu vou usar anotação deixa eu diminuir a tela que tá me agoniando e ele vai usar a anotação e quiet args constructor show de bola é vou fazer um public agendamento responsivo então ele vai ele vai retornar um responsivo né um um response to, e eu vou chamar de agendar aqui, tá? Vai ter o agendamento request ponto tipo comunicação ponto data hora envio eu vou pegar o agendamento request ponto data e hora envio que mais ponto status daí aqui eu vou não vou pegar do request né eu vou pegar do meu é num então vai ser o agendado quando ele fizer um agendamento vai ser o agendado O criado em vai pegar o local date time ponto now.
Depois de «Modelagem e column definition», anote uma métrica (tempo, taxa, retries ou conversão) para desafio vaga backend estágio e rode um ciclo curto antes de escalar.
Na prática
Desafio de vaga backend para estágio: schema, text columns e API responsiva.
Endpoint responsivo
Sob o ângulo de «Endpoint responsivo», o que importa em desafio vaga backend estágio é o próximo passo testável. Se não muda prioridade em 48h, ainda é ruído.
E esse to response é um método que eu vou criar aqui embaixo tá gente então eu vou pegar e vou criar aqui para parar de dar esse erro public agendamento response to response já parou o erro agora só tenho que fazer o return do new agendamento response e colocar as informações aqui então é o Get ID. Id e aqui eu vou fazer o seguinte agendamento find view return to response do agendamento or else throw aqui eu posso, se eu quiser aprimorar, eu posso criar uma expressão lambda aqui para dar um new entity not found exception, por exemplo e colocar agendamento não encontrado Certo? Delete by isso aqui camada services montada eu vou simplesmente criar os as rotas que é o controller tá então é o último pacote que falta new package controller Botão direito, New, Java Class, Agendamento Controller. Ele vai ser um REST Controller, que ele vai ter um Request Mapping, que eu vou definir uma rotinha aqui, vou botar um barra API, barra Agendamento, pode ser?
Agendamentos pode ser beleza vou usar aqui daí é sempre assim o controller os os serviços e os serviços uso repôs tortar então private final agendamento services então vou chamar de service vou usar o request o request não required arx constructor para não precisar fazer o argumento aqui do um bloco para injetar dependência na verdade é fazer a injeção de dependência e agora eu faço meu post mapping normal public response entity ele vai retornar o agendamento response que eu vou chamar de agendar o autocomplete do autocomplete um botar aqui a gente agendar agora sim Então, eu vou pegar um agendamento responsiveTO, chamando meus services do agendar, e vou dar um OK. Variable show de bola vou fazer isso o mesmo que eu fiz aqui buscar por aí de return response-entity show de bola e o remover ele também já colocou só vou ter que mudar aqui o void eu vou vir aqui vou trocar um response-entity para interroga para ficar mais bonitinho show faço a remoção do return response-entity not content ponto build E aqui, basicamente, está feito o desafio. Se você não conhece a Rocketseat, eles ensinam tudo sobre linguagem de programação, sobre cursos de programação, é uma plataforma educativa, que no link deste vídeo eu vou deixar a descrição para você entrar diretamente aqui no meu painel de ofertas, no meu site como influenciador aqui da Rocketseat, que você vai ter. Além do desconto de influenciador você vai ter um desconto uma economia de 12 mil e 564 reais na assinatura do rock city one e fazendo esta assinatura você tem direito a acesso total à plataforma com todas as formações mais de 100 projetos para o seu portfólio mais de 1.100 horas de conteúdo tutor para tirar dúvidas instantâneas, fórum, suportes.
Quizzes, eventos exclusivos Enfim, clica aqui Se tiver com dúvida, chama no zap Se tiver com dúvida, me procure No discord que eu esclareço Tudo isso aqui para vocês, então vocês vão ter Um desconto muito legal Na assinatura Anual e você tem Também 15 dias de garantia Eu vou até entrar aqui na plataforma da Rocketseat Aqui ó, rocketseat.com.br Você E. Tem muita coisa bacana Inclusive tem conteúdos gratuitos aqui pra você experimentar Ver se você gostou Java com Spring Boot, tá? Nós temos um mini curso aqui dentro da plataforma Se você gostou, daí você entra no link que vai estar na descrição deste vídeo E faça a assinatura Você não vai se arrepender, beleza? E, cara, voltem na parte 2, que eu vou fazer os casos de testes, beleza?
Se «Endpoint responsivo» não caber na agenda, corte escopo de desafio vaga backend estágio. Aprendizado curto publicado vence hype longo consumido.
Como treinar sem trampolim
A seção «Como treinar sem trampolim» amarra desafio vaga backend estágio a trade-offs reais: o que cortar, o que medir e o que ignorar na primeira semana.
Terçou e todo mundo sabe que terça-feira aqui no canal, geralmente nós temos um desafio de vaga. E dessa vez, pessoal, esse desafio é um desafio de vaga back-end voltada para estágio. Estou aqui no Discord da minha comunidade. O link do Discord está na descrição deste vídeo que está sendo lançado.
E o Thiago Ferreira, ele mandou aqui um desafio da Magalu. E eu até questionei se era de estágio, perguntei se ele sabia dizer, porque eu gosto de resolver os desafios sem ter feito eles. Eu olhei por cima e eu meio que tive o sentimento de que isso aqui é um desafio de estágio tá? O Magalu tem o desafio de desenvolver uma plataforma de comunicação.
Você foi escolhido para iniciar o desenvolvimento da primeira Sprint. Deve ter um endpoint que receba uma solicitação de agendamento de envio de comunicação. Ter no mínimo os seguintes campos, data e hora para envio, destinatário e mensagem a ser entregue. As possíveis comunicações que podem ser enviadas são e-mail, SMS, push e WhatsApp.
Feche «Como treinar sem trampolim» com um experimento de 30–90 minutos ligado a desafio vaga backend estágio: artefato + critério binário — sem inventar número fora da fonte.
Sinais de que está funcionando
Em «Sinais de que está funcionando», use desafio vaga backend estágio como hipótese de trabalho. Escreva a regra em uma frase que outro builder execute sem o vídeo.
Neste momento, precisamos deste canal de entrada para realizar o envio, ou Ou seja, esse endpoint. A preocupação no momento do envio será de enviar e alterar o status do registro no banco de dados. Deve ter um endpoint para consultar o status do agendamento de envio de comunicação. O agendamento deve ser feito no endpoint 1.
E a consulta será feita por este outro endpoint. Ou seja, eu achei que só tinha um, mas a gente precisou fazer dois endpoints. Um para envio e um para consulta do status. Então, tu pode fazer na linguagem Java, em Python ou Node.
De preferência, mas pode ser usado em qualquer linguagem, depois explique o porquê da sua escolha. As APIs deverão seguir o modelo RESTful com formato JSON. Então, aqui já pega um pouquinho. Nesse vídeo de hoje eu vou fazer só os dois endpoints.
Depois de «Sinais de que está funcionando», anote uma métrica (tempo, taxa, retries ou conversão) para desafio vaga backend estágio e rode um ciclo curto antes de escalar.
O que evitar na primeira semana
O bloco «O que evitar na primeira semana» sobre desafio vaga backend estágio ganha densidade quando você separa claim da fonte de opinião ornamental — preserve só o acionável.
E eu vou colocar o PostgreDriver, né? Porque a gente vai usar o Postgres. Só terminando aqui de gravar e já vou aí. Vocês já estão vendo que eu estou sendo pressionado aqui em casa.
Então, não vou nem jogar na. Pasta eu vou deszipar deszipar o nome? Então, eu vou usar o arroba ID. Eu vou usar o arroba generated value com a estratégia de identity.
Deixa eu tirar tudo isso aqui que ele botou para mim. As anotações que eu vou usar aqui na classe agendamento são. Conflito, ah deixa, vou usar o ao args constructor E aqui eu vou usar uma anotação diferente, pessoal. Vou usar uma anotação diferente, depois eu mostro para vocês para que ela serve.
Se «O que evitar na primeira semana» não caber na agenda, corte escopo de desafio vaga backend estágio. Aprendizado curto publicado vence hype longo consumido.
Na prática
Próximo passo: escolha uma métrica observável e rode um experimento de 7 dias antes de escalar o padrão.