Latest / Entre Chaves / #257 Spec-driven development: o que muda no desenvolvimento de software
Transcript
- 0:02Está começando mais um entre chaves, o seu podcast de
- 0:06desenvolvimento de software, e hoje a gente vai falar sobre um
- 0:09tema que está muito em alta. Quando a gente fala sobre
- 0:12metodologias de desenvolvimento de software, a gente vai falar
- 0:16sobre sdd, né? Que é o specch drive and
- 0:19developent, né? Ou o desenvolvimento orientado
- 0:22por especificações? Né, que é uma metodologia que
- 0:25não é exatamente nova, né? Ela já existe, já tem um tempo,
- 0:30mas que com as e agenerativas veio com mais força, né?
- 0:35Atualmente mudando mesmo a forma da gente desenvolver software,
- 0:40né? Daqui para frente e para falar
- 0:43sobre isso, né? Estamos aqui com a Rafa, minha
- 0:47companheira de bancada. E aí, pessoal, acho que vai ser
- 0:50legal trazer esse assunto aqui hoje, até porque existem visões
- 0:52contrárias, né? Alguns pontos?
- 0:54Ainda não é um não. É um assunto totalmente, né?
- 0:57Consolidado, né? Ainda tem muita polêmica, né,
- 0:59envolvendo esse assunto, né? Pois é, então a gente trouxe
- 1:02aqui especialistas para falar sobre o assunto.
- 1:05Exatamente. Estamos aqui, então com o Breno.
- 1:08Oi, pessoal, já veio aqui, né? 3 chaves outras vezes, né,
- 1:10Breno? É um prazer estar aqui de novo
- 1:12para falar desse tema assim, que é de muito bom interesse.
- 1:15E estamos aqui também com o Givaldo.
- 1:17Um prazer estar aqui de novo. Como você, Fernandinho e Rafa,
- 1:20Breno, o pessoal que nos ouve e nos assiste, vamos lá que acho
- 1:23que a discussão vai ser. Boa, exatamente como eu falei,
- 1:26gente, na introdução é esse termo, né?
- 1:29O espec drive in developer, né? Essa metodologia, ela não é uma
- 1:32exatamente nova. Desde lá dos anos 90 já existe
- 1:36muito essa vontade, né? Dos especialistas de traduzir
- 1:41intenção para código, da gente conseguir descrever o
- 1:44comportamento para uma ferramenta, para uma plataforma.
- 1:48E ela mais ou menos automaticamente gerar o código
- 1:52correspondente, né, que realiza aquele comportamento pra gente
- 1:56em forma de software, né? Então essa vontade ela não é
- 2:00nova, é e aí, né, com o tdd, com o bdd, que a gente vai falar um
- 2:05pouco mais aqui também já foi. Foram novos passos em direção a
- 2:09esse caminho, né, de descrever comportamento, de descrever
- 2:13intenção, né? E tentar colocar o código.
- 2:18Como secundário, vamos falar assim, né?
- 2:21Mas é Oo código realmente sendo a consequência de um
- 2:25comportamento. O fato é que essas práticas, né,
- 2:28pdd, o bdd, elas já levaram muito a qualidade da engenharia,
- 2:32mas hoje com AEAA gente tem a oportunidade de mudar, né?
- 2:36Tanto a velocidade que a gente constrói software, quanto também
- 2:40a qualidade, né? De talvez pela primeira vez, com
- 2:43um pouco mais de certeza, né? Aproximar ainda mais a descrição
- 2:50do comportamento com de fato o comportamento do software.
- 2:54O sdd, eu acho que ele ele se propõe justamente a isso, e ele
- 2:57e ele faz isso colocando a especificação como a rainha, né?
- 3:02Como o principal, não mais o código.
- 3:05Né? A especificação sendo o
- 3:07principal artefato, né, de um projeto e o código sendo a pura
- 3:12e simples consequência, né? Se eu sei descrever muito bem um
- 3:16comportamento que eu quero que meu software tenha pronto, é
- 3:19quase como se o software vai ter aquele comportamento,
- 3:23invariavelmente. Então, assim, começando é esse
- 3:26episódio. Eu queria que a gente até desse
- 3:29um passo atrás, né? Já chamando vocês.
- 3:32Pra falar um pouco um pouco mais sobre sdd, sobre o conceito, né,
- 3:36sobre a metodologia em si, porque de fato assim, se a gente
- 3:40for pensar, gente, até antes de ir, Ah, igual eu tava falando
- 3:42aqui, a gente sempre quis escrever especificações boas,
- 3:46né? Escrever especificação boas,
- 3:48saber o desafio de saber o que meu software deve fazer, né?
- 3:53Oo que o meu software deve fazer e não como.
- 3:57Ele sempre foi um desafio para nós como empresa de ti, seja em
- 4:02qualquer momento do da nossa história, né?
- 4:04De software. Então, saber o que o software
- 4:08deve fazer, ele sempre foi um desafio.
- 4:10O que que agora é diferente? O que que o sdd de agora é
- 4:14diferente de simplesmente escrever boas especificações?
- 4:18Uma boa pergunta assim, né? Porque a gente vê que a gente já
- 4:20teve desenvolvimento baseado em testes, a gente já teve
- 4:23desenvolvimento baseado em comportamento.
- 4:26E agora, o que que o sdd muda é exatamente o fato da gente ter
- 4:31aí a generativa, auxiliando a gente nas etapas ali de de fluxo
- 4:35mesmo, de de desenvolvimento. Então você gerar a especificação
- 4:39com o auxílio da IA, que vai ser mais detalhista, vai te auxiliar
- 4:43a encontrar gaps naquela especificação que você está
- 4:46criando e, além disso, planejar o desenvolvimento, criar
- 4:50artefatos que vão auxiliar ali a.
- 4:52Execução de fato, que é a geração do código em si.
- 4:55É até voltando um pouquinho no tempo, né?
- 4:58A gente saiu do do waterforl, onde a gente documentava tudo,
- 5:02documentava exaustivamente e é, isso era um problema, porque
- 5:07isso é demandava 11 tempo muito grande.
- 5:11E aí quando a gente partia para para execução do software, às
- 5:15vezes o cenário já era outro, né?
- 5:17As coisas começaram a mudar muito rápido, né?
- 5:20No desenvolvimento de software também, a gente sempre.
- 5:22Conviveu com um pouco de incerteza, de saber exatamente
- 5:25Oo que se quer, qual que vai ser o resultado final das coisas.
- 5:28E isso, né, levou AO atefor essa documentação exaustiva caindo
- 5:32desuso, né? Vieram as metodologias ágeis.
- 5:34O Breno citou aí, né, a gente tem o DDD, Oo, bdd, que ganharam
- 5:39um pouco de força nessa época, porque com as metodologias ágeis
- 5:43existiu também um pouco de confusão, né?
- 5:45Da gente sair daquele cenário que a gente documentava tudo
- 5:48exaustivamente e as pessoas começaram a confundir.
- 5:50Metodologia ágil, com um desenvolvimento desordenado,
- 5:53onde você não o ágil, fala de menos documentação, né?
- 5:56Ninguém não fala de não documentar nada, né?
- 5:58E a gente criar um cenário um pouco caótico, né?
- 6:01EODDDEODDD amenizar um pouco isso.
- 6:03Fernandinha citou na introdução, né?
- 6:04O expectativa é que não é 11 metodologia.
- 6:09Nova, né? E já existe há mais tempo, então
- 6:11até algumas pessoas rotulam como 11 waterforl disfarçado, mas eu
- 6:15acho que a grande, o grande aumento, né?
- 6:18De de relevância do do do espec drive, agora se deve
- 6:22principalmente AA inteligência artificial, que é um cenário
- 6:26onde eu preciso detalhar um pouco mais.
- 6:28Eu preciso delimitar um pouco mais as minhas Fronteiras ali, o
- 6:32que eu quero fazer para que eu diminua as alucinações da e a,
- 6:36né? Então, quando começou se a usar
- 6:38e a para para gerar código, um dos principais desafios era
- 6:42alucinação, falta de padrões e né, trazendo o os packdriving
- 6:47para o jogo, né? Delimitando melhor ali.
- 6:49O que você quer especificando melhor, o que está sendo feito?
- 6:52Começou se a ter resultados mais.
- 6:56Mais positivos, né? Com o uso de a para a geração de
- 6:59código. Então eu acho que o grande
- 7:00gatilho ali para adoção do SDD foi, né?
- 7:03De fato, AO uso da a para para fazer código.
- 7:06Como você bem pontuou, né? Acho que um dos principais
- 7:09pontos aí de crítica ao spac reven development, é que ele
- 7:14seria meio que um waterfool ali por ele dar esse foco na
- 7:18documentação primeiro, né? E no manifesto ágil, um dos
- 7:20princípios, fala. Software funcionando mais do que
- 7:24documentação abrangente. Vocês veem isso como totalmente
- 7:27o contraditório ao ágio ou vocês veem como vocês veem, um ponto
- 7:32em comum? Assim, eu não vejo como
- 7:34contraditório, porque o software funcionando, a geração de valor
- 7:38final continua sendo o principal objetivo do processo.
- 7:43É, mas o ágio, né? Ele fala em mais software
- 7:47funcionando do que documentação abrangente.
- 7:49E a gente não tá deixando de pensar nisso, né?
- 7:51Um outro princípio do ágio é da gente conseguir se adaptar
- 7:55rapidamente às necessidades, né? E se adaptar é aos contextos que
- 7:59a gente tem. E 11 necessidade que a gente
- 8:01passa a ter com adoção da IA, é delimitar melhor a especificar
- 8:05um pouco mais. Então eu vejo isso como 11
- 8:08complemento ali e né? Falando ainda sobre a questão do
- 8:12ágio, AIA possibilita que possibilita que a gente gere o
- 8:16código ainda mais rápido, que a gente coloca coisas em
- 8:18produções. Em produção ainda mais rápido.
- 8:20Então trazer essa etapa adicional de adicionar uma
- 8:24especificação ali não vai é fazer com que o meu processo
- 8:28fique lento, fique burocrático, que eu não consiga gerar valor
- 8:31de fato ou que eu perca muito tempo planejando e isso conflite
- 8:36com o timing que eu tenho para colocar alguma coisa, para
- 8:39lançar algo, para colocar algo no mercado.
- 8:41Eu concordo com isso. Assim, eu tava pensando sobre
- 8:44isso, tava lendo algumas coisas aqui até antes do episódio.
- 8:47Que é justamente, né? Quando a gente falava do do
- 8:49waterforl, né, do método cascata de desenvolvimento, né?
- 8:52O que que é? Como ele era, né?
- 8:53Era ele tinha uma fase muito clara de especificação, né, onde
- 8:58todo mundo juntava especificava. Né, exaustivamente como você bem
- 9:02plantou ponto hoje. Desenhava aquele diagrama.
- 9:05Fazia tudo, né? É justamente porque construir
- 9:07sempre foi caro. A gente tinha que eu tenho que
- 9:09lembrar isso sempre, né? Que construir era caro.
- 9:11Então eu preciso especificar tudo no mínimo detalhe pra
- 9:14quando eu entrar na minha fase de especificar de
- 9:16desenvolvimento. Eu consegui ter tudo muito, né,
- 9:20bem especificado, a ponto de conseguir desenvolver com mais
- 9:24clareza e com menos falhas, né? E o ágio?
- 9:26Ele veio justamente pra isso, que era assim, cara, é
- 9:28impossível ser ir lá e especificar tudo um ano atrás e
- 9:32desenvolver e achar que as coisas não mudam, né?
- 9:35Achar que software é hard, né? Claro que não, ele é soft, né?
- 9:38Então ele muda, ele transforma. Né, assim, enfim, eu acho que
- 9:43esse era o waterforl. E por que que eu também concordo
- 9:45com você que não é exatamente por isso que eu não acho que é
- 9:47tão contraditório, porque por mais que a especificação, aqui
- 9:50ela tem um protagonismo alto, né?
- 9:53EEA? Gente fica querendo especificar
- 9:55mais. Ainda assim, construir é rápido.
- 9:58Você tem, né? Continua tendo as interações?
- 10:00Curtas, né? Exatamente.
- 10:02Ainda assim, na hora que eu, dado que eu estou satisfeito com
- 10:06a minha especificação, é quase como apertar um botão e eu vou
- 10:09construir. E se a construção não foi boa,
- 10:11eu posso pedir de novo, e se não foi boa, eu peço de novo.
- 10:15Eu mudo uma especificação e peço de novo.
- 10:17Então por isso que eu acho que não é tão contraditório, mas ao
- 10:20mesmo tempo é, é. É meio estranho você pensar
- 10:23assim, que um dos das das grandes coisas do manifesto ágil
- 10:27era justamente esse trecho que você falou, né?
- 10:29Software funcionando então o meu ponto é, o software continuar
- 10:32continuará funcionando rápido, só que agora com uma
- 10:35documentação. Mais abrangente.
- 10:37E eu acho que um negócio muito importante da sdd, que eu falei
- 10:40no início, mas que a gente eu acho que vale a gente reforçar
- 10:42aqui, é que a documentação, ela passa a ter um protagonismo.
- 10:46Ela não é simplesmente uma especificação que até então a
- 10:50gente usava, que era o auxílio para o desenvolvimento, né?
- 10:53O que eu uso para desenvolver e a partir do momento que eu
- 10:57desenvolvo, eu jogo fora minha especificação, porque afinal, o
- 11:00software funcionando é o mais importante.
- 11:02Agora não, agora é não. A especificação é tão importante
- 11:05quanto o software, na verdade mais importante.
- 11:07Então, se eu tenho uma mudança, eu vou mudar a minha
- 11:10especificação e isso vai refletir uma mudança do software
- 11:13por consequência. Mas tem uma outra coisa que
- 11:15vocês que você falou, Givaldo, que eu queria também reforçar,
- 11:19porque aqui no entra chave a gente também já falou muito
- 11:21sobre esse conceito, né, que hoje a gente usa muito, começou
- 11:25com o Vibe code, mas que os framors, que inclusive o Spike
- 11:28kit, que é um do o framework do GitHub.
- 11:30Que fala muito sobre sobre sdd acabou né?
- 11:34Configurando um pouco mais, que é o negócio da gente ter 2
- 11:37etapas muito claras de planejamento e execução.
- 11:40Se a gente pensar que o cascata também tem 2 etapas muito
- 11:43claras, só que o planejamento é muito grande e a execução é
- 11:46muito grande aqui é quase como se a gente reduzisse tudo num
- 11:50período de horas, né? Onde eu planejo e muito bem e
- 11:53executo muito bem, mas dado pelo por esse conceito, né, de que se
- 11:57eu planejo muito bem. Eu consigo dar muito mais
- 12:00clareza de quais são os meus requisitos.
- 12:02Eu eu consigo ter mais clareza, dar mais clareza para IA e ela
- 12:06consegue executar muito mais facilmente, né?
- 12:09Então acho que esse é um dos princípios muito importantes aí,
- 12:12né? Do sdd, né?
- 12:14De planejamento e execução, né? Bom, uma dúvida que eu tenho é
- 12:18que a gente sabe que nem tudo. É nem tudo ali a prova de
- 12:22falhas, né? Em algum momento ali você vai
- 12:24estar numa situação onde o time está em crise, onde tem uma data
- 12:28forte, 11 Deadline para ser cumprido.
- 12:30EE uma, muitas dessas situações são onde as metodologias falham,
- 12:34onde, por exemplo, eu vejo times.
- 12:36É atuando que larga, né? Que larga, tipo xingal Rossi e
- 12:41para dizer. E aí, e aí, quando?
- 12:44Quando a gente está No No SDD, isso significaria ter uma forma
- 12:48de, por exemplo, burlar, né? A especificação e ir direto no
- 12:51código. E aí, né, aí se eu teria um
- 12:53código dessincronizado ou existe uma forma de proteger o código,
- 12:58né? É contra alterações que não
- 13:01foram especificadas. É, Eu Acredito que isso pode
- 13:03acontecer sim, né, né? Na tentativa ali de corrigir
- 13:06alguma coisa, você pular a parte de especificar.
- 13:10E direto na alteração ou no auto convite ali que muda um pouco o
- 13:14que foi especificado, né? Mas acredito que a velocidade
- 13:18que você conseguiria mexer na especificação iria tornar isso
- 13:21possível sem precisar você ir direto, né?
- 13:24Mas existe o risco. E um outro risco maior ainda do
- 13:27que esse, acredito que é você especificar e pular etapa de
- 13:32conferência, que eu acho que é essencial antes de você
- 13:35executar. Porque tudo que você pede para
- 13:38IA gerar, né? Você está gerando uma
- 13:39especificação ali com o auxílio de a.
- 13:41Se ela gerar alguma coisa, fazer um, o que seria tipo uma
- 13:44alucinação ali da da IA na geração da especificação, você
- 13:48vai gerar um código que não vai estar consistente com o que você
- 13:51quer e aí vai ter que voltar atrás e isso vai gerar um
- 13:54retrabalho. Que vai atrapalhar ainda mais
- 13:56ali, naquela necessidade de entregar rápido, né?
- 13:59Concordo com com isso que vocês acabaram de falar, né, que a
- 14:02gente revisar e a gente fala muito isso aqui no entre chaves
- 14:05é a coisa mais importante, né? Assim, revisar na especificação
- 14:09e consequente hoje ainda revisar o código são são as coisas mais
- 14:12importantes. E às vezes eu sou um pouco mais
- 14:14otimista, talvez ou pessimista, né, dependendo do que vocês, de
- 14:18qual que é a visão, né, que enfim, que as pessoas acreditam
- 14:22que deveria ter, que deveríamos ter, né?
- 14:25Mas no final das contas, eu acho que tudo é uma mudança de
- 14:27mindset. Se enquanto mudar uma
- 14:29especificação não for fácil o suficiente, esse negócio nunca
- 14:32vai pegar. Então, assim, é no limite.
- 14:35Na hora que se essa metodologia pegar de verdade, mudar uma
- 14:39especificação deveria ser tão fácil quanto mudar um código.
- 14:43Então, no limite, a pessoa não deveria querer mudar o código,
- 14:47ela deveria querer mudar a especificação, já que ela está
- 14:50nessa metodologia de de espectro, né?
- 14:54É como quase como se o código fosse uma caixa preta.
- 14:56EE assim, vai demorar mais eu entender o código, porque eu não
- 15:00entendo ele quase vamos falar assim, né, gente?
- 15:03Estou no limite. Óbvio que hoje a gente tem que
- 15:05revisar código, a gente tem que saber o que que a gente está
- 15:06colocando, a gente é responsável, então assim, né,
- 15:09mas vamos colocar no limite ali de que realmente a
- 15:12especificação, ela expressa 100% do comportamento do meu
- 15:14software. Nesse limite eu não quero mais
- 15:17revisar código, eu quero revisar especificação, e tem que ser
- 15:20fácil fazer isso, porque senão. Os negócios não vai pegar esse
- 15:24negócio, essa metodologia não vai funcionar.
- 15:26Você tocou num ponto que eu acho interessante é que a gente tem
- 15:29que considerar que OA especificação, ela está sendo
- 15:32100% abrangente, mas e nos casos que são extremos assim, de
- 15:37nuances que aparece só no código e você só percebe no momento da
- 15:41implementação? Mas esse que é o negócio.
- 15:43Mas é é esse que é muito doido mesmo.
- 15:46Mas é muito doido assim, a complexidade, por favor, dêem
- 15:48uma opinião suas também. Mas assim para mim é tipo isso é
- 15:51como se assim. Essas coisas aí, elas vão
- 15:54começar a ser meio que transparentes.
- 15:55Assim, eu não vou saber uma coisa que vai estar só no
- 15:57código, eu vou estar, eu vou saber o que que está na minha
- 16:00especificação. Se a partir do momento que eu
- 16:02confio 100% que a minha especificação produz bons
- 16:05códigos, eu não preciso mais saber o que que está no código,
- 16:08eu preciso saber o que está na especificação.
- 16:10Mas já chegamos. Aí é outra história, aí é outra
- 16:14história, mas é. Mas é como se é como se a gente
- 16:16realmente estivesse adicionando uma camada de abstração.
- 16:19Na nossa programação é quase como se o futebolasse quando
- 16:22seria assim? Ah, agora, pra você corrigir um
- 16:24bug, você você tem que olhar e saber a linguagem de máquina.
- 16:27Você não tem, não. Você não precisa conferir se na
- 16:30linguagem de máquina os bits estão certos, alocados
- 16:32corretamente na posição da memória.
- 16:34Não precisa, entendeu hoje isso? Esse é o ponto, seria como, se a
- 16:37gente? Se hoje a gente está programando
- 16:41a linguagem qualquer e a gente fosse lá nos nos, nos binários.
- 16:45Lá nos ficar se conferindo, precisar as confinas, porque
- 16:48você não acredita que o que você está produzindo é o correto,
- 16:52entendeu? Só que aí, no limite, a gente
- 16:55vai passar a acreditar que é correto.
- 16:56Eu não vou precisar saber isso aí.
- 16:58E aí só mais uma coisa antes de passar a palavra para vocês,
- 17:01porque vocês que são os convidados, né?
- 17:03Assim não. Mas é um assunto que eu gosto
- 17:04muito. Mas no passado, quando eu eu
- 17:07programava, há 500 anos atrás, tinha 11 framor, que é aqui que
- 17:11a gente usava na dti, que tinha geração de código, nunca, nem
- 17:15era. Não tinha nada a ver com LLM,
- 17:17nada a ver com nada disso. Era só uma geração de código
- 17:19totalmente determinística, mas que eu tinha um programinha que
- 17:23eu entrava, IA lá modificava umas coisas e isso aqui gerava
- 17:27um código. E tinha a hora que eu IA queria
- 17:30ir lá no código e mudar isso aqui, porque às vezes era até
- 17:33mais fácil do que ir no programa e ficar alterando.
- 17:36Só que se eu fizesse isso, a minha próxima geração de código
- 17:39é subrescrever o meu código que eu fiz, entendeu?
- 17:42Tipo assim, ele IA, eu IA perder essa modificação.
- 17:46Então eu tinha que ir aqui, e aí por isso que eu tô falando que
- 17:48isso aqui tinha que ser muito fácil.
- 17:50Tinha. Ir no programinha e mudar tinha
- 17:53que ser muito fácil, porque senão eu IA lá no código e IA
- 17:56ficar o tempo inteiro tendo esses problemas de sincronia,
- 17:59sabe? Então assim é, esses problemas,
- 18:02enfim, existem. E tem a opinião de vocês, por
- 18:04favor. É só complementando, e pelo o
- 18:06que o Givaldo falou, se esse processo falha e o código fica
- 18:10dessincronizado, você teria uma manutenção.
- 18:12Teria outra possibilidade que ele falou?
- 18:14Né? Seria mais é trabalhoso de
- 18:16qualquer. Forma, mas dentro disso que a
- 18:18Fernandinha falou, né? De remeteu ao passado, né?
- 18:21Tem alguns. Os autores que defendem que a
- 18:22gente tá na quinta geração ali da forma como como se faz
- 18:26código, né? Começou lá atrás com com os
- 18:28assembles, né? A gente passou pra para as
- 18:31linguagens de alto nível e a gente tá estaria no numa nova
- 18:34geração agora que é a fonte ali é a especificação, né?
- 18:39E o que é gerado ali vira vira commodity.
- 18:42Tem até 11 artigo da toatorcs que ele categoriza, né?
- 18:47AOO desenvolvimento orientado por especificação, né, que ele
- 18:50fala de. Na primeira etapa, ali é um
- 18:53primeiro nível de maturidade que seria o spechasa first, que é
- 18:57quando você gera uma especificação, faz o código e
- 19:00descarta aquela especificação. Segundo nível seria o
- 19:03spechancore, que é onde a sua você faz e evolui aquela aquela
- 19:08especificação e as suas né evoluções são são vão derivar
- 19:12ali de atualizações Na Na especificação, mas você ainda
- 19:15continua olhando para o código, o código continua tendo um papel
- 19:18relevante, o terceiro nível. Que seria de fato, onde a sua
- 19:23especificação é a sua total fonte da verdade.
- 19:27Ali você trata o código gerado quase como um binário, como uma
- 19:30caixa preta ali. E nessa ideia do que o Givaldo
- 19:33falou também, né? É essas preocupações que a
- 19:36gente, como desenvolvedor, sempre teve, elas continuam
- 19:40existindo, principalmente porque a gente tá lidando com algumas
- 19:43variáveis quando a gente tá usando esse essa metodologia,
- 19:46que é o modelo que você vai usar para gerar o código.
- 19:49O modelo de a, né? Se você pegar o modelo melhor
- 19:51ali dos resultados, vão ser diferentes.
- 19:53Você troca o modelo, né? Por exemplo, no meio do do
- 19:56desenvolvimento do produto, isso geraria um impacto.
- 20:00Muda completamente e isso vai muito para essa parte ali de
- 20:03segurança. Como que você, como
- 20:05desenvolvedor, vai garantir que o código está com o que você
- 20:08especificou ali que deveria ter com relação à segurança, com
- 20:11relação a, enfim, todas aquelas preocupações que a gente costuma
- 20:14ter quando está olhando para o código.
- 20:16Como que a gente vai ter isso agora?
- 20:18Com foco na especificação, né? Então assim, eu particularmente
- 20:21ainda acho que o código é essencial ali pra a gente
- 20:24conferir esses detalhes importantes pra criar 11
- 20:27software pronto pra produção. Vamos, vamos então entrar
- 20:30justamente nessa Seara aí, né, da prática do do estado atual,
- 20:34né? Porque hoje AA gente tem vários
- 20:36framurx, várias coisas que implementam, vamos falar assim,
- 20:39né? Essa metodologia de espec driven
- 20:41development. Mas como o jowaldo até falou,
- 20:43né, alguns nem estão No No nível de maturidade realmente.
- 20:49Pegar essa essência da especificação.
- 20:51Realmente isso é a fonte da verdade.
- 20:53Mas né, às vezes estão nos níveis um pouco menores, né?
- 20:57Mas já pelo menos começam a flertar com esse conceito.
- 21:01Então como é que vocês veem assim que estão assim as
- 21:03ferramentas, os frameurs, né? O estado atual do mercado em
- 21:07relação a essa prática? Entre os frameurs, né, que a
- 21:10gente mais tem utilizado aqui, né?
- 21:13É estão o spec kit lá do do GitHub, curso ripper, o agente
- 21:19OSE. Eu Acredito que esses frameworks
- 21:21eles estão ali na No No nível ali do do spechancort né né?
- 21:26Eles não são a especificação como como a fonte da verdade em
- 21:30alguns cenários, até no specfourt que aquela não é, ele
- 21:35não mantém aquela documentação centralizada e vai atualizando,
- 21:39ela vai gerando novas especificações a medida que.
- 21:43Que você vai vai evoluindo, mas não, não mantém aquilo ali, mas
- 21:47não volta atualizando aquela aquela especificação, né?
- 21:50Ele mantém uma documentação centralizada ali com com os
- 21:53padrões, né, com roadmap, emissão do produto.
- 21:57Mas né, ele não pega. Se você quer fazer uma
- 22:00alteração, ele não pega. A especificação que você fez e
- 22:03altera essa especificação vai gerar uma nova especificação.
- 22:06É ele. Ele pega mais o princípio, né,
- 22:07que é o que a gente tava falando aqui, de planejar e depois
- 22:10executar, né? Quase como se fosse assim.
- 22:12Pra eu executar bem, eu preciso planejar bem, então eu preciso
- 22:15fazer uma especificação, mas dado que eu executei e essa
- 22:18especificação morre, né? Como se fosse.
- 22:20Mas ao mesmo tempo ele mantém essa essa essas especificações
- 22:23né No No repositório né mencionado ou ele aqui o serve
- 22:27de contexto pra pra pra futuras evoluções?
- 22:30Então não diria que é um espec first onde ele usa a
- 22:33especificação, depois descarta totalmente aquilo.
- 22:36Mas também ainda não é 11. Está próximo ali, talvez, e
- 22:41ainda um pouco distante do do spect as a source, que é onde
- 22:45seria aquele cenário onde AA especificação é a única fonte da
- 22:49verdade ali, né? Mas eu acho que nem o espec kit
- 22:51assim, não sei. Posso estar errada, né?
- 22:53Assim vocês falam a opinião suas, mas talvez é um dos
- 22:56prêmios mais evoluídos, né? Que implementam, talvez um pouco
- 22:59mais essa esse conceito, né? Do sdb.
- 23:03Nem ele assim tá? Eu vejo ele como os pack
- 23:05hancords ali próximo, bem próximo, mas se você for ser
- 23:09muito preciosista ele algumas coisas ele ainda não não estão
- 23:13presentes. Nele, o principal dele, né?
- 23:15Não sei se todo mundo conhece que está nos ouvindo, mas o pack
- 23:17kit, como eu falei né? O framewk do GitHub que trata de
- 23:20sdd, né? Que implementa o sdd, ele tem
- 23:23vários e vários comandos. Quando se ele se autodetermina,
- 23:26né? Quando ele é se conceitua, ele
- 23:29coloca como? Ele coloca como se ele fosse um
- 23:31espectro asserce, né? Como se ele realmente mantivesse
- 23:35as especificações como fonte de verdade.
- 23:37Mas pelo menos até onde eu vi as últimas, as últimas
- 23:41atualizações, ele ainda não respondia coisas muito básicas,
- 23:44como por exemplo, e um sistema legado.
- 23:46E aí eu tenho que eu tenho que criar especificação do sistema
- 23:49inteiro para começar a mexer nele, fazer umas coisas muito
- 23:52básicas, né, assim, e aí, né, realmente na hora que eu.
- 23:56Altera 11 especificação, eu posso ir na especificação,
- 23:59alterar. Mesmo que isso vai funcionar,
- 24:01vai refletir no meu código é esse?
- 24:04Essas 2 perguntas pra mim são básicas.
- 24:06Eu acho que nenhum deles, pelo menos que eu conheço, já já
- 24:09responderam, né? Vocês concordam com isso ou não?
- 24:12Já tem coisa mais atual que eu estou perdendo?
- 24:15Eu acho que nas experimentações que eu tive com algumas dessas
- 24:18metodologias, desses premiworks, né?
- 24:20O espec kit, ele é muito completo.
- 24:23A partir do momento que você já tem a estrutura da arquitetura
- 24:27bem definida, do seu projeto, da sua, da sua funcionalidade ali,
- 24:30do que você está criando a partir de é a primeira etapa do
- 24:34do spec kit, é o constitution, que seria você definir como vai
- 24:37ser as coisas. Então ele é muito voltado,
- 24:40talvez ali para um projeto novo. E eu tive um pouco de
- 24:43dificuldade de aplicar isso em projetos já existentes.
- 24:46E aí vendo, por exemplo, o kiro, né?
- 24:49Como o kiro, como kiro funciona. Ele tem uma etapa de stream que
- 24:53consegue analisar a arquitetura do do projeto de uma forma muito
- 24:56eficaz e gera é artefatos ali de arquitetura, de design, de
- 25:01padrões que são usados ali ao longo de todo o processo.
- 25:05E o que o que dá para fazer, né? Você usar algumas é partes de
- 25:10fremocos diferentes e consolidar isso no fluxo que vai te atender
- 25:13da melhor forma. Isso também funciona.
- 25:15Que foi o que eu já fiz, né? Para atender ali as minhas
- 25:18necessidades, inclusive mexendo com projetos legais ou projetos
- 25:22que já já existem ali. Então essa é uma sugestão até,
- 25:25né? Que você definir arquitetura,
- 25:28definir padrões e jogar isso no constitution das pack kits, isso
- 25:31ajuda muito. Aí você consegue evoluir melhor
- 25:33esse esse uso do do framework. Que é isso?
- 25:36Como as coisas também estão muito novas, elas.
- 25:38Ainda nos consolidaram mesmo, né?
- 25:40Então é difícil ter realmente o qual você falou assim, né?
- 25:43Uma coisa que é muito padronizada, muito correta, de
- 25:46vai funcionar em todos os cenários, não vai mesmo não
- 25:49assim, né aqui, mas mas em compensação eu acho que projetos
- 25:53greenfield, que é o projeto novo, né?
- 25:56Até aqui na dti a gente já tá com alguns times utilizando o
- 26:00Spike kit, tendo bons resultados, né?
- 26:02Então assim parece que é quando o projeto é novo.
- 26:06Parece uma boa, né? Porque você já começa de cara já
- 26:09mantendo a especificação, com uma alta qualidade, saudável
- 26:13nessa relação, né? Saudável entre código e
- 26:16especificação. E aí você vai talvez, né,
- 26:18conseguindo ter uma coisa interessante ali, igual eu
- 26:21falei, eu acho que essas, esses prêmios, essas plataformas,
- 26:24esses produtos, eles ainda não respondem questões básicas assim
- 26:28de projetos existentes, né? Assim, e como realmente essa
- 26:31dinâmica acontece na prática mesmo.
- 26:34Eu acho que a gente ainda tem um caminho para andar.
- 26:37Eu acho que existe um conflito também quando você está
- 26:39definindo arquitetura, design e padrões de um projeto existente
- 26:42com o que você quer que aquilo se torne, que aí vai conflitar,
- 26:47né? Aí ela vai sugerir melhores
- 26:48padrões, às vezes, que vão em conflito direto com o que está
- 26:51lá hoje. E o.
- 26:52Código ele é fundamental também para isso funcionar, porque é
- 26:56hoje as LMS que que a gente tem no mercado.
- 26:59Elas dependem de ter contextos autocontidos e, principalmente,
- 27:03quanto menor o contexto, melhor, né?
- 27:06Se você tem um código limpo, um código sem acoplamento AIA, vai
- 27:09funcionar muito bem, né? Agora, se você tem um código ali
- 27:13todo acoplado ali, todo mal escrito, onde você vai precisar
- 27:17de, por exemplo, a gente passar no contexto da IA vários
- 27:20arquivos Pra Ela entender, uma simples funcionalidade não vai
- 27:24dar. Certo, né?
- 27:25É, a gente até já fez um episódio aqui, né?
- 27:27Sobre o Dora. Que ele fala muito que no Dora o
- 27:30relatório atual, né, de 2025, não é verdade, fala sobre AIA
- 27:34ser um grande amplificador, né, que no final das contas é isso,
- 27:38se o meu código tá mal escrito, é exatamente é difícil a gente,
- 27:44e aí como você falou, né, quando a gente define, a gente quer
- 27:47fazer um negócio bem feito, mas e aí, agora eu vou gerar um
- 27:50código no padrão que o meu código tá, ou no um código com
- 27:55os melhores padrões, né? As boas práticas de mercado.
- 27:58Aí você fica nessa, assim como também quando você estivesse
- 28:00desenvolvendo, você também teria talvez esse dilema, né?
- 28:02Mas, enfim, é, é um são coisas mesmo que eu acho que ainda
- 28:07temos dificuldades com os próprios framers, né?
- 28:10E as próprias ferramentas atuais.
- 28:13Né de SDD? Eu queria voltar até um pouco
- 28:15sobre o espec, que especificamente, né?
- 28:17É essa questão da evolução e da gente não tomar aquilo como uma
- 28:21verdade absoluta, que já tá 100% consolidado.
- 28:24É só olhar a quantidade de versões De Lá Pra Cá.
- 28:27Assim, de quando surgiu todo dia, aparentemente surge uma
- 28:31versão nova, então, assim. O que é bom e é ruim, né?
- 28:33Tipo assim, é bom também porque a porque a comunidade abraçou
- 28:36totalmente, né? É o prêmio que está atualizando
- 28:39pra caramba. Mas tem essa parte ruim que quer
- 28:41dizer assim, que ainda tem gaps, né, para serem.
- 28:44Exatamente, e essa evolução, né? Até onde eu observei assim, é
- 28:48muito voltada para criar guard railes durante o processo para
- 28:53te auxiliar nessa revisão da especificação, que além de você
- 28:57conseguir revisar o que ela tá criando, as etapas do próprio
- 29:00framework que vão ali interagir com o que foi gerado, comparar,
- 29:04criar checklist do que deveria ter e comparar depois o
- 29:07resultado do código gerado com o que foi especificado.
- 29:10Que isso é muito importante. E isso foi é até recente No No
- 29:14espec kit, né? Então assim, essa evolução é
- 29:16muito benéfica assim, e eu e eu vejo que vai ajudar demais assim
- 29:20nessa nessa consolidação de fato desse framework.
- 29:23Todo negócio, né? Todas essas evoluções, elas
- 29:26ficam tentando justamente juntar.
- 29:28Foi até o que eu falei no início, né?
- 29:29A gente ter mais certeza que, dado um comportamento bem
- 29:34especificado, eu consigo produzir um bom código.
- 29:38E aí, o tempo inteiro a gente tá tentando lidar com esse dilema,
- 29:41porque, no final das contas, às vezes vocês concordam comigo.
- 29:45Hoje é muito difícil a gente falar o que que é uma boa
- 29:47especificação. É muito subjetivo.
- 29:50Eu trato uma boa especificação de um jeito, provavelmente a
- 29:53Rafa trata de outro, provavelmente a minha boa
- 29:55especificação pode até ter um padrão, né?
- 29:58Um modelo, mas ela vai ter algumas informações e talvez a
- 30:02da Rafa vai ter outros. E no final das contas, a gente
- 30:05não chegou ainda uma consolidação, um conceito como
- 30:09engenharia de software do que que é uma boa especificação,
- 30:12dado que eu não sei o que que é uma boa especificação, é difícil
- 30:15demais. De eu chegar e produzir um bom
- 30:18código, porque o fato é o código, ele é determinístico o
- 30:21código eu posso achar, eu posso achar o que eu quiser.
- 30:24Mas se eu fizer um if e a Rafa fizer um if, a gente
- 30:26provavelmente vai fazer Oo mesmo.
- 30:28If se a gente está resolvendo o mesmo problema.
- 30:30Agora, se eu estou escrevendo uma especificação, ela está
- 30:32escrevendo uma especificação para o mesmo objetivo.
- 30:35A gente pode escrever de milhões de formas diferentes.
- 30:38Eu acho que o ponto seria a ambiguidade, né?
- 30:40Eu acho que talvez a ambiguidade seria uma boa métrica para
- 30:44exatamente, mas ainda subjetivo. Ô, Fernandinha, mas você trouxe
- 30:47um bom ponto, você está falando sobre, né?
- 30:49Que se você escrever uma especificação e a Rafa escrever
- 30:52uma, as especificações vão ser diferentes, beleza.
- 30:55Se vocês escreverem um hífen, vai ser igual.
- 30:57Mas se vocês escreverem um software inteiro, ele pode gerar
- 31:00o mesmo resultado. Mas o software vai ser
- 31:02diferente? Não.
- 31:03Não tem uma forma única de de desenvolver software, e isso
- 31:06talvez, né? Contribui pra pra geração de
- 31:09resultados tão diversos pela pelas pelas ias, porque elas
- 31:13elas são treinadas, né? Os bilhões de parâmetros que
- 31:16forem foram usados lá no treinamento dela.
- 31:18Tem formas diferentes de fazer AA coisa também.
- 31:21Então ela já tem uma característica não determinista
- 31:23ali e isso eu acho que amplifica ainda mais essas.
- 31:26Essas diferenças, essas nuances que vão que vão existir.
- 31:30Mas o meu ponto é assim é que se a gente conseguisse, né?
- 31:32Se a gente conseguisse estabelecer com muita certeza,
- 31:35com muita objetividade, uma boa especificação e ter certeza que
- 31:39essa boa especificação ela produz um bom código, pronto.
- 31:42Aí meu desafio tá quase que resolvido, né?
- 31:45Por mais que assim, às vezes eu vou, eu vou.
- 31:47Se eu rodar aquela especificação 15 vezes, eu vou produzir 15
- 31:50códigos diferentes por causa dessa, de tudo isso que a gente
- 31:53tá falando, nunca vai ser um para um.
- 31:55Mas se eu tiver certeza que uma boa especificação cria um bom
- 31:59código, tá ótimo, né? Mas não é isso que a gente tem
- 32:02hoje, por isso que a gente precisa ficar revisando, por
- 32:04isso que a gente precisa, né, ter todos os cuidados.
- 32:07A gente precisa não só revisar a especificação, a gente vai
- 32:10precisar pra sempre, né? Pensando que o sdd vai ser a
- 32:13metodologia que a gente vai seguir, né?
- 32:14Revisar código pode ser que no limite a gente não precisa mais,
- 32:17mas hoje a gente precisa porque afinal, né, enfim, somos
- 32:21responsáveis e a gente ainda não confia.
- 32:23É e no ponto que você falou? Das evoluções do dos framux
- 32:27voltados para que eu gere cada vez mais uma uma especificação
- 32:30que produza bom código, né? Eu acrescentaria, né?
- 32:33Que reduza as as alucinações, né?
- 32:36Minimize esse efeito do do, do não determinismo da ya para a
- 32:39gente chegar justamente nesse ponto que você falou de Ah, eu
- 32:42tenho a consciência aqui. Eu tenho a confiança de que se
- 32:45eu passar uma boa especificação para a ya, o código gerado vai
- 32:49ser confiável. Não preciso me preocupar em.
- 32:52Tanto com a revisão de eu acho que isso é uma realidade talvez
- 32:55um pouco distante. É, acho que essa ainda vai ser
- 32:57bem distante. Tem 11.
- 32:59Detalhe que vai bem nessa vertente da do código que vai
- 33:02ser gerado a partir da da especificação, que é a primeira
- 33:05etapa de especificação dele, né? Na maioria dos dos framers que a
- 33:09gente tem hoje para para para a espec drib, a primeira etapa,
- 33:13ela é muito focada na parte funcional da especificação, né?
- 33:16Então é é criada de uma forma AAO artefato é criado de uma
- 33:20forma. O que eu poderia definir EEO
- 33:23ideal é que seja assim. A tecnologia é só depois que já
- 33:26tiver especificado. Então eu não tô focando em
- 33:29tecnologia, não tô focando em como que isso vai ser feito, em
- 33:32qual linguagem que vai ser feito.
- 33:34Eu tô focando em especificar o que eu quero, né?
- 33:37Que é aquela ideia que a gente tinha de behavio.
- 33:39Então assim é focar na intenção, e aí a aia consegue criar essa
- 33:44especificação que vai poder ser usada.
- 33:46Em qualquer tecnologia, você vai poder migrar isso depois muito
- 33:50facilmente, então isso fica com uma documentação muito viva e
- 33:54fácil de utilizar de vários formas.
- 33:57E aí o desenvolvedor, né? Assim é a carga cognitiva dele.
- 34:01Vai muito mais para esse lado, né?
- 34:02Da intenção do software, né? Do que o software tem que fazer?
- 34:06De qual é o comportamento dele. Do que pro como, de qual
- 34:10linguagem ou de qual arquitetura, ou de como no
- 34:13detalhe resolver aquele problema de negócio, né?
- 34:16Então a gente fica muito mais sendo essa ponte, né?
- 34:19Do negócio, que eu acho que é um negócio que a gente sempre teve
- 34:23dificuldade na ti, né, que é aproximar o negócio, né, do
- 34:28software, né, da tecnologia, como que a gente diminui essa
- 34:31distância, né, entre quem conhece a intenção e quem produz
- 34:35o código, né? A gente começa a tentar fazer
- 34:39com que essas coisas aproximem mais, né?
- 34:41E assim, e a gente se torne talvez como desenvolvedores,
- 34:45muito mais essa ponte, né? Entre negócio e tecnologia do
- 34:49que a gente era antes até, né? Eu acho assim.
- 34:51Eu vejo com muito otimismo porque hoje já acontece isso nos
- 34:56times da gente utilizar a linguagem natural para gerar
- 34:59código, a gente já. Usa IA para nos ajudar Copilot.
- 35:04Só que a sensação que eu tenho é que se sei lá se tem um time de
- 35:087 pessoas que estão desenvolvendo features com apoio
- 35:11do Copilot, com apoio de IA. Essas pessoas, cada um deles
- 35:15tem. Eles fazem prompt da a sua
- 35:18maneira, então eles tem a sua forma única de conversar com a
- 35:20IA. Que vai gerar.
- 35:22É um resultado diferente pra todo mundo.
- 35:24Então eu vejo como o espectro even development, uma forma de
- 35:27você garantir que tá todo mundo falando a mesma língua com AIA.
- 35:32Por isso que eu acho que é. Esse é o melhor caminho, né?
- 35:34Pelo menos que eu vejo. Eu acho que é isso que eu tô até
- 35:37falando início, né? Que é como sempre foi um desafio
- 35:40antigo da gente, aproximar o comportamento da execução, né?
- 35:44Do que que a gente realmente quer que o software faça.
- 35:47É isso, assim é o bdd, o pdd. Eles sempre tentaram fazer isso,
- 35:51né? Eles estavam tentando fazer
- 35:52isso. Quando a gente fala de teste de
- 35:53drive and development e de behavior drive and development,
- 35:56né, era isso, Era Eu criar os testes primeiro antes do código,
- 36:01para ter mais clareza de onde, quais são os meus pontos de
- 36:05falha, da onde eu quero chegar, quais são os meus meus cenários
- 36:09de sucesso, quais são os meus cenários de erro, para só assim
- 36:12eu implementar o meu código OB rave ainda mais, né?
- 36:15É eu ter. Clareza dos meus cenários
- 36:18completos de comportamento, da onde eu quero ir pra depois
- 36:21implementar o meu código. E eu vejo realmente o sdd é uma
- 36:24como uma evolução, né? Dessas 2 coisas aí, sempre
- 36:28buscando fazer essa aproximação entre negócio e ti, realmente a
- 36:32gente, diminuindo esses gaps, diminuindo essas falhas de
- 36:35comunicação que a gente tem, né? Sobre o bdd que você comentou,
- 36:40é, parece muito em conceito, né? Até difícil a gente definir a
- 36:43Fronteira do que que é um, do que que é outro.
- 36:45Será que? Sdd é só um bdd com uso de a mas
- 36:49assim até vocês me corrijam, se eu tiver errada, eu entendi
- 36:52muito que no bdd é como se você tivesse usando linguagem natural
- 36:56para explicar o sistema, um ser humano.
- 36:58E no caso do sdd, você está impondo uma especificação ao
- 37:03código, né? E não ao ser humano.
- 37:05Vocês concordam com essa afirmação?
- 37:07Eu concordo e inclusive acrescento que a parte do sdd
- 37:12que se destaca assim com relação ao bdd.
- 37:14É a quantidade de artefatos que ele gera que não é simplesmente
- 37:18a parte de definição ali do que vai ser feito, da intenção ao
- 37:22longo do processo de especificação.
- 37:24Ele vai especificar parte de design, vai especificar parte de
- 37:28arquitetura e vai criar Tarefas daquilo já.
- 37:31Então, assim, ele vai destrinchar aquilo em etapas
- 37:35muito bem detalhadas que talvez o bdd na mão, né?
- 37:38Se a gente fosse construir aquilo ali na mão, definir
- 37:41comportamento, a gente não IA. Destrinchar tão bem quanto aí a
- 37:44faz hoje. Bom, gente, acho que é por isso.
- 37:47Assim, achei muito legal o papo falando bastante aí de muitos,
- 37:51muitos assuntos dentro do espectro drive, né?
- 37:53Desde conceito até polêmicas. Foi muito massa e é isso aí,
- 37:58então é isso. Então valeu demais, galera, todo
- 38:01mundo que. Está aí nos ouvindo?
- 38:02Até agora? Obrigado, pessoal.
- 38:04Foi muito legal. É isso aí até.
- 38:05A próxima? Tchau, tchau, até a próxima.