VIBE IN PUBLIC_

Vibe coding para lista única de telas em vez de tela apontando pra próxima

A ordem de um onboarding morava dentro de cada tela, espalhada em 5 arquivos. Virar lista única deixou inserir uma etapa entre as 21 custar 1 linha.

A ordem das telas de um fluxo é um fato único, e quase todo aplicativo começa guardando esse fato picado. A tela 1 sabe que depois dela vem a 2, a 2 sabe que vem a 3, e nenhuma delas tem a sequência inteira. Enquanto o fluxo é pequeno e ninguém mexe, isso passa. A conta chega no dia em que você precisa inserir uma etapa no meio.

No onboarding do Fumava, o app para parar de fumar que Martin vem construindo ao vivo, o agente trocou esse desenho durante um conserto maior e relatou depois:

"A ordem das telas virou lista única. Antes cada tela sabia o nome da próxima espalhada em cinco arquivos. Agora, para inserir uma tela no meio das 21, basta pôr uma linha na posição certa."

O preço de manter a ordem picada em 5 arquivos

Enquanto a ordem mora dentro das telas, cada uma carrega um pedaço da resposta. Inserir ou remover uma etapa deixa de ser decisão de produto e vira edição sincronizada: achar quem apontava para a tela que saiu e religar o encadeamento na mão, sem deixar ponteiro velho para trás. O trabalho cresce com o tamanho do fluxo, e num fluxo de 21 telas cada mexida custa mais justamente quando mexer já está mais arriscado.

Ler a sequência também fica fora de alcance. Para saber em que ordem as telas aparecem, você abre arquivo por arquivo e monta o encadeamento na memória, e a ordem passa a existir só ali. Quem entra no projeto depois não tem onde olhar.

O erro típico desse desenho não derruba o app, ele desvia. 2 telas passam a apontar para a mesma próxima, ou uma etapa fica órfã e nunca aparece, e o fluxo roda inteiro sem reclamar, entregando uma sequência diferente da que foi combinada. Falha que não faz barulho só é descoberta quando alguém percorre o fluxo com a especificação do lado.

No vibe coding o fluxo cresce mais rápido do que a sua leitura dele

Pedir telas novas e recebê-las prontas leva minutos, e conferir o que entrou continua no seu ritmo. Quando cada peça guarda um pedaço da ordem, auditar o encadeamento significa reler tela por tela, e é a parte que ninguém faz. Com a ordem num lugar só, a conferência vira leitura de cima a baixo, e dá para bater a sequência contra o que o produto prometeu sem abrir o código de nenhuma tela. Velocidade de escrita o agente já entrega; o que precisa ser projetado é o que sobra legível depois, e essa é a parte que decide se o vibe coding aguenta o projeto crescer. Foi o mesmo caminho de vibe coding para nao mostrar a tela de quem parou no caminho de quem reduz. Foi o mesmo caminho de vibe coding para dar exemplo de referência pra ia. O mesmo problema apareceu em vibe coding para o agente achar informacao duplicada nas telas.

1 leitura do banco em vez de 21

No mesmo relato aparece outro efeito da arrumação: o fluxo passou a fazer 1 leitura do banco em vez de 21, porque as telas passaram a compartilhar o mesmo perfil carregado em memória, atualizado a cada gravação. Os dois ganhos saem da mesma ideia. Quando cada tela cuida sozinha de um fato que é do fluxo, cada tela paga por ele, seja em ida ao banco, seja em linha de código para manter.

Esse é o mesmo conserto em que o onboarding aprendeu a retomar de onde a pessoa parou. Lá o fluxo passou a saber o que já foi feito, aqui passou a saber o que vem depois, e os 2 fatos faltavam no mesmo lugar.

Onde a lista única para de resolver

A lista resolve enquanto a sequência é linear. No momento em que o produto pede desvio condicional, do tipo pular uma etapa conforme a resposta anterior, uma lista de nomes em ordem não dá conta sozinha, e passa a ser preciso dizer, por etapa, em que condição ela entra. Isso não foi discutido na live, é ressalva minha, e vale saber cedo, porque o jeito ruim de descobrir é ir pendurando exceção na lista até ela ficar tão ilegível quanto o encadeamento que ela substituiu.

Como descobrir se a ordem do seu fluxo está espalhada

Abra o projeto e tente escrever a sequência inteira das telas, de ponta a ponta, sem rodar nada. Se você precisou de mais de um arquivo para chegar ao fim, a ordem não é um dado no seu projeto, é um comportamento. O teste seguinte é tentar inserir uma etapa no meio do fluxo, contando os lugares que você tocou para isso. Se foi 1 linha em 1 lugar, a lista já existe. Se foram vários arquivos e uma conferência no fim, ela ainda está por escrever, e o momento barato de escrever é agora, antes de o fluxo dobrar de tamanho. O dia inteiro em que isso apareceu está gravado na live, e é uma das arrumações baratas que o vibe coding exige de quem gera código rápido.