Escrita
Markdown como fonte de verdade, tudo o resto é projeção
Quando o meu workspace passou de meia dúzia de ficheiros para várias dezenas, quis uma vista de conjunto. O instinto de engenheiro disse imediatamente: base de dados, tabela de projetos, tabela de decisões, uma sincronização qualquer a manter aquilo a par dos ficheiros.
Não fiz nada disso, e é das decisões de que menos me arrependo.
Duas cópias divergem, sempre
No momento em que existem duas representações do mesmo facto — o ficheiro e a linha na base de dados — passa a haver uma pergunta sem resposta boa: qual delas está certa quando discordam. E vão discordar, porque a sincronização falha, porque alguém edita do lado errado, ou simplesmente porque um processo morreu a meio.
Resolver isso é possível. Custa lógica de conflito, timestamps, e uma categoria de bugs que só aparece em produção. É trabalho a sério, e vale a pena quando o problema o exige. O meu não exigia.
A sincronização mais fiável é a que não existe.
O dashboard lê, e mais nada
O que construí foi um dashboard que lê os ficheiros Markdown ao vivo. Não há base de dados, não há passo de importação, não há cache a invalidar. Abro-o, ele lê o disco, mostra. Se eu editar um ficheiro e recarregar, está lá.
A consequência prática é que o dashboard nunca pode estar errado. Não porque seja bem feito, mas porque não tem onde guardar uma versão errada. É a diferença entre um sistema que está correto e um sistema que não consegue estar incorreto — e a segunda é sempre a melhor, quando é possível.
Quando a ferramenta externa entra
O mesmo princípio resolveu um problema diferente: projetar as minhas notas de estudo para uma ferramenta de notas na nuvem, para as ter navegáveis por tema e por estado.
A tentação óbvia é sincronização nos dois sentidos: edito no telemóvel, volta ao disco. Recusei, e a regra ficou escrita para não a esquecer num dia de pressa:
- O Markdown no disco é a verdade. É o que está em Git, é o que tem histórico, é o que sobrevive à ferramenta.
- A montra é projeção. Pode ser apagada e reconstruída do zero a qualquer momento, sem perda nenhuma.
- Nada volta. Uma edição feita do lado da projeção perde-se na próxima corrida. É desconfortável, e é o ponto: força a escrita a acontecer onde deve.
Isto tira-me uma funcionalidade — não posso escrever no telemóvel. Em troca, nunca terei de perguntar qual das duas versões vale, e nunca escreverei código de resolução de conflitos para um problema que eu próprio criei.
O teste que uso agora
Antes de acrescentar qualquer sistema que guarde estado, pergunto uma coisa só: se isto for apagado, perco alguma coisa?
Se a resposta for não, é projeção, e pode ser tratado como descartável — sem migrações, sem backups, sem cerimónia. Se a resposta for sim, acabo de criar uma segunda fonte de verdade, e é melhor ter uma razão muito boa para isso.
Quase sempre não tenho.