Spec Driven Design com IA: Engenharia de Software na Prática (PARTE 2)
Convidados
Gustavo Passi
Podcaster
Explore o episódio
Dando sequência à nossa jornada no universo do Spec Driven Design com IA, este episódio mergulha ainda mais fundo na arte de transformar a engenharia de software. Se você busca otimizar seus processos de desenvolvimento e entender como as LLMs como Claude e Gemini podem atuar na prática, este é o conteúdo que você esperava. Retomamos a construção da nossa aplicação de colecionador de decks de Pokémon, revelando os segredos para escalar o desenvolvimento com inteligência artificial sem perder a qualidade. Prepare-se para insights valiosos sobre a prática!Nesta segunda parte, Wellington Cruz e Gustavo Passi (Podcaster) aprofundam o hands-on, guiando você pelas sprints 4 à 9. Acompanhe a implementação de funcionalidades cruciais como autenticação de usuários, criação de dashboards dinâmicos, gerenciamento de catálogo e até mecânicas de presente entre decks. Descubra o uso estratégico do Claude para geração de código e do Gemini para expansão de contexto e um rigoroso code review adversarial. A discussão explora a persistência do contexto via Markdowns, a importância da revisão humana em cada sprint, e como lidar com bugs visuais e lógicos (como problemas de cache e race condition) de forma iterativa. Eles abordam a criação de facades no backend, a implementação de paginação e o uso de componentes de UI modernos com Next.js e Tailwind CSS, demonstrando como a IA pode acelerar o desenvolvimento, mas sublinhando a necessidade de um background sólido em arquitetura e engenharia de software para guiar e validar o processo, evitando delírios da IA.Wellington e Gustavo demonstram não apenas a viabilidade do Spec Driven Design com IA, mas também os desafios e a expertise necessária para extrair o máximo dessas ferramentas. Prepare-se para uma imersão nos bastidores da criação de software com IA, descubra os próximos passos para otimizar a qualidade do código com QA e documentação, e deixe seu comentário sobre os rumos do desenvolvimento com inteligência artificial. Não perca este episódio essencial para quem quer dominar o futuro da engenharia de software! Acompanhe todos os detalhes do código no GitHub (link na descrição) e explore as soluções da Clever (clever.io) para o mercado cripto. Se você curtiu, deixe seu like, compartilhe e considere apoiar o PPT Não Compila via Pix ([email protected]) para continuarmos trazendo conteúdo de ponta!
- Introdução: A Continuação do Spec Driven Design com IA
- Recapitulando: A Estrutura do Projeto e o Poder da Expansão de Contexto
- Preparando o Terreno: Demonstração do Ambiente e Início da Sprint 4 (Autenticação)
- Sprint 4 em Ação: Implementando e Validando a Autenticação (Login e Usuários)
- Sprint 5: Gerenciamento de Decks e Dashboard Dinâmico
- Sprint 6: Catálogo de Pokémons com Paginação e Ajustes de UI
- Sprint 7: Detalhes do Pokémon e Correção de Navegação entre Decks
- Sprint 8: O Mecanismo de 'Gift' e a Resolução do Bug de Cache
- Sprint 9: Polimento Final, Manual do Usuário e Preparação para o Code Review
- Gemini Entra em Cena: O Code Review Adversarial e os Débitos Técnicos
- Planejando a Sprint 10: Correções e o Futuro da Engenharia de Software com IA
Muito bem, muito bem, meus amigos do PPT não compil. Estamos aqui para mais um episódio.
Esse episódio que é uma continuação do anterior, onde nós começamos a falar sobre spec driven design.
Ficaram sprintz em aberto, ficou umas sprintzinhas ali em aberto que o pessoal comentou bastante aqui dizendo que queria ver essa continuação, né? Então, a gente correu aqui para voltar e continuar esse episódio para mostrar para vocês aqui como fazer engenharia de software utilizando IA sem loucuragem, né?
Sem sem delírio, sem sem caseira. Isso aí, fazer um negócio profissional usando os mesmos preceitos que a gente tem de de inteligência artificial e de arquitetura de software, arquitetura e engenharia de software que nós usávamos pro desenvolvimento com ser humano também.
Isso aí. Nesse episódio mais o Claudião trabalhando, né? No outro foi mais o Gemini.
Gemini. Isso.
Esse aqui mais o Claudião executando e depois o Gemini vai dar um review lá para ver se ele trabalhou direitinho.
Vai dar uma criticada.
Muito bem. Beleza, então vamos lá que continuação, né, Gu?
Solta. Vamos nessa. O mundo tá de ponta cabeça e a gente mostra porqu nesse episódio.
Exatamente. Bora.
Valeu.
Vamos lá. Estamos aqui de novo, então, Gu, pra gente continuar o nosso episódio, que era para ser um, acabou ficando mais extenso e vamos continuar aqui o nosso handone de spec driven design, né?
Muito bem.
Então, eu vou fazer um privilo em PPT, não compila, só pra gente pegar a sacada de sério.
Não, não, não. Então, tudo bem.
Foi segue. É. É, então eu vou dar um um overview rápido aqui do que que a gente fez, mas tem dois episódios, se você caiu de paraquedas nesse, tem dois episódios que eu recomendo que você ouça e assista antes. O primeiro é o que eu fiz com o Valdir, que a gente falou em alto nível de como utilizar a IA, engenharia de software, do que era capaz, etc., que gatilhou a gente fazer o episódio passado da semana passada, que foi o handone que a gente começou a mostrar como utilizar IA na engenharia de software, que aí eu tô fazendo aqui com o Gustavo e que a gente vai continuar hoje porque o assunto acabou se estendendo e a gente vai passar nesse episódio agora o o complemento, tá bom?
Então, se você não assistiu o primeiro, não assistiu a introdução, volta lá, assiste esses episódios que esse aqui vai fazer muito mais sentido. Eu vou passar aqui em 5 minutos, só o que a gente já fez no outro episódio. Então, se não ficar claro, você volta lá no outro episódio que vai ter tudo detalhado que a gente tratou nesse nesse nesse stack que eu que eu vou passar aqui.
E se tiver dando tudo certo até aqui, você tá gostando do episódio, [email protected] BR e dá uma calibrada lá para ajudar para manter tudo isso aqui de perra, inclusive as luzes.
Isso aí, porque o curso desse aqui por aí tá carinho, hein, cara?
É, tá caro na Lura. Vixe, você nem acha.
Car. Então aqui, ó, a gente primeiro criou um primeiro arquivo que é o project. FMD que define os aspectos no geral de como os agentes precisam trabalhar. Então, a gente definiu aqui quais são os arquivos que a gente já tá criando para ele, tudo em Mark e e como vai ser todo o processo de de desenvolvimento que ele precisa a cada interação trabalhar para gerar a aplicação que a gente que a gente tá propondo. A nossa aplicação é uma aplicação de teste, onde a gente vai fazer um um colecionador de deck de Pokémons, tá? Isso aí. Então, volta lá que vocês vão entender tudo como foi feito. Então, eu eu especifiquei aqui o que é cada arquivo que eu já estou deixando eh preparado para ele e como ele deve trabalhar com os agentes. Aqui eu tô usando du dois LLMs, o Cloud para geração de código e o Gemini para expansão de contexto. A gente explica melhor lá o que é expansão de contexto, mas basicamente é o seguinte. Eu passo uma especificação para o o LLM em alto nível. Então, eu criei esse arquivo LLM que eu mesmo escrevi, onde eu defino para ele quais são os specs, quais são os aspectos da minha aplicação em alto nível. Então eu coloco o como que vai ser o meu front end, como vai ser o meu back end, qual é a minha arquitetura macro, como vai ser runime, comunicação, segurança, observabilidade, eh algumas especificidades que são de cada de cada componente. E no final eu falo para ele interpretar esse meu contexto. E aí ele vai criar um um segundo arquivo que é o traço details, onde ele vai pegar tudo aquilo que eu defini e vai expandir esse contexto. Então ele vai deixar essa informação mais rica. Por exemplo, eu falei que eu preciso de tabelas para criar nesse banco de dados que eu defini ali como SK Lite, que vai subir junto com o backend pra gente testar. E aqui ele já me traz toda a modelagem.
Então, antes de eu partir pro código, eu já tenho aqui toda a modelagem para atender se essa modelagem de fato atende aquilo que eu defini ou não paraa aplicação, né? Então, antes de gerar o código, eu expando essa minha documentação, eu expando meus meus aspectos para que fique mais determinístico pro determinístico e determinante, tá bom?
Para para aquela aplic para aquele LLM que vai gerar o código, Vossa Excelência.
Não, mas é que matematicamente é determinístico.
Ah, tá bom. É que eu só fiz o terceiro colegial só.
Mas mas acho que cai na no terceiro colal.
Cai não, não. Escola pública.
Ah, então não.
Ah, não. Você ter noção, o inglês para no verbo to be, né? Então aqui eu falo da autenticação, etc. E ele já me me definiu qual que é a estratégia de frontend para cada uma das páginas. E aí isso daqui tá em linguagem humana, documentação. E antes de eu começar a a desenvolver, eu simplesmente leio aqui, vejo se eu concordo com isso, se eu quero ter algum a a algum detalhamento a mais sobre isso, senão eu toco o barco.
Então eu tenho algumas uma conversa com o Gemini, com o Gemini, que ele assumiu o papel de estrutur e planejador, planejador, planejador planejador e expansão.
Isso que ele vai expandir o contexto.
Isso. E aí eu tenho aqui também o arquivo de business rules, que é como vai funcionar a mecânica da aplicação, basicamente. E ele faz a mesma coisa, ele vai criar um arquivo mais completo de como deve funcionar essa aplicação com base naquilo.
Eu achei um erro ali. É de mim, é de mim.
É que eu eu mandei colocar.
É. Tá.
Se você se você Ah, isso é interessante.
Se você mandar ele fazer merda, ele faz.
Tá.
Então você viu que eu tô esperto, hein? Tô esperto.
Tinha um tem um podcast que chama Admin.
de mim, eu acho.
É, é, a gente já cuidou aqui num pod deve ser de segurança na informação. Ser maravilhoso. Se é agora é Luvre Luvre, né?
É Luvre Luvre.
E aí eu tenho aqui também o Infrodevops, que aí eu falo para ele como que essa aplicação tem que rodar, como ela tem que buildar e ele expande também isso em detalhes. Agora veja a parte de layout também que eu fiz aqui um contexto bem eh sintético, né? E ele expandiu isso daqui para mais detalhes de como criar o layout, etc. Veja, isso daqui não é natural da aplicação criar esse detal, fazer essa expansão de de aspectos. Isso daqui eu defini dentro daquele arquivo principal que é o project. MD, né? Então eu coloco aqui que para cada arquivo ele vai ter que criar um arquivo ponmd para poder para poder desenvolver além essa aplicação. E além disso, no final de cada um, eu também deixo isso claro através de uma sessão de detalhamento, que aí ele vai entrar aqui e vai deixar isso muito mais rico em um arquivo traço de teos. Na estratégia em si, a gente expande o conhecimento, documenta para depois da continuidade, ele já tá expandido.
E se a gente trocar o Ll, ele tá esperto também.
Sim, exatamente. Você fica gnóstico a isso, né? Então você faz um detalhamento inicial do que você quer. Quanto mais detalhe você tiver para gerar o código, melhor. E aí você refina esse detal detalhamento para ele ter mais contexto ainda, mais informação. Revisa e aí você pode, a partir dali gerar o código que ele vai ser muito mais efetivo, né?
E aí eu fiz aqui o planning.mmd também.
Veja, eh, a gente tem uma janela de contexto que é curta. Se eu pedir para ele desenvolver tudo isso de uma vez só, ele vai se perder. Naturalmente ele vai se perder. Por isso que eu trato esses arquivos bem documentados. E aí eu falo para ele, ele vai trabalhar em sprints, na verdade ele vai trabalhar em iterações. A gente chama de sprint para ficar mais claro, para todo mundo entender.
A galera do ágil pirar.
Isso. Exatamente. Então eu defino aqui quais são as entregas que ele tem que fazer para para cada uma dessas dessas fases. Então na fase um, ele vai fazer o setup inicial. Na fase dois ele vai mocar os web services. No terceiro, ele vai mocar o front end.
A gente parou aí.
Paramos aqui no terceiro. Na na outra vez geramos três sprints.
Na quatro ele vai fazer agora autenticação e gestão das telas, proteger por login. Vai fazer na quinta o dashboard, na sexta o catálogo. No sétimo os detalhes, no oitavo ele vai implementar o mecanismo de presente que eu posso mandar para você um Pokémon e etc. E no nono ele vai fazer um um polimento em geral, porque ele olha todo o código e faz algum ajuste que for necessário.
E aí a gente falou que dependendo de como a gente chegar nesse nono, a gente vai fazer um episódio só de casos de teste.
Isso.
Rodando em cima de tudo isso foi construído.
Exatamente. e definindo antes da aplicação quais são os casos de teste que ele precisa criar, porque aí ele faz um spec driven que vai criar um desenvolvimento que é orientado a teste, beleza?
Então, primeiro ele vai escrever os casos de teste para depois escrever os códigos.
E aí a gente pode usar o o Q&A outro LLM?
Pode. Agora a gente tá, aliás, é recomendável que você use LLMs diferentes, tá? especificar com um, desenvolver com o outro ou você desenvolve o código com um e faz o code review com outro. Então, a galera vai decidir, quem chegou até aqui, qual vai ser a LLM dos casos de teste.
Boa. Deixa aqui no comentário isso aí.
Então é isso. O que a gente tem já aqui rodando pra gente relembrar, a gente tem um back end rodando. Deixa eu voltar aqui no terminal.
Essa é a hora que o operador não entende [ __ ] nenhuma. [ __ ] os cara vai falar de Pokémon, né? que trocou, trocou o operador.
Então aqui eu já tenho.
Você deixou a máquina quietinha do jeito que tá abrir, né, mano?
Tá, eu vou rodar aqui, ó. Tudo tudo já tá em docker compose, galera. Tudo prontinho para subir. Então eu vou dar aqui um docker compose para ele rodar o spring.
Pronto, spring já está rodando. Aí eu venho aqui, eu já tenho o meu swagger rodando. D até o refresh aqui.
É, esse a gente tinha também no último episódio.
Sim. É só para recapitular, tá? Então, todo esse IPI design ele que que fez também. Então, ele sugeriu os métodos, ele sugeriu aqui o o os DTO, sugeriu aqui quais são os métodos de request, post, persistência, login. E a gente, claro, não revisou a fundo, mas num desenvolvimento profissional você vai revisar, entender se tá aderente o ao que você faria sem a, né? E aqui se comunicando com esse back end, a gente tem um front ends aqui que não está rodando. Vou botar ele para rodar.
Parece que é um problema. A gente pediu para traduzir tudo que é texto, mas não pediu os métodos, né?
É, mas o método por padrão é bom ficar em inglês.
Ah, mas essa é legal. Pega Pokémon, vai Pokémon Go.
Então aqui, ó, ele já mocou qual que vai ser a tela de quando eu recebi um presente, né? E aí eu vou escolher qual deck que eu vou colocar. E já fez aqui como vai ser o meu Nashboard.
Mas no Pikachu que ele ele deixou mocado já com os detalhes, ó.
Aí ele já pega aqui o card de como é o Pikachu, como vai ser para enviar um amigo. Então eu já consigo ter um moque aqui de qual vai ser a aparência da minha aplicação. E tá bem bacana, tá bem top.
Isso aqui feito com o T Wind. e NextJs.
Beleza, agora que a gente vai voltar nos agentes e vamos paraa sprint 4.
Isso. Vou abrir aqui o o Gemini. Por enquanto deixa quieto porque ele não tá no desenvolvimento. Eu vou chamar aqui o Cloud.
Aí ele vai pedir autentication.
O meu já tá autenticado.
Então eu primeira coisa que eu costumo fazer, eu já devo ter algum alguma aplicação que faz isso automaticamente, algum plugin, mas eu vou fazer porque nem todos têm, né? Então, recupere a memória de contexto para esse diretório, que aí ele vai olhar e vai ver onde a gente parou, né? Então ele vai ler já o que ele tem de recurso interno, né? E vai dar uma lida aqui nos documentos para ele restaurar a nossa sessão.
Ele tá dando um refresh também.
Isso já trouxe a estrutura, etc. Você é casual e afetivo?
Eu sou casual afetivo.
É lá aonde?
Tom casual e afetivo sobre você. Vai lá.
Idioma: PTBR. Tom casual e afetivo.
Nossa.
Papel dono do projeto. Orquestrante agentes. Planejador programador em workflow. Spect driven. Validando cada etapa.
Beleza? Então, ó, veja. Estatus dos sprints conforme a memória do dia 17 de abril. Sprint 1, que é o scaffold inicial, Docker, CCD, backend, front end, checked, back end da pi com os mocks mais o swagger checked e o front end mock com todas as telas também checked. E eu tenho aqui os sprints 4 e que estão planejadas, os tesques estão prontos e ele fala que já tem os logs e tal. E aí ele fala: "Quer que eu verifique o estado atual dos sprints, dos logs mais recentes, os próximos passos antes de seguir?" Sim.
Então ele confirma aqui quais são os códigos. Ó lá, próximo é Sprint 4, autenticação e gestão. Quer que eu chame o planejador do Sprint 4 ou já partimos direto pro programador? Ah, Extreme Go Horse, escreve para ele, vê se ele sabe.
Só testa, só testa, mano.
Aqui é um contexto como se fosse sério.
Não, mas coloca às vezes.
Você é o agente.
Você é um cavalo. Vai, cavalo.
Você é um cavalo. Vai cavalo.
Ó, ele vai reler o código.
Você sabe que eu já fiz uma camiseta Extreme Go Horse? Era um cavalo com a pata torta assim.
E é isso. Agora ele vai começar a desenvolver com base no Aí já abre lá pra gente ver o detils do Sprint 4. Então, ó, o Sprint 4 ele já tá planejado, ele tem o tesques.
Ah, mas o que que ele vai documentar de novo do quatro?
Ah, ele criou logs.
O logs, tá? Quando aí apareceu o logs, é, quer dizer que ele rodou. Isso.
Quando a gente rodou lá o o planejador, eu coloquei qual era o objetivo da sprint e ele cria automaticamente quais são as atividades que ele precisa fazer para atingir aquele objetivo. Então ele sabe que ele tem que cumprir essas tesques com essas subtesques para poder entregar sprint. Então ele vai ler o que já foi feito, ele vai ver o os o logs, o terceiro, tá vendo aqui, ó? Quando ele termina, cara, só uma curiosidade, eu te mandei essa notícia que 25% já do código do Google é feito por por inteligência artificial e revisão dos engenheiros.
Hã, esqueci de te encaminhar.
Então, ó, ele já fez, ele usa o planejador do Cloud para implementar o que precisa para validar aquelas tesques. Então, ele já tá com já tá aqui, ó, implementando JWT provider e assim ele vai seguindo. Veja, a gente usa o contexto.
Por que que ele já vai refaturar?
Porque lá era MOC.
Ah, tá, tá, tá, tá.
Então ele precisa evoluir o MOC, tá bom?
Entendeu?
E veja, a isso daqui é o suficiente para uma janela de contexto razoável, que nem o Cloud agora tem de 1 milhão de tokens.
Hum.
Mas se eu fosse querer implementar tudo de uma vez, provavelmente não caberia na janela de contexto. Então, qual que é a estratégia do spec Driven design? faço uma parte, documento. Faço uma parte, documento, porque aí eu leio depois só aquilo que é necessário para implementar aquilo que eu tô que eu estou fazendo. E assim eu nunca fujo da janela de de contexto e consigo deixar documentado para outro LLM ou uma outra sessão que eu tiver com LLM conseguir resgatar o que foi feito sem perda de informação.
Então eu tenho que persistir isso. Por isso que os markdowns são tão são tão importantes.
Sim.
É, ele só vai fazer o log no finalzão mesmo.
Isso aí ele vai escrever os print 4.l logs.
Então o que que vai sair nessa tesque para nós? Vai sair o auto controle, user controller, toda a parte de login, né?
Tá?
Então aqueles mocks, etc. Que estavam públicos, ele vai refatorar, a gente vai reexecutar e aí eu ele vai criar lá o usuário admin de mim. E eu vou ser capaz de fazer login e criar outros usuários.
Tá bom? É isso que nós vamos testar em seguida.
Isso que a gente vai testar em seguida.
Aí nós vamos criar o Ash, o Brock e o a menininha, esqueci o nome dela.
Ô Guga, descola para nós aí qual que é o nome da menininha. Andava o Ash e o Brock, que o Ash era apaixonado nela, né?
Eu não sou dessa geração.
É essa hora que o berê pira, né? Que nós não sabe nada de Pokémon.
Pois é,
inclusive ela era que tinha o Bubassauro, né? Vou passar Pokémon é top, mano. Top mesmo.
Eu achei essa PI para aprendizado do Pokémon bem legal, não acho. É, é legal e é e é e é autoexplicativo paraas situações de sistema, né?
Um Pokémon com X coiso, n? Entendeu?
Exatamente.
Bem melhor que minha sugestão de videolocadora.
[ __ ] ter aí eu ia ter que fazer em clipper.
Caraca, ter que fazer em clipper.
Vou aparecer com um cheque aqui.
A mist mist.
A mist. Isso aí. Mist.
É mist.
Depois a gente criou também os usuários daquela do clã que era contra eles lá que tinha o miau.
Equipe Rocket. Equipe Rocket. Equipe Rocket. Caraca. Cara, é que eu sei também, eu tô frescão porque meu moleque assiste, né?
Ah, Pokémon é multigeracional, cara. Isso é muito louco.
Esses dias falando nisso, só enquanto ele trabalha, eu recebi um post de quão era pesado o Cavaleiros do Zodíaco pra nossa idade, né?
Era, mano, era animal.
Os moleques tinha 17 anos, tinha que brigar, matar, de de laceral os cara.
E era uns cara adulto, gigantão, era pesadão.
É. É, mano, eu vi um um carrossel com oito oito mensagens assim, o quão o quão a gente não absorveu a mensagem do negócio.
E todos eles com crush na Atena.
É isso. Isso aí também ainda um Da outra vez eu tinha rodado para ele não pedir permissão para nada, né?
É, tem que dar de novo.
Não, deixa assim por enquanto.
Validar build back end. Ele tá, ó lá, ele tá validando os builds, tá vendo? Se ele pedir muita confirmação, aí eu rodo com skip dangerous.
Ah, só vale pela sessão aquilo é só pra sessão, tá?
É, senão fodeu, né? Perigoso.
É, não, ele roda git, ele pode apagar arquivo, então pergunte, pergunte antes.
É, agora ele vai validar o a build.
É, vê se não quebrou nada, né? Se a gente tivesse já definidos casos de teste, ele ia rodar o teste retroativo, se não teve nenhuma quebra, se se os testes unitários passaram, tudo nesse momento agora, entendeu?
Para dar o sprint como don. Isso que você pode colocar lá nas definições que você vai ter uma cobertura de teste mínima e você não pode ter nenhum nenhum teste de regressão quebrado no final do sprint, senão ele volta e analisa onde ele pode ter quebrado, entendeu?
Quero falar com você agora que ainda não conhece a Clever. Clever é uma empresa que já tem mais de 3 milhões de usuários em 30 países com 30 idiomas diferentes, que tem trazido soluções em blockchain, criptomoedas e ativos digitais. O objetivo da Clever é te dar liberdade financeira para operar esse mercado de cripto. Então, se você acredita nisso, se você acredita nessa liberdade, você já pensa como a Clever, vai conhecer os caras, é clever.O. estão contratando também pessoal para trabalhar com cripto, com blockchain. Então, se você tem interesse, se você tem conhecimento nessa área, procura a Clever. Se você gosta de criptomoedas, se você opera no mercado, você precisa conhecer a Clever, precisa conhecer as soluções da Clever.
Então, o endereço tá aqui embaixo no vídeo. Para quem não tá no YouTube, é clever. Vai lá, vai conhecer que realmente é um mercado sensacional.
Ó lá, tá vendo? Ele ele fez um build e e ele não buildou porque não tinha imagem local. Agora ele validou e ó, ele fala: "É build rodou limpinho, ó.
Precisa de suspense.
Agora o front end tá testando aqui.
Tontend.
Hoje eu tô muito piadolas.
Tá para dormir com o bujo.
Comeu palhacitos. Lembra disso?
Comeu palhacitos.
Dependendo da idade da molecada que tiver assistindo isso, nem sabe o que é.
Nem o Bzo, nem o Palhaitos. e muito menos os cavaleiros zodíaco.
Ah, é? Não, cavaleheiros acho que é obrigatório, né?
Não sei. Pokémon. Pokémon é é eh mais recente.
Não é recente, é meio que atemporal.
É. Não. E voltou com tudo agora, né? Por causa das cartinhas de de 4 B lá.
Pokémon Go que a galera ficava caçando no celular, né? Isso, isso aí foi o maior voo de galinha que já existiu na história dos games.
Car, ainda tem gente até hoje fazendo iso.
E eu vi que os caras usaram eh tão com projeto de mapear o mundo, porque enquanto você tava lá com a câmera, ele capturava a foto de onde você tava com GPS.
Hum. Então, os caras fotografaram o mundo, basicamente. Os caras tem o maior banco de dados de imagem do mundo inteiro, maior que o Google com Maps.
Não sei, mas os caras Mas é outra coisa, porque o Maps ele pega aquele 360, uma coisa mais geográfica. Ali os caras tm foto ali, ó, como se tivesse fotografando a calçada.
É verdade.
Ó lá, rodou. Beleza.
Build Sussex.
Ó lá, log completo em sprint 4.logs.
Vamos lá olhar agora. Vamos conferir o que que deu aqui, ó. Sprint 4 logs. Então, ele colocou aqui, ó, todos os o que ele fez pra persistência de usuário, back, serviços, controllers reais, segurança, tá tudo aqui.
Camada de autenticação, proteção de rota, tela integrada, configuração e o build revalidado, checkpints para validação humana. Aí ele tá te dando a dica ali, né? Subir tudo com Docker compos.
É isso aí. E validar muito bem. Então vamos lá.
Ah, pera aí, ó. Abra o local host.
Acessar qualquer rota. Vamos lá. Ele tava, ele já tá te dando o plano de teste ali já, né?
Que aqui a gente pediu, lembra? Para o que que eu tenho que fazer pra validação humana?
Gozado. Ele não reclamou do admin, né?
Reclamou na na especificação. Falou que é um problema de segurança.
Ah, é verdade. E do alt e do Shadow 56. Shad. Isso. Verdade.
Vamos lá. Então aqui, olha, coloca acessar qualquer rota ou barra admin sem estar logado. Se você for para esse caminho, ele vai direcionar pro login.
Beleza, vamos testar. Eu vou ter que encerrar e rodar de novo para ele gerar com os novos arquivos. Então eu vou encerrar e rodar novamente as duas aplicações.
Quando você faz isso é como se fosse o local host do Isso. Os dois estão rodando em local host do Aspão da vida lá.
É só que tá é local host. tá rodando local, só que eu estou rodando em Docker, né?
Tá.
É, aí foi onde eu fiquei.
Aí se eu for te explicar o que é do tem que fazer outro outro episódio, tá? É só pra galera lembrar que eu desenvolvi em três três camad, gerava a DLL, subia no Então aqui, ó, se eu bater no barrad de mim, ele vai me jogar pro login.
Top. O legal que ele faz uma [ __ ] salada, né?
Ele pega o logo do podcast com Pois é.
É. Ah, mas eu que dei esse arquivo para ele usar de referência.
Ah, é?
É.
Tá.
Então ele botou ali. Então eu vou logar com mim. Agora agora é a hora, hein?
Admin, admin.
Logado.
Muito bem.
Já tenho aqui uma administração para gerenciar usuários.
Que que ele sugere depois?
Eh, loga com errado.
Logar com errado. Vamos sair. Logar de novo com o errado.
Põe luvre. Luvre.
Usuário são inválido. Beleza.
Aparentemente o login está rodando corretamente.
Aqui eu tenho que jogar para o barra de minha para cair no usuário. Beleza. Na verdade eu ten um ícone, tem um aqui, ó.
Gerenciar usuário aqui embaixo.
Dá um novo, dá um novo usuário ali para ver. Então vamos ver o que que ele sugere. Deve ser isso agora, né? Tá. As 1 2 3.
Até acertei qual era o usuário, hein?
[ __ ] também, né?
Novo usuário.
Ash.
Ash.
Senha. Ash.
Pikachu. Car.
Criar.
Beleza.
Sucesso. Cria o Brock.
Agora eu vou sair e vou te logar com as
beleza. Aí ele caiu já sem não tem aqui o botão de de criar. Beleza, usuários. E aqui eu tô com os meus moques dos dashes. Beleza.
Lindo.
Lindo de bonito.
Que mais ele fala lá só por desencargo.
V aí ele pede para olhar o o Swagger, tá?
Porque o Swagger ele ah ele pede para testar se logado com o Ash eu consigo acessar o barra de minim. Não, ele redireciona pro normal.
Então o filter tá funcionando corretamente, beleza? E aí ele pede para testar o swager, mas se a gente já fez o teste funcional e funcionou, é porque o swager também está funcionando. Porque aqui no API Ah, tá esse aqui, ó.
Que além disso a gente pediu para ele expor uma API.
Ele refaturou também, né? Ele refaturou e ele deveria me expor a PI aqui. Mas aqui, ó, ele tá como não autorizado, eu teria que fazer uma chamada autorizada com o post, etc. E a gente não vai testar isso aqui. Mas na especificação eu falei que tudo que fosse criado lá, ele também deveria expor uma PI. Então, beleza, sprint validado.
Muito bem, parabéns.
Tá direitinho, hein, Cláud? Claudião, Claudião, bora, querido, pra próxima.
Bora.
Agora ele vai começar a ler e vai preparar a sprints.
Ele escreveu: "Bora". Você não?
Ah, bora. Vou ler o plano. Tá boa.
Para saber o escopo, que que era A5?
A C. Vamos lá. A5 é dashboard.
Então aqui eu vou poder criar a gestão real dos decks e visualizar os Pokémons dentro de cada deck. Então posso criar n decks agora.
Tá.
Criar o deck já subentende que ele também consegue pegar o Pokémon e atribuir ao deck.
Não, isso acho que vai ser no dashboard, entendeu?
Que doideira essa ordem.
É, se bem que é que eu faria todos os crudes, depois eu, né, programador, todos os crudes, depois a tela de dash, depois a tela de presente.
Mas ele fez isso, né? Porque na verdade ele tá implementando aqui, mas o crude não. E o crude dos Pokémon fica aqui, ó.
Eu já tenho aqui, ó, V1 Pokémon. Vamos ver um Pokémon aí de Então, mas ele pega dos Pokémons que existem lá na na nossa PI, né?
Isso não se cria Pokémon não. Não se cria.
Por isso que você tem só a lista e o get e o ID e do get.
Então você vai pegar esse ID e aí ele vai atrelar o ID do deck. Quer ver?
Vamos ver como ele modelou.
Foi aqui. Aqui, ó. Tabela Dex.
Então, eu tenho o ID, o nome e o nome do usuário no deck. E aí eu tenho aqui, ó, eu não tenho uma tabela Pokémon porque ela vem da PI.
Aí você tem o deck com o Pokémon.
Ah, eu tenho deck ID e Pokémon ID, tá?
Então eu sei que esse ID, esse deck ID desse deck que pertence a esse user ID tem esse Pokémon dentro.
Um Pokémon pode estar em vários decks, mas apenas uma vez por deck. Isso.
Eh, e é um para N. Cada deck pode ter N Pokémons.
E aí a gente vai entender como pesquisa lá o Pokémon, que ele vai bater no get.
Exatamente.
Lá da API que você usou como tá.
Na verdade, eu não pus, mas eu pus uma navegação entre os cards para você escolher, tá? A busca, a gente pode, você quiser saber como a gente faria uma busca, deixa no comentário aqui. Quem sabe na continuação a gente não faz uma busca, um search.
Isso. Porque não tem método search lá na original.
Na original.
Aí a gente tem que fazer uma implementação aqui.
Aí depois a gente ia fazer a parada lá de blend e de sorteio. Você ganha o Pokémon. Isso, verdade, na evolução.
Beleza. Lá já minha B12 tá em dia. Minha memorinha já fez as atualizações no backend. Agora tá validando os builds e vai escrever o log.
Um problema que a gente tem aqui é que como eu tô usando ESKite para não ter que usar uma instância externa de banco de dados, quando a gente derruba a aplicação e sobe de novo, perde o banco, ele volta zerado, né?
Por isso que eu pedi para admin ficar hardcoded para não ter que ficar adicionando usuário toda vez.
Ah, entendi. E aí quando a gente testar, a gente vai ter os decks zerados novamente.
Vai ter os decks zerados novamente.
Lá buildou.
Eu vou parar aqui minhas instâncias.
Ah, eu acho que ele já criou os dash aqui, hein? Dashboard real mais diálogos lá.
Qual que é o escopo do seis?
Ah, tá. Não, ele vai ter interface de navegação e busca no catálogo. [ __ ] Aí aqui é o catálogo real e adicionar.
Ô, e se a gente mexer aí?
Hum.
Pode mexer aí.
Se a gente mexer aqui, eu tenho que rodar o a expansão de novo, né?
Tá.
Para ele detalhar, tá?
Para ficar mais assertivo.
Beleza.
Que era ali que a gente podia colocar o sorteio e o blend.
Então, sorteio blend a gente pode fazer uma sprint à parte, tá bom?
Beleza. Agora, cinco logs, beleza? Tá tudo documentado que foi feito. E aqui os checkpints para a validação humana.
Subir o back end, subir o front end.
Beleza? Log com admin. A de mim.
E vai ter um deck vazio.
E aí você vai poder criar dois decks.
Vamos ver.
Subiu aqui? Não subiu. Ah, ele tá buildando ainda. Pronto, subiu. Subiu, subiu.
Beleza.
Adminim. Adminim.
Seu deck está vazio.
Meus decks, mas criaram deck lendários.
Cristiano Ronaldo.
Então agora eu tenho aqui meu primeiro deck já vem por padrão lendários. Eu vou criar aqui mais um Pikachu.
Não, não faz sentido.
Não. Elétricos. Deck só de elétricos.
Beleza.
Ainda bem que eu tava aqui, hein.
Caraca, mano.
Então, o crude dos decks. Vamos ver.
Side bar. Clica no mais iniciais. Olha, ele mesmo surgiu aqui os lendários, ó.
Dashboard deve alternar automaticamente para recém- criado. Tá certo. Adicione Pokémon. Ah, eu posso adicionar pela PI já, ó.
Vamos ver.
Ah, mas aí eu tenho que autorizar. Não, não, não, não é. Vamos fazer bonitinho.
Fazer bonitinho. Ou eu posso rodar um um SQL, tá vendo, ó? Pra fazer ele ele capturar lá dentro. Beleza. Então tá funcionando.
Ah, vamos adicionar os Pokémon no deck, mano.
Não, mas aí eu tenho que rodar direto um SQL.
Ah, entendi. Entendi. Adicione cinco Pokémons, faça busca. Entendi.
Vamos rodar já. Próximo.
Remove um deck, ó. Pede confirmação e limpa todos os Pokémons.
Deixa eu ver.
Remover deck aqui.
Aíção irreverí.
É irreversível. Mal sabe ele que o nosso banco é efêmero.
É beleza. Removeu, fechou.
Estouro.
Beleza, Claudião tá nascendo.
Querido.
Claudião, querido.
Siga.
Tudo certo. Prossiga.
Siga. Meus bons.
Bora pra próxima. Eu quero testar que que é o seis agora.
O seis é
catálogo. Agora sim. É. Aí a gente vai poder tá botar os Pokémon, navegar entre os Pokémons e adicionar o deck. Agora a pergunta, como você fez em catálogo, ele vai listar todos os 150 Pokémons da primeira.
Eu pedi para ele fazer paginado, né?
Tá.
Então ele vai ter que implementar uma paginação aqui.
Parece que a primeira leva são 150 Pokémons.
Caraca, deixa eu ver. [ __ ] será que eu tô bom assim, mano? Se bem que o Berê acabou com a gente, né, mano? Uh, vocês estão ruinzão de Pokémon.
Ah, berê, deixa eu ver.
Quantos Pokémons são da primeira geração?
151 Pokémons.
Errou por um, hein?
É, vai do Bubalsur ao 1000.
É, o 1000 é o grande mito da parada, né?
1000 é 1000. É mew.
Ah, tá.
Na Pokédex.
Ó, ele tá implementando uma cash também que ele especificou lá na na expansão de contexto.
Esse é um ponto importante, pessoal.
Quando você roda a expansão de contexto, ele vai sugerir melhorias dentro daquela arquitetura que você colocou e cabe a você eh fazer essa revisão justamente por causa disso. Vou dar um exemplo aqui. Aqui o Pokémon não muda, então faz sentido ele implementar um cash, porque eu não vou ter a mudança desse registro no intervalo de tempo. Mas caso eu estivesse desenvolvendo, por exemplo, e lendo uma API de pedidos ou uma API que pode ser atualizada rapidamente, eu poderia ficar com o cash desatualizado e não consultando o dado quente na PI.
Então, se ele sugerisse um cash aqui, eu deveria ir lá na especificação e falar que aquele dado ele não ele ele é um um dado que se transforma muito rápido e eu não deveria eh caixar ele, entendeu? Por isso que é importante definir o contexto, expandir o contexto e revisar.
Eventualmente até depois de uma revisão, você pode até expandir novamente o contexto e revisar novamente.
Ele tá fazendo agora o link do catálogo.
Já fez a página e o catálogo.
E agora ele vai validar. Tá ficando mais rápido, hein? Nos build.
É porque o build é incremental, né? O primeiro sempre mais leva mais tempo.
E ele não errou, né, nenhuma build, só a primeira.
Primeiro errou.
Primeiro ele teve que refazer no dele.
Não lembro.
Pode ser que sim. Talvez ele faz uma adaptação ou outra na imagem do Docker, etc.
É, tá esquentar o motor, né?
Agora ele vai validar e escrever os logs. Eu separei aqui nomes de Pokémons pra gente montar o nosso deck, hein?
Bora lá.
É, é louco que a primeira geração dos Pokémon tinha um, tinha uns absurdos assim, né? O Abra, o Cadabra e o Alecazan.
A Lacazan.
A Lacazan.
É.
Pikachu, Raichu e tem o Pixu, né? Só que o Pichu vem na outra geração.
Sabe qual que os caras me chamava na escola?
Ó, Sprint 6 na caixa.
Os cara me chamava de Snorlax, mano.
Podia ser o bobo assalturo também.
Ah, mas o o Snorlock é bem mais O Snorlocks é tipo o gordão da X9, sabe?
Dos Pokémon. Você nem sabe quem é o gordão do X9, né?
Não.
Ah, [ __ ] Deveria, deveria, mano.
Bom, vamos lá testar sprint.
Eu podia zoar sua mina aqui, mas não vou zoar ela não, pô. Não tem nada a ver com com a história, não é? Que é para poder te ofender, né?
Aqueles caras que vai jogando conforme a Beleza. Seu deck está vazio.
Nossa, o Vulp era muito louco. Vai, nós vamos montar um deck. Isso. Adicione Pok. Ah, pera aí.
Tô rodando a versão antiga ainda.
É, caraca. Tem que Já ia falar mal do Claudião, mas o Claudião está certo. Se eu não gerar um build de novo,
gerando o build.
Na minha opinião, a primeira geração é os Pokémon mais da hora que tem.
Rodando, porque os caras não tinha muito o que inventar assim.
Pera aí. Nossa, Piduck, mano. Psuck é muito louco.
Clique em catálogo no side bar. Cadê?
Ah, tá. Ó, eu tava procurando aqui, não tava entendendo, mas ó, agora eu ten, eu loguei com uma admin. Aí eu tenho aqui embaixo gerenciar usuários e tenho aqui o catálogo. Quando eu clico em catálogo, ou aí já tá na ordem, ó. Bubasar, Evisar.
Venosur.
Venosur. Aí vem o Charmander, o Sharmilon e o Charizar.
Aí o CP.
Ah, ele já foi pro pros aquáticos aí, ó.
Skirol, War Turtle e o Blasto Toys Carter Peer, Metapod, Butterfree, Widow, Kakuna, Bedril. Aí tem uns que Ratatá, Ratatá é louco demais.
Ratatá é um rato.
É. Ah, não é? Não sei.
Caraca, é o que parece. Será, mano? Dá uma olhadinha direitinho, ó. Vamos ver quantos tem. Tem 68 Pokémon. 68 páginas com 8, 12, 16.
Então tem mais do que a primeira geração.
20 x 68.
Tem 1000 e poucos Pokémon, cara.
É, cara. Passou do coiso. Então, bota aí. É Snorlax.
Ó, ele botou a busca. Será que funciona?
Vamos lá. Snorl. Como é que será funcion?
S N O N O Aí, ó, já veio, ó. Sabe qual que é você?
Esse aqui é o que te chamavam.
É, eu vou falar qual que é você.
Coloca aí. G R A.
G R A.
Aí. Aí, ó. Você é o Gravler, [ __ ] Por que, velho?
Ah, meio marrudinho, pequenininho, com os bracinhos forte. [ __ ] que pariu.
Você que tá aí escutando esse episódio bacana e quer levar toda essa tecnologia, essas novidades pra sua empresa e não sabe como, chama o time da Vembers. A gente pode ajudar vocês com desenvolvimento de software, com arquitetura de soluções, a entender os problemas que vocês estão vivendo e sair do outro lado com uma solução bem bacana. E se você tá escutando o podcast para aprender coisas novas, faz o seguinte, manda um e-mail pra gente no peoplecare@vemers.
E você pode fazer parte também do nosso grupo de talentos. Valeu.
Agora o time do Relações Públicas vai gostar mais de mim.
Ó, tem um ponto aqui que eu vou provocar que não estava no no no script. Vocês podem ver aqui, ó, que a lupa da busca tá desalinhada e o deck de destino também tá desalinhado.
Mas aí não é resolução da sua tela.
Eu acho que não. Ó, aí o Claudião fala: "Na minha máquina funciona".
Ó lá. Porque aqui ele ele tá respondado.
Então eu vou voltar lá no cláudio e vou falar que tá desalinhado.
E aí você acha que ele vai usar do do artifício de print screen para ver?
Eu pode eu posso dar um print screen, salvar e mandar ele ver.
Não, mas como ele vai ver o erro certo?
Eu vou descrever.
Entendeu? Entendi.
Então, mas o ícone de busca na barra de busca no catálogo, o ícone de lupa está desalinhado da vertical do textárea.
Deixa ele se virar para entender. Não sei se ele usou textiária.
Ele usou input ali, né?
O select do meu deck.
Select do deck também está desalinhado com a barra vertical de busca.
Vamos ver o que ele fala.
Ó lá, Musing.
Testei aqui na minha máquina tá funcionando.
O Claudião é top, né, mano?
Para mim hoje é a é o LLM melhor para trabalhar com código. Gemini bem próximo atrás, sabe?
Antiraft usa o que mesmo? Já te perguntei isso, mas não custa nada.
Você pode usar, ele vem por padrão com com integração com Gemini, mas você também pode configurar para usar qualquer LLM lá dentro.
Bug visual de alinhamento. O problema é que a coluna da direita ela já achou o problema. Vamos ver se ele achou mesmo.
Agora você acha que o Lovable ele é uma ferramenta não préparada com specd driven?
Hum. Não, não. Ele é ele é feito na base do vibe designbe coding. Sente vai.
Não, eu sei, mas por trás ele tá tentando organizar um uma parada igual a gente fez.
Provavelmente ele tem memória, ele tem vai registrando algumas coisas lá para ele não perder não, porque quando ele dá os planos, ele traz uns MDS para você.
Pode ser que ele ele registre isso internamente, né? Que aí você não tem controle do que ele tá registrando, não. E os tokens já era. Você não pega de volta se ele fez alguma coisa.
Exato. Vou vou subir de novo o front end e ver se ele ajustou o que nós pedimos.
Ah, tá buildando ainda.
Build, build, build, build. Rodando.
OK, vamos lá.
Arrumou. Olha.
Caraca, mano.
Perfeitamente alinhado agora.
Monstro, monstro.
E cadê? Vamos fazer um deck, mano.
Vamos lá nos elétricos. Fala três elétricos aí, Pikachu.
Pera aí.
Adicionar. Beleza.
Pikachu Richu.
Pikachu Rockstar.
Richu. Como é que escreve?
Richu. É rau.
R.
Aê.
É um Pikachu dançarin. É isso.
É.
Que mais? E pichu. Põe pichu. Pichu.
Aí, ó. Que bonitinho.
Uma gracinha, né?
Aí eu posso vir aqui no meu. Opa. Quando eu clico aqui, ele não volta pro deck.
Ah, temos mais um probleminha aqui. Tá vendo, ó?
É, se tiver a busca feita, ele não filtra.
Ó, deixa eu tirar aqui. Tirar busca.
Isso.
Eu entrei no catálogo.
É certo.
Certo.
Mas agora eu quero ver meu deck.
Não consigo ver meu deck.
Tá vendo?
Não, mas eu não sei se ele já tinha feito isso. Tá no tá no sprint set, hein? Acessar o deck da presente.
Ah, deixa eu ver.
Ah, a gente fez o seis, né?
É.
Exibir fij. Não, aqui já é o de detalhes.
Oxe.
Vamos lá, Claudião. Claudião. Vamos lá.
Não consigo alternar. Verifiquem entre os meus decks.
Quando estou no catálogo, não consigo visualizar o deck.
Não consegue. Não consigo.
Atrás.
Eu sempre lembro daquele meme do menininho do lateral.
Não consegue, não consegue, não consegue, né? Não consegue, não consegue não. Não consigo.
Não é menininho. É o É o tiozão da porta da esperança, né?
Não consegue, né? Não, não consigo.
Do É muito bom isso, mano.
Do Guga não consegue, né? Não consigo.
Nossa. Ô Berê, põe isso. É muito bom, mano. Muito bom. Isso não consegue, né?
Não consigo.
Moisés não consegue, né?
Você não consegue, né? Não consigo.
Ó lá, ó. Bom ponto. No catálogo, ao clicar no deck no side bar, só muda o estado local do filtro de destino do catálogo. Não leva o usuário ao dashboard. Vou fazer um side bar. Quando o usuário não está em barra, navegar pro dashboard com deck selecionado via query string.
Agora sim.
Agora aqui fica uma dúvida para você que tá acompanhando e tomando contato com o SPC Driven agora. Em nenhum momento eu fui explícito de como isso deveria funcionar.
Então veja que isso ficou vago.
Uhum.
Ele poderia na expansão de contexto ter feito isso, mas não fez. Por isso que é importante a revisão humana. Eu deveria ter, da mesma forma que eu fiz ali o business rules, architecture, etc., eu deveria ter um mais completo de user experience para poder dizer: "Olha, o cara vai navegar por aqui, por aqui ele vai navegar disso desse jeito." Botões assim, botões assados.
Exato. Aí eu não deixo isso eh de uma forma aberta para ele tomar a conclusão que ele queria, né? Então vou gerar o build novamente.
Quando tá atualizando ali, não adianta a gente tentar navegar, não, porque tá gerando build para subir a aplicação, para subir de novo no local host. Isso.
Beleza. Agora eu tenho aqui embaixo gerenciar usuários catálogo, que me leva o catálogo. E quando eu clico aqui, essa aqui ainda é ele tá com tá com um moque ainda.
Mas aí aqui eu já consigo ver os meus Pokémons do deck, né? Meu primeiro deck tá vazio. Ele volta para esse aqui.
E aí, ó, já tem até os detalhes. Parece que ele já até implementou, hein? Não, não tá mocado ainda. 50 50.
Ah, é verdade.
Só o Pikachu que ele anda. É o Pikachu.
Ele anda por acaso. Só ele colocou mais, ó. Tá vendo?
Ah, entendi.
Que ele ia pagar pau do Pikachu.
Beleza.
Uso voltar ali já ver detalhes. Entra no Pikachu, volta pro deck.
Não, volta aqui, amor. Por isso também, se tivesse feito o user experience, vai lá ver detalhes.
Sim.
Volta por aqui, ó.
Voltar deck. É, de certo também.
Só que ele volta pro primeiro deck, não, pro deck que tava aqui, ó.
É, a gente também podia falar para ele usar o JavaScript 2. Como que era? Back history menos um.
History menos um. Isso. Caraca.
Para ele voltar sempre pra última tela que ele tava. Caraca, agora você desenterrou, hein, mano.
O correto aqui agora seria eu falar para ele que quando eu clicar no deck lá no voltar ao deck, ele voltar pro deck adicional. Mas como ele vai refazer essa parte? Vamos ver como que ele que ele vai fazer essa implementação.
Em qual? No próximo sprint.
Não entendi. É, tá.
Ele vai refazer essa tela aqui agora.
Certo.
Ele vai fazer do detalhe do Pokémon.
Isso.
Tá, tá, tá.
E aí talvez se voltar ao deck ele acerte para voltar pro deck original e não pro primeiro deck.
Isso.
Prossiga.
Nossa, o tempo voou, mano. Já estamos uma hora já.
É, passa rápido, cara.
Deixa eu ver. Não, bota lá no set para ver o que que ele vai fazer mesmo.
Set.
Exibir a ficha técnica com todas as informações ricas do Poki, fachada no back end user interface detalhada com estatísticas, imagens em alta resolução.
Então a gente vai ter o detalhamento completo. Isso.
HP, ataque, defesa, tipos, habilidades.
Aqui tem um ponto interessante de arquitetura que é o seguinte, eh, não é o mesmo método que eu pego a foto e pego os atributos. São, é mais de uma chamada de API, hum, para pegar todos esses dados do Pokémon.
Então, o que que eu colo que que eu orientei ele? Fazer um facade. Então, o back end vai chamar o back o o o back o o front end vai chamar o back end uma vez só. O backend vai chamar a API quantas vezes for necessário, vai consolidar isso no payload único e vai mandar pro front de uma vez só. Então não sai do browser, não vão sair várias requisições pra API do Então a tela não vai populando também, não. Só vem populando de uma vez só.
Isso é uma prática de arquitetura interessante porque você não precisa revelar qual é a sua regra de negócio na PI. É para isso que serve um BFF. Então, BFF ele serve todas as informações que eu preciso para uma tela do meu front end e quais APIs que eu estou chamando lá por trás, etc.
Já fez o log já? Vai lá no log.
Já fiz o log já.
Tá ali. Tá ali.
Olha aí, rapidinho, hein.
Vamos lá. Log do set.
Checkpoint.
Boa parte da sprint foi antecipada. Pega lá o caminho.
Boa parte do escopo dessa stream foi antecipada pela sprint 6. A Sprint 7 complementa com a troca do MOC no front end.
Uhum.
Então não teve nenhuma mudança no back.
Uhum.
Certo.
Eh, deixou o dialogue de enviar um amigo. Nã validado.
Aí ele tá pedindo aí pra gente botar o Pikachu, mano.
Vamos lá. Eu vou girar o build de novo e testar o que ele fez.
Se ele fosse quinta séria, né, mano?
Se você for quinta série com ele, ele vai ser quinta série com você.
falar bota o Pikachu no seu deck.
Ai ai.
Beleza, build refeito.
Tá aqui o meu deck.
Mas não vai dar o F5, mano.
Não precisa não. Esse já era. Volta, ó. O Pikachu tá certo.
E o Aí vai.
Aí, ó.
Ó, ó. altura, peso.
Vê o Snorlock quanto ele tem de peso.
Põe ele no seu primeiro deck.
Snorlarks vai adicionar.
Beleza.
Ó. E Claudião.
E Claudião.
Errou. Errou. Errou.
Comenta aqui. Você tá torcendo pro humano ou pra máquina?
Há um bug.
Não consigo acessar o primeiro deck padrão após adicionar um Pokémon.
Thinking. Hum. Hum. Verifica. Hum.
Hum.
Elementar, meu caro.
Mas volta lá na tela, volta lá.
Vai no Pichu aí. Pichu.
Esse último aí é o Pichu.
Volta. Eu percebi um bug. O nome do Pokémon no deck não tá certo.
Por que que tá Pokémon 172?
Então, tá vendo? Ele é o Pichu e esse daí é o Ah, tá vendo? O Pikachu tá certo.
E não tem a categoria. Ah, tem aqui normal.
Aí, tá vendo, ó? Ih, mano, já. [ __ ] que merda.
Pokémon 26.
A gente já passa isso para ele também.
[ __ ] mais do que nunca o QA ficou importante na jogada agora.
Exatamente.
Se você quer uma sessão só sobre QA dentro do Spect Driving Design, comenta aqui que aí e tem duas coisas que eu queria fazer aqui também, Gu, além do QA, gerar documentação.
Sim.
Para poder ter documentação da arquitetura para poder arquivar. Ninguém lê, né?
Isso. Exatamente. Mas agora tem quem lê a própria IA.
Tudo bem que aqui a gente tem um monte de documentação para Iar, né?
Mas para poder, por exemplo, colocar numa ferramenta de arquitetura corporativa, gerar eh diagrama de classe de banco de dados, por exemplo, pode ser interessante ter um uma documentação de mais alto nível, né, cara? Agora, sobre curiosidade, antigamente a gente orçava um negócio por ponto de função.
Dá pra gente fazer uma arquitetura reversa e ver quantos pontos de função realmente existiriam para desenvolver isso?
Boa pergunta, mas eu não sei sinceramente se a forma que a gente precificava antes serão válidas daqui em diante, porque, mano, o que que as softwares House estão fazendo nesse exato momento, né, cara? a maior maior parte tá implementando ou utilizando de uma forma talvez não tão madura, mas esse tipo de desenvolvimento será sim você acha que Mas tipo o que é muito comum hoje o que é mais comum hoje os earn adopters da vida assim né ou não ou já passou dos earn adopters cara alguns já estão mais avançados n o que é mais normal hoje é ele ele usar como a a gente fez que eu tava te mostrando comigravity, por exemplo, que o cara usa como um assistente pro código. Então ele tem o olhando, ele olha o código ali e aí ele tem uma dúvida ou ele quer uma uma análise rápida, ele vai lá no no assistente, como a gente fez no antigravity, o cara pode usar, por exemplo, o GitHub Copilot, etc, para fazer isso. Agora a Vem, sua patrocinadora e e empresa do Valdir, que esteve aqui no primeiro vídeo que a gente recomendou logo no comecinho.
Eles estão bem mais avançados, eles estão fazendo isso para aplicações novas e também estão fazendo o reverso. Você pegar um legado, foi o que isso que a gente se quiser entender melhor sobre isso, vê lá o episódio que eu gravei com com o Valdir, vai aparecer aí em cima do do Isso. você eram, ele pegou um legado que não tinha nenhuma documentação, ele teria que analisar todo aquele código manualmente e ele aplicou a IA para gerar documentação de como funcionava aquela aplicação. Então, animal, animal.
E aí, com base nisso ele conseguiu e com a análise dele e também a ajuda da IA orsal que precisava fazer para evoluir aquela aplicação que é legada, que não foi gerada por ele.
Olha que doideira, né? Não, sem citar nomes pra gente preservar, mas você lembra que a Sulamérica teve que comprar um sistema citar nomes porque o cara perdeu fonte, lembra disso?
Lembro, lembro.
E aí, tipo, ué, vamos comprar, né?
Perdeu o fonte, se o cara morrer, nó fodeu, né?
Que doideira, mano.
Vamos lá. Dessa vez eu vou fechar, dar um refresh testa de novo.
Eu vou resetar o backend também. Você tá o front
feito.
Vamos atualizar, cara. Estranho. Doc, ele manteve o banco de dados. Bom, beleza, ó. E aqui ele arrumou o nome.
É, e você nem tinha sinalizado, mas o erro do voltar do coiso continua. É.
Ah, quando eu clico aqui no, ó, voltar ao deck, aí ele vem aqui.
Vamos ver o peso do Snorlax.
460 kg. Os caras acertaram mesmo.
Tá muito longe não, ó. Mas ele não atendeu outra coisa que a gente pediu, né? Ó, imunidade.
Tic fat. Que que é tic?
Comer rápido. Não. Ah, tic tic tic e glutone.
É, não, ele é que isso aqui vem da API, né? Então ele não sabe se tá em português ou inglês.
Não, mas a gente mesmo mesmo se viesse a gente falou para traduzir. É, mas aí ele teria que fazer isso em tempo de execução, né? Sen mais difícil. Mas beleza. Bom, tá aqui.
Ah, aí agora ele funciona.
Acho que resolveu, mano. Aqui, ó.
Voltar ao deck.
Volta pro deck.
Não, mas ele tá voltando errado. Você tava no Pikachu e ele voltou no Snorlax.
Vai lá.
É só esse se voltar ao deck, sacou?
Vamos pedir a correção. Não, já sei, eu não vou pedir essa correção agora.
Vamos seguir e depois eu quero ver se se o Geminar vai pegar no code review.
Tem code review no planejador nove, sprint nove, polimento.
É, não, ele vai fazer o oito e o nove agora. Depois a gente volta pro Gemini, fala que o programador terminou e ele tem que fazer o code review.
e tava nas indicações do do da arquitetura fazer isso, porque ele vai ver se o que foi desenvolvido tá de acordo com o que foi especificado.
Mas mostra lá em qual MD você pôs isso do projeto, só pra galera revisar que foi do primeiro episódio aqui. Vamos lá.
Project.mmd.
Cadê?
Aqui, ó, no final do desenvolvimento, o agente planejador iria realizar um code review adversarial para garantir a qualidade do código, além da documentação especificadas. Os problemas encontrados devem ser documentados, mas não alterados. Então, ele vai encontrar, mas não vai modificar o código.
E ele vai fazer qual o arquivo para sinalizar essas melecas aqui, ó. Techdevits.m.
Ah, os débitos técnicos do code review.
Isso. Isso. E o codeview.md MD também, mas o que que ele vai documentar no Code Review, se deu certo ou não e se se ele achou problema, ele vai colocar como débito técnico. É isso.
Se for um débito técnico que não é um problema, pode que precisa ser corrigido agora, é o code review, ele gera issos primeiro, tá? Aí e vai tá nele, vai tá aqui no codereview. MD. Se eu falar, não, isso aqui a gente pode conviver por enquanto e depois ele pode voltar para uma sprint como débito técnico. Aí ele sai da sho de code review e vai pro débito técnico.
Tá bom. Tá bom. Entendeu?
Então agora ele tá fazendo o gift, que é a possibilidade de eu poder pegar um Pokémon que tá no meu deck e enviar para um amigo.
Beleza?
Interceptar pendentes no dashboard.
Envio real na Pokémon ID. Validar builds. Sprint 8. Muito bem.
Como trabalho bonito, né, velho?
Trabalho é bonito demais esse robô.
interceptar pendentes no dashboard. Tá, tá processando aqui, gente. Vocês estão vendo aqui?
Essa é a tela de coisas que você não aceitou, né? Ele vai mostrar isso. Eh, você que tá nos ouvindo por áudio, quando tem um espacinho de silêncio assim, é porque a gente tá olhando aqui pro Claudião, gerando as suas ações.
Então, recomendo, inclusive para você ter o contexto maior e absorver melhor o conteúdo.
Eh, assista isso em vídeo, porque a gente tá com a tela compartilhada aqui.
Tá fechando já, hein? Tá quase validando o build.
Validando o build. Então ele vai gerar o build para ver se não quebrou nada.
Essa parte vai ser legal quando a gente tiver falando dos testes, porque ele vai gerar o build e vai rodar os casos de teste com o build rodando. Então ele gera o build e aí ele roda os casos de teste para saber se aqueles testes estão passando, se não quebrou nada no teste regressivo.
Então de novo, se você quer mais esse episódio, comenta aqui que a gente continua. 46 classes. Caraca, velho.
Builds verdes.
Front end. OK.
Agora, eh, por exemplo, lá na na onde a gente trabalhou, tinha os carinhas que manjavam programar dentro do seus force.
Uhum. aquilo acaba a partir do momento que você pode, como regra de negócio, colocar o que você quer e pedir pro o lá, né?
Sim.
Rodar lá dentro, né?
Sim. Não sei se o seu esforço tá dessa forma ainda, né?
Eh, aqui para até para ficar bem claro, a gente tá usando dois LLMs sem framework nenhum, sem sem nenhum tipo de plugin, só utilizando a técnica de spec Driving Design para gerar uma aplicação stand alone, como se eu tivesse codado ela depois, só que eu usei ela para gerar o código. Então, eu não tenho dependência, não tenho loquin de nenhuma plataforma. Eu vou posso pegar esse doc que eu subir aqui, rodar na WS, rodar no GCP, rodar na minha máquina e se eu tiver um programador experiente depois eu comito isso aqui num git na mão do cara para ele seguir a vida com a aplicação. Então não tem, eu não dependo da IA depois do código gerado. Isso é importante ressaltar porque, por exemplo, você não consegue fazer isso com o novo, por exemplo.
Esquece.
Então vamos gerar novamente os builds.
Eu fiz de propósito aqui duas tecnologias bem diferentes que eu fiz um o back end em Java com Spring e o front end com next JS T, né? Então eles se comunicam perfeitamente através de um protocolo benefinido de APIs, etc.
Então foi foram escolhas para a gente ilustrar bem.
Beleza, aplicação rodando. Eu vou vir aqui ver detalhes. Antes eu vou vir aqui no gerenciar usuário. A tá aqui já. Então eu venho aqui no Elétricos Pikachu, enviar para um amigo. Escolha um amigo.
Ash.
O Ash vai pro Ah, ele não. O o vai sair da onde?
Isso aí vai sair do elétricos, né?
É, mas que ele deveria saber já, né?
Tem que saber, né?
Põe enviar. Beleza, já era. Perdeu. Perdeu.
Perdeu. Que a gente colocou essa regra.
Uma vez dado o Pokémon, perdeu.
Exatamente. Agora eu vou sair e vou entrar como Ash.
Não era três quatro, né?
Ai meu Deus.
E rapaz.
1 2 6 4.
Ah, pera aí.
Hum.
Ele tá ele não tá dando erro.
Ah, agora foi.
Ó lá, recebeu um presente. Pikachu. O Pikachu foi o Pichu que nós mandamos.
Foi o Pichu.
Foi.
Eu tô espertão, mano.
Opa, então tem não, não. Pera aí. Pikachu.
Ele só tem o Pikachu. Volta lá no seu.
Eu acho que foi o Pichu. Nós clicamos aqui na pontinha.
Qual que foi, Gu?
A o operador tá dormindo, mano. Você é louco. Perdemos o operador, mano.
Perdemos o operador. Ixi.
Ah, ele tá, ó, cash.
É, entendeu? Ele tá misturando os decks, ó.
É.
Aí eu vou vir aqui, ó.
Mas se você bu agora vai perder.
Revise, né, a política de cashes.
Não, antes, revise a política de cashes.
Eh, os decks estão se misturando entre os usuários.
Entre os usuários.
Mas dá um sair. Dá um sair de novo lá só por desencargo.
Não, se eu sair, provavelmente ele vai tirar o cash.
Não, você fez isso e ele manteve que você teve que logar de novo. Mas entra com a de mim.
Vixe, agora a merda agarrou, hein? Agora agarrou.
De mim, de mim. Aí. Tá vendo o admin?
Ele tem o deck elétricos. Ah, tá aqui, ó. Agora ele veio, então.
E foi o Pikachu mesmo que a gente mandou.
Então manda o Snorlock para ele.
Não, o Snorlex.
Beleza. O deck ficou vazio. Vou sair.
Acessar aqui de novo. As 1 2 3.
Ó lá, veio Snornx. Agora tá certinho.
Ah, agora tá certinho.
Meu primeiro deck transferiu.
Top, hein?
E ele veio com correto. Deixa eu entrar com adminim de novo e ver se os decks vieram corretos. Não, ó lá, tá vendo? Ele vê manteve o deck anterior.
É. E depois vamos confundir ele. Pega de novo o Snorks para você pela pesquisa, joga no seu deck e tenta dar de novo para ele o Snorx.
Ix, isso, ele não definiu isso, mas vamos ver.
Vamos ver se ele pegou aqui o erro, ó.
Problema casco de cash. O query client sobrevive entre os logins. Então os dados do barra dex pend etc do usuário anterior ficam cacheados e aparecem brevemente no próximo que podem persistir o stil time. Vou limpar o cash quando você logar e quando sair. Beleza?
Então isso deve resolver. E aí você tem que buildar de novo. Buildar de novo.
Muito legal, mano.
Tem gravação aqui em seguida, Guga?
Podemos ficar tranquilo, né? Deixa eu confirmar aqui.
É, não tem não. Só aqui à noite, bebé.
Tá. Ah, ele já fica aqui direto.
Build do front foi do back foi. Agora rodando o build do front end.
E aí nós vamos rodar.
Se ele resolver de fato esse problema do cash, a gente vai rodar o último para ver se ele vai fazer alguma algum polimento.
E aí vamos voltar para o code review.
O polimento, você acha que ele vai trazer que tipo de polimento?
Não sei, por isso que eu deixei aberto.
Ah, tá.
Entendeu?
Tá.
Sair. Beleza.
Vou logar como admin.
Outra coisa que eu te esqueci de te perguntar no primeiro episódio, se a gente induzisse ele a delirar, ele deliraria na na expansão?
Se eu não for claro e eu colocar umas coisas sem sentido, ele vai dar resultado sem sentido, né?
Não, mas se a gente induzir ele a delirar, tipo assim, aqui você tira do seu rabo as não, ele vai ele vai fazer sugestões.
É isso que dentro do contexto.
Dentro do contexto. Claro. Te contei que eu comecei a fazer uns vídeos de inovação de inventores brasileiros, né? Aí tô lá com GPT, peguei o cara que inventou a Bina brasileiro, chuveiro elétrico brasileiro.
Aí pá, mano, ele começou me dar outros, tipo, teste do pezinho foi a doutora tal e a doutora tal. E aí eu p tava quente aqui, ó, pá, pá, gravando, gravando, gravando. Quando chegou pra edição, os cara me falou: "Mano, você tá louco? Nem conheço essas doutoras aqui. Nós estamos procurando a internet, pá." Eu falei: "Meu Deus, mano, ele foi ventando." Não, ele delirou e eu e eu endossei, mano.
Tá vendo? Por isso, revisem, crianças.
Eusei, mano. Falei: "Nossa, que animal, mano? O teste do pezinho é uma criação brasileira, tá ligado? Nada a ver.
Bom, eh, funcionando com o admin. Agora vou entrar com ash.
Vamos ver se ele atualiza os decks.
Perfeito, agora tá deck correto.
Show.
Beleza, funcionou.
Vamos fazer a brincadeirinha do Snorx.
Pega de novo ele no catálogo, só por desencargo.
Pega o Snorlockx no catálogo ou se ele for inteligente não te dá mais porque o Snolock já foi seu.
Não, mas eu perdi, né? Então agora eu posso colocar ele de novo.
Então vai.
Beleza.
Aqui ele ainda tem esse dogzinho. Vamos ver se ele vai pegar nas issos, né?
Uhum.
Aí eu tenho que vir aqui. Tá aqui, ó, meu Snornx. Beleza. Aí eu vou mandar ele de ele de novo repetido. As o porque o Ash já tem, entendeu? Isso e Ash 1 2 3.
A gente não especificou ou especificou que não podia ter dois Pokémons iguais no mesmo deck?
Não, só no presentear, né? Se deu, deu.
Ah, tá. Então, provavelmente.
Mas vamos ver o que que vai acontecer.
Não é possível aceitar o presente porque ele já tem aí. Chupa.
[ __ ] calou minha boca, hein, mano?
Ó.
Calou minha boca.
Toma essa, hein.
Beleza. Então agora é o polimento. Certo.
Prossiga para Sprint nove.
Vamos ver o que que ele vai fazer de polimento.
Quanto tempo temos, Guga?
1:17.
Mais uns minutos a gente faz a revisão.
Não quero que esse fique tão grande quanto o outro.
Tá certo?
Lá, mano. Musing é meditando, né? Meditando.
Que doideira, mano. Ele escreve ali musing.
É meditando.
É, não sabia. Ó lá, agora ele tá implementando um exceptionler global.
Ele tá fazendo um cascade cleanup nos gifts. Quando você remove o usuário, ele vai remover algum gift que tenha presente, que tenha pendente.
Ele vai remover o mock data porque não tá sendo usado, não tem mais nenhum MOC.
No front end ele vai usar o componente Soner para substituir os alertas que nem aquele lá que deu o JavaScript, né? Vai ser um toast agora bonitinho.
Limpar os moques não for usados e o fadidinho entre as páginas. Vai ficar bonitinho.
Vai criar o manual do usuário, ó. Criar o manual do usuário e fazer os builds e a sprint no.
Da hora demais, hein, mano.
Podia ser o primeiro curso da escola de ninja, né?
O o o grande problema disso daqui, cara, e é uma das discussões que a gente sempre fala aqui no PPT, é que para você usar todo o potencial que que a IAT dá, que a gente tá usando aqui, a gente, enfim, é que se a gente não fosse explicando tudo o que a gente fez, em menos de 1 hora, 40 minutos, a gente subiria uma aplicação como essa.
Mas por quê? Porque a gente tem background e tem sim como escrever um bom documento de especificação.
Sim.
E por exemplo, deu um erro ali, a gente já bate o word e sabe o que é cash.
Então você já vai e fala: "Revisa o cash".
Resolveu.
Mas que que você acha da gente fazer ao contrário? A gente faz um negócio desse que dentro do seu conhecimento e avanço é possível fazer em minutos. Mas aí a gente faz igual a Impact fazia antigamente, né? Antes de você sair programando em Aspnet, você tem que fazer lógica de programação, na n, entendeu?
A gente criou um módulo só de MD, entendeu?
Principal discussão hoje é como que o se a gente vai utilizar muitos agentes para criar código, como que o Dev Júnior vai adquirir bagagem que hoje os Devs siors tm para usar bem a IA, porque eles têm essa bagagem, porque não usaram a IA antes, entendeu?
Não, então por isso que eu tô te dizendo, de repente a gente tem que voltar nos primórdios do curso, entendeu?
Sim. Vai ter que capacitar essa galera.
Isso. Para poder fazer um um MD, você tem que aprender os conceitos básicos de arquitetura.
Exatamente.
Entendeu? É o É o você tem que letrar o cara para depois botar nesse caminho aqui. Eu acho que tem uns oito letramentos aqui.
Exatamente.
Teve vários momentos aqui que eu fiquei calado porque eu não tinha conhecimento, porque eu eu parei, né, no tempo.
Uhum.
Ó, tô fazendo o manual e estamos finalizando a nossa aplicação.
Temos um bugzinho conhecido que eu quero testar se o Gemini vai pegar, senão a gente vai usar ele para depois fazer os casos de teste.
Fazer os casos de testes.
Que que ele vai pôr no manual, hein?
Vamos descobrir agora.
Redm. Vamos ver. Ele criou o readm aqui.
Esse aqui é, ó.
Ah, ele colocou aqui onde tá os logs, onde estão os dashes, documentação da PI, da hora.
Estrutura do repositório, tudo meio arrumadinho. Beleza.
Agora tá. Builds fecharam.
Agora ele tá terminando o log.
Tô curioso para ver o tostezinho que aí foi sugestão dele mesmo, né?
Uhum.
E você vai você vai buildar isso aí na internet?
Eu vou deixar público no repositório no GitHub.
E aí, quem quiser pode testar, fazer os builds.
Beleza.
Olha, e ainda te dá o resumo geral, hein?
débitos técnicos remanescentes. Menu mobile. Tradução de habilidade de habilidades. Ah, viu que a gente tinha falado, ele pegou, é que não tava traduzido.
SSR SSR de detalhes. Migração pro Flyway. Estão documentados no sprint no de logs como próximos passos. Sistema pronto para apresentação no podcast.
Mano, vamos não, né? Vamos encerrar. Tá bom. Eu ia falar para ele gerar esse débito técnico no sprint 10 para nós fechar com chave de ouro.
Não, a gente vai fazer o seguinte, a gente vai rodar, vamos testar o toast lá que ele fez e o polimento. E aí vamos passar rapidamente pro Gemini fazer a revisão.
Ah, entendi. Tá bom, tá bom. E aí a gente fecha com episódio de 1 hora30.
Isso.
Beleza. Build do front end.
Enquanto a gente testa, eu já vou vir aqui no Gemini. que o código já tá feito, né?
Gemini.
Gemini.
Beleza. Aí eu começo sempre com isso.
Recupere memória e contexto para esse vertório.
Se eu tivesse pela web, eu tenho que começar dizendo para ele: "Recupere memória contexto desse chat".
Cara, pela web você só tem chat. Você não tem como processar arquivo, então é inviável você fazer um trabalho desse via web.
Não tô dizendo como prompteiro lá. Se toda vez que eu voltar num chate, não, porque cada chat já tem a sua própria memória, né?
Ele guarda tudo aquilo ali, ele ele entende isso. Ó lá. Então ele diz que já está pronto. Á, já viu que já tá na fase de polimento. Aí eu vou falar para ele, você é o agente planejador.
Faça a revisão de código adversarial.
Você fez mestrado?
Eu fiz mestrado.
É, você pode dar aula então, né? Posso.
Você não vai ficar não vai me zoar que eu fiz astrologia.
Não, de astrologia não. Não. Agora é a hora de te enaltecer, não te desmerecer.
Lá. Vamos ver. Agora ele continua com esse problema, com esse esses nornax aqui que ele recebeu.
E eu vou clicar no aceitar.
Ninguém quer o gordinho.
Ó lá. Aí ele tzinho aqui.
Beleza.
Beleza. Mas agora você recusou. Então no próximo login não é mais para vir, né?
Mais aparecerquanto isso.
Presente recusado.
Lá relatório.
Identifiquei achatos críticos na lógica de negócio e segurança.
Corrido. Ó lá, tem problema de race condition no gift server.
Temos aqui segurança de dados e sessão, gravidade alta, integridade performance média, frontend X.
Aqui, ó, ele tem, ah, não sei se é isso que ele pegou, mas vamos lá.
Aprofunde a análise e documente tudo que encontrar e propostas de solução.
E ele vai documentar onde? Nos débitos técnicos.
Lá no Ah, isso aqui ele já botou nos débitos técnicos. Abre lá para mim ver.
Deixa eu ver se ele já colocou.
Ah, deixa eu ver se ele é ligeiro. É, vamos ver.
Cadê? Cadê? Não, não criou ainda.
Não temos ainda. Technical debits.
Vai criar agora.
Será?
Uhum.
Ah, ele ele ele mudou, ó. Ele fez o audit report, mas não deveria.
É, então tá vendo que ele criou uma pasta a mais documentation. Cadê?
Cadê?
Tirou da cabecinha dele.
Deve ser. Ele tá perguntando, meu amor.
Não. Use os documentos especificados, conforme project MD, né?
Project.
Pô, um uma aula de project de MD é legal, cara. Como escrever um project?
Ó lá, agora ele tá colocando, ó.
Ah, ele fez o code review débito e agora que ele colocou os logs dove.
Beleza? Então agora a gente tem aqui code review. MD, ó, tem a gravidade, a descrição e o impacto de cada um deles.
Da hora. Agora aqui o que que a gente deveria fazer? Ó, aqui tem aqui o tech debits também, ó.
São três débitos técnicos que nós já temos e uma série de issos aqui para resolver.
Qual seria o próximo passo? E aí eu quero que você comente aqui porque a gente faz um adendo na parte de testes.
Eu deveria voltar agora no cloud, pedir para ele olhar o code review e o o Tech Debits e fazer um sprint 10 de correções e planejar um sprint 10. Na na verdade eu posso fazer o o Gemini, planejar um sprint 10 de correções e pedir para ele continuar. Vamos, vamos fazer agora, vamos. Gostei.
Planeje um sprint 10. para que o agente É bom esse podcast, né, mano?
Sabia que você tava nesse nível assim.
Espero que o agente programador depois de 240 efetuar as correções.
Ah.
Conforme o project apresenta o plano para sua validação antes de gerar os arquivos de tesque. Tá vendo?
Entregáveis propostos.
Muito da hora, velho.
Cara, vai mudar completamente o jeito de ensinar, né?
Sim.
Tipo, se um júnior começar com você hoje de shadow, tá ligado?
Mudou completamente, mano. Você vai pegar 20 anos da sua carreira e vai trazer pro contexto que você soube resumir aqui, né?
Sim.
Agora aqui, ó.
Agora a pergunta, o Júnior fica séor rápido? Agora não sei.
Se ele for safo, eu se ele se ele tiver vontade e e não querer que a IA faça tudo para ele, sim.
Se ele depender da IA, ele vai demorar mais tempo para ser snior.
Ser, porque aí vai sobrar só a soft skills, né, para ser senior, tipo lidar com pressão, dificuldade, etc., que acontece no nos projetos.
Você ainda precisa saber, você ainda tem que ser engen engenheiro de software. O cara que não tem engenharia de software não senta e fez o que a gente fez aqui com engenharia, sem engenharia de software.
Ah, sem engenharia, entendeu? O cara tem que sentar e definir os aspectos da aplicação. A engenharia é isso.
Então, mas vamos lá.
O entenda assim, ó. O engenheiro ainda é necessário. Talvez você não precisa dos pedreiros mais. Os robôs constróem, mas o engenheiro que vai projetar a construção, ele ainda é necessário?
Não, ele é necessário e ainda pode tomar uns puxão de orelha da IA.
Sim, porque ele pode porque ainda é humano e errar, né? Exatamente. Ele pode usar a IA como auxiliador, mas ele ainda é necessário para acelerador. É.
Então aqui ele já definiu os tesques, ó, do que tem que ser resolvido.
Muito [ __ ] mano.
E já deixou o log aqui pronto pro cara começar. Ó Deixa eu ver. Sprint 10 definido para ser chave da revisão adversarial. Foco segurança, performance n mais 1 e o X mobile. Estratégia de denormalização escolhida para API de gifts para garantir latência zero. Cara, deixa ele executar esse 10 aí. Aí a gente encerra, você faz a revisão e depois nós vamos pr as casas de uso, né, que é o próximo episódio.
Isso, mano. Era legal você trazer um cara bom de casa de uso, hein?
para ele tentar pegar a processo.
Você conhece uns caras bom de casa de uso?
Conheço.
Casa de teste, perdão.
Conheço.
É, seria legal, né, o cara pegar o contexto, ler os MDS.
Uhum.
E tentar gerar vários casos de uso.
Uma boa. Eu já até sei quem vou quem eu vou chamar. Não vou falar o nome dele aqui porque pode ser que ele não consiga vir, mas tem um cara muito bom para isso.
A gente também pode fazer que o povo vá lá chamar ele, né?
Ó que [ __ ] Ele pegou lá os erros que ele precisa tratar melhor pro design.
Ele mesmo tá instalando um front, um um plugin para ele lidar melhor com o front ends.
Denormalização.
Remover local storage midware. Valido assinatura menu hambúrguer de mobile. Ó que da hora, mano.
Muito [ __ ] muito [ __ ] mesmo.
Com isso aqui, enquanto o nosso cloud gera as nossas as nossas issos, as nossas correções, as issos do COD review, eu já vou pedindo aqui para você deixar o seu like, deixar o seu comentário aqui embaixo. A gente demorou um pouco para lançar esse episódio, porque esse episódio e a gente fez uma preparação para poder trazer informação de qualidade para vocês.
Então, se você curtiu, compartilha o episódio que você, se você quiser contribuir ainda mais com a gente, pode ser lá no [email protected].
Ajuda a gente a manter a nossa estrutura e continuar gerando cada vez mais conteúdo de qualidade para vocês. É isso, né, Go? Acho que a gente é isso, cara. conseguimos dar uma visão legal aqui.
Acho que ficam algumas discussões que a gente colocou aqui em paralelo com relação como que vai ser o, desculpa, gente, como que vai ser o júnior, o pleno e o senior, né? Como é que vai ser os modos de ensino daqui pra frente, mas principalmente assim os os deves de hoje com 20, 15 anos de de carreira vão usar isso daqui como manteiga, né?
Não, isso aqui na mão de um sior é é bomba atômica. vir um povo.
É, agora a gente tem que entender a galera que talvez chegue aqui nova que, cara, tem que comer um pouco de farofa aí para, né, o desenvolvimento tende a ser um pouco mais alongado, né?
Porque antes você aprendia errando, você aprendia fazendo código e testando, né?
E aquela hora que eu falei: "Pô, isso aqui é erro de cash". Por que que você erro de cash? Porque eu já passei por isso no momentos anteriores.
Isso. Isso. Então já só quem ficou procurando um ponto e vírgula que nem um louco no JavaScript sabe aí. E é mais fácil, você é mais assertivo tanto para para fazer a definição quanto para poder pegar eventuais problemas, né?
Sim.
Agora se você depende só da IA para isso, tem uma uma jornada um pouco mais longe.
E aí eu acho que também algumas discussões com relação a passar essa esse código pra frente. Por exemplo, você receberia esse código do jeito que foi escrito? Isso, ó, o bom ponto. Tudo que tá aqui, gente, vai ficar num no meu GitHub público para que vocês olhem o código. O code base tá tudo aqui, tanto do Spring Boot quanto do do Next. Então, veja, é um código limpo aqui, um código que você talvez pelo por ele ser tão padronizado e tão organizado, você pudesse desconfiar que foi feito por uma IA. Mas isso aqui é perfeito, perfeitamente manenível, é, por outros desenvolvedores.
Eu não tenho conhecimento desse desse código, mas ele tá bem escrito e dentado e etc.
Tá bem assim, é uma aplicação muito simples, né, pra gente usar de de de caso de uso só aqui. Mas olha, ele tá separado com todos os padrões, com os DTO, os controllers, tudo de acordo com que o framework, que é o Spring Boot que a gente fez pro backend, preconiza, né?
Então, eh, perfeitamente válido que você pega, pegue isso e caso não queira continuar cuá, você usa isso.
Então, mas não tem o risco dele ter feito uma rei matematicamente maluco a ponto de um programador normal não entender.
Não, não. Pode ser que você encontre um bug lá de um arreio ou de um código que tem algum tipo de defeito, mas para isso você tem os testes, etc. É, eu tô te dizendo isso que assim, quando eu abri o Ajax, lembra do Ajax?
Uhum.
Que eu abri o código lá dentro, eu falei: "Mano, isso aqui foi escrito por dois coreanos, um chinês, os caras são mega inteligentaço. Eu nunca conseguiria fazer essa linha de código, entendeu?
Não, a IA ela é treinada com código de ser humano, né? Então, eh, ela foi feita para criar um código legível e sempre, como você falou no Episódio, né? Pegar o caminho mais curto, sem pegar o caminho sem sem pirotecnia.
O Dev tende a fazer uma pirotecnia. A I não. Por isso que você tem que direcionar bem ela. Se você quer alguma coisa mais expansível, você quer uma coisa que seja reutilizável, você precisa deixar isso bem explícito no começo.
Uhum. Muito bem. Então é isso.
Descrições, caminhos do Git e todas as outras coisas na descrição. Isso aí desse episódio.
Isso aí. Isso aí. Se você acompanhou a gente até aqui, muito obrigado pela audiência de vocês. Deixa aqui o comentário para que a gente continue essa essa sessão aqui, que eu acho que é extremamente importante no momento que a gente tá da área de tecnologia, né? E a gente se vê então na próxima.
É isso aí. Se você quer também saber sobre empreendedorismo e conversas que eu tenho tido com alguns CEOs, inclusive sobre inteligência artificial e impacto nos seus negócios, vai lá no Empreenda Cast. tem um papo muito legal com o fundador da daqui, uma das maiores dark kits aí do mundo construídas. E ele fala até uns perrengues que ele teve aí com relação à construção, expansão, rapidez, construção de time em tempo, muito do que a gente tá vivendo da velocidade atual.
Isso aí. Você não segue o Empreendio da Cast ainda? Vai lá, siga o Empreend Cast que tem sempre histórias muito boas.
Isso aí, como é que você finaliza?
Valeu, valeu. Oh.
Oh.
Episódios Relacionados
2h 44minEngenharia de Software com IA: Spec Driven Design na Prática (Hands-on)
Gustavo Passi
23 de abr. de 2026
1h 18minIA na Engenharia de Software: Qual é o Impacto Real?
Valdir Scarin
31 de mar. de 2026
1h 10minBackstage: Como criamos o episódio 100% utilizando IA
Fábio Martinelli
18 de jun. de 2025
1h 27minUma Fábrica de Software Completa só com Agentes de IA
Fábio Martinelli
10 de dez. de 2025
