Beaket Blog
Changelog

Por que registramos decisões, e não especificações

Por que registramos decisões, e não especificações

Essa resposta da API não tá diferente do design no Figma?

Sexta-feira, véspera do release. Uma mensagem no Slack e o time inteiro congela.

O PM estava mantendo os tickets do Jira em dia. O designer estava refinando o Figma. Os devs estavam mandando PRs a toda velocidade. Todo mundo dando o seu melhor dentro da sua área — até que, na hora de integrar, aparece o desalinhamento.

Começa a arqueologia de sexta à noite no Slack. “Onde foi que essa spec foi decidida?” “Essa API tá diferente do ticket original — quem mudou?” Ninguém sabe responder, porque o contexto por trás da decisão não ficou registrado em lugar nenhum.

Nós caímos nesse inferno de “ninguém errou, mas tudo pegou fogo” mais vezes do que gostaríamos de admitir. O Beaket nasceu dessa experiência.

Specs são feitas para mentir

Não é que specs sejam ruins. O problema é a estrutura ao redor delas.

A informação naturalmente vive em lugares diferentes — PMs vivem no Jira, designers no Figma, devs no GitHub. Isso é normal e não deve mudar. Cada ferramenta é a melhor no que faz.

O problema é quando tentamos copiar tudo para um único lugar, tratando-o como a versão “oficial.”

No momento em que você transcreve algo para o Notion ou uma wiki, existem duas cópias. Quando uma é atualizada, a outra vira mentira. Uma spec que para de ser mantida perde o raciocínio por trás das decisões antigas e vai se distanciando da realidade semana após semana.

Isso não é falta de disciplina. É um problema estrutural. Enquanto existirem cópias, a divergência é inevitável.

Connect, Don’t Copy

Por isso abandonamos a abordagem de “centralizar tudo”. Criar mais uma wiki só ia levar ao mesmo resultado.

O que o Beaket faz é traçar relações entre informações que já existem.

Você não precisa copiar seus designs do Figma ou discussões do GitHub para o Beaket. Cada ferramenta continua sendo a fonte da verdade no seu domínio. O Beaket apenas conecta essas fontes pelo contexto de por que uma decisão foi tomada.

Na prática, ele estrutura as decisões do projeto em três tipos de nós:

  • Spec — O requisito de negócio. O que estamos construindo e por quê?
  • Brief — O registro da decisão de design. O que foi decidido do ponto de vista de design, por quê, e o que quebra sem isso.
  • ADR — O registro da decisão técnica. Por que essa abordagem? Quais alternativas foram consideradas e descartadas?

Esses três se conectam por arestas, formando um grafo de decisões. Você não escreve especificações detalhadas no Beaket. Registra apenas o que foi decidido, por quê e com o que se conecta — nada mais.

A regra do “escreva menos”

Sendo honesto, esse foi o ponto mais debatido no produto.

“Não deveríamos permitir mais detalhes?” Claro que essa pergunta surgiu. Mas no momento em que você permite escrita detalhada, você criou outra wiki. E wikis sempre apodrecem.

Por isso colocamos intencionalmente uma restrição no Beaket: escreva menos.

A regra é simples — daqui a seis meses, o eu do futuro vai voltar aqui procurando o porquê? Se sim, escreva. Se não, não escreva. Listas de parâmetros e passos de implementação ficam no GitHub. O Beaket guarda apenas a unidade mínima do porquê.

É um tradeoff deliberado. O Beaket nunca vai ser uma ferramenta de documentação técnica completa. Isso é proposital.

O Ready Flag: um aperto de mão, não uma aprovação

Tem mais um mecanismo que estamos felizes de ter construído.

Depois que uma Spec é escrita, o designer e o dev marcam independentemente um flag de “Ready”. O designer sinaliza “entendi os requisitos do ponto de vista de UI.” O dev sinaliza “entendi do ponto de vista técnico.” Só quando ambos os flags estão marcados a Spec se torna “Ready.”

Isso não é um fluxo de aprovação. É um aperto de mão.

Não é “li o documento”, mas sim “da minha perspectiva, podemos seguir em frente.” É uma proteção estrutural contra começar a implementar em cima de requisitos ambíguos.

E se uma Spec mudar depois de marcada como Ready, o raio de impacto — cada Brief e ADR conectado — aparece automaticamente. Sem precisar vasculhar o histórico do Slack.

Seguindo a trilha das decisões

O Beaket registra o histórico de mudanças além do quem mudou o quê e quando. Ele também captura o porquê.

Selecione qualquer trecho de texto e você consegue rastrear quando foi alterado, por quem e por qual motivo. Chamamos isso de Decision Trail.

Não é uma funcionalidade chamativa. Mas daqui a seis meses, quando alguém perguntar “por que essa spec é assim?” — a resposta está ali. Só isso já muda a velocidade com que um time toma decisões.

O que ainda não sabemos

Não achamos que o Beaket sirva para todo time.

Para equipes pequenas, onde todo mundo trabalha no mesmo espaço e o contexto é naturalmente compartilhado, pode ser demais. Para organizações com centenas de pessoas, ainda não validamos o suficiente.

O que temos certeza é de uma coisa: perder o contexto por trás das decisões sempre tem um custo. E esse custo cresce exponencialmente conforme o time escala e o tempo passa.

O Beaket é uma ferramenta para manter esse custo sob controle — estruturalmente. Não é bala de prata. É mais parecido com um seguro.

Se no seu time já aconteceu de ninguém conseguir explicar por que uma decisão de design foi tomada — comece conectando uma única decisão. Veja aonde isso leva.

Share