Lição 10 de 13: Retrospectiva do git log
- Output de
git log --onelinelido e analisado - Pelo menos 1 commit identificado como "podia ter sido melhor"
- Arquivo
docs/lessons-learned.mdcom 3-5 notas - Commit
docs: lessons learned from slice 1
Por que olhar pra trás antes de seguir
Você tem 10-15 commits da fatia 1. A retrospectiva transforma esses commits em conhecimento durável que você consulta no próximo ciclo. Sem ela, você termina a fatia 1 mas não aprende com ela.
A retrospectiva tem três perguntas concretas. Você responde, documenta, e segue.
Passo 1 — Lê o git log
Cole no Claude:
Roda `git log --oneline -20` neste repo e mostra o output completo.O output vai mostrar os commits desde o início. Algo como:
abc1234 feat(analytics): track recibo_emitido on create
def5678 feat(ui): recibo form connected to api
9012345 feat(api): POST /api/recibos with validation + insert
6789abc feat(validation): zod schema for recibo + cpf validator
ef01234 feat(db): add recibos table
5678901 docs(plans): write feat-pdf-recibo-MEI-sem-nfse for slice 1
2345678 chore(plans): rename feat-add-recibo to feat-pdf-recibo-MEI-sem-nfse
9abcdef docs(roadmap): 90-day roadmap
3456789 docs(product): initial product brief
fedcba9 feat(rules): add br-date-format rule
... (commits do Módulo 1)Lê de cima pra baixo (mais recente primeiro) ou de baixo pra cima (cronológico). Pra cada commit, faz 3 perguntas.
Passo 2 — Aplique 3 perguntas a cada commit
Pergunta 1: O título do commit descreve o que mudou?
Bom: feat(api): POST /api/recibos with validation + insert, em que você sabe o que mudou só lendo.
Ruim: wip, fix, update, changes, em que precisa abrir o diff pra saber o que mudou.
Se você tem 2-3 commits com título ruim, OK. Se tem 8, é sinal de que estava cansado ou com pressa. Anota como aprendizado.
Pergunta 2: O commit faz uma coisa só, ou várias?
Bom: schema da tabela num commit, validação noutro, route noutro. Cada um com 1 responsabilidade. Ruim: 1 commit que adiciona tabela + validação + route + UI ao mesmo tempo. Quando precisar reverter qualquer parte, vai ter que reverter o pacote todo ou fazer cherry-pick complicado.
Pergunta 3: Se eu fosse refazer esta fatia, qual decisão eu mudaria?
A pergunta é "o que eu faria diferente sabendo o que sei agora?", e não "o que faltou." Exemplos típicos pra fatia 1:
- "Decidi
cliente_cpf varchar(11)mas no caminho percebi que vou aceitar CNPJ também. Mudaria pravarchar(14)no schema original." - "Comecei sem teste E2E e adicionei só na L04. Começaria com teste vazio no L02 e ia preenchendo."
- "Empacotei
feat(db): add recibos tablecom a migration aplicada. Separaria em 2 commits: schema e migration aplicada."
Passo 3 — Registre 3-5 notas em docs/lessons-learned.md
Cria o arquivo docs/lessons-learned.md no repo com este shape:
# Lessons learned — fatia 1
## O que funcionou bem
- 3 itens curtos (1 linha cada) com decisões que vou repetir.
## O que eu faria diferente
- 3-5 itens curtos com decisões que eu mudaria, e por quê.
## Commits que vou imitar
- 1-2 títulos de commits desta fatia que ficaram bem feitos — quero seguir esse estilo nas próximas.
## Padrões que apareceram
- 1-2 observações sobre como eu trabalho (ex: "Tendo a empacotar mudanças demais num commit", "Esqueço de validar antes de aprovar quando estou apressado") — observações de comportamento, não de código.
Mostre o diff antes de criar.Aprove. É registro pra você consultar quando começar a fatia 2 (e quando começar o segundo produto seu daqui a 6 meses).
Passo 4 — Faça o commit
Faça commit do docs/lessons-learned.md, com mensagem: docs: lessons learned from slice 1Build Diary — o autor do CEAP registrou o que não funcionou
O CEAP tem o NOTAS_DO_AUTOR.md, e a seção mais útil dele é "o que tentei e não funcionou" (não "como fazer"). Trecho real:
Análise de Rede (Grafo Completo). Construí uma rede com NetworkX. Deputados como nós, fornecedores como nós, arestas ligando quem paga a quem.
Por que não funcionou: Com 650 mil transações, a rede virava uma bola de lã impossível de interpretar.
O que poderia funcionar: Em vez do grafo completo, segmentar por categoria de despesa.
E outras duas tentativas registradas com o mesmo formato: o que tentei / por que não funcionou / o que poderia funcionar.
A função desse arquivo é a mesma do seu lessons-learned.md: salvar o aprendizado enquanto ele ainda tem contexto. Daqui a 3 meses, você não vai lembrar por que decidiu cliente_cpf varchar(11) em vez de varchar(14). Vai abrir o arquivo, ver a nota, e ou (a) lembrar e manter a decisão, ou (b) ver que a razão original não vale mais e refatorar com confiança.
O arquivo cresce ao longo do produto. A L05 do Módulo 5 (Personal Pack) volta nele.
Takeaways
- Retrospectiva é como você transforma 10-15 commits em conhecimento durável. Sem isso, o aprendizado evapora em 3 semanas.
- 3 perguntas por commit: título descreve a mudança? faz uma coisa só? qual decisão você mudaria?
- Registre o "o que NÃO funcionou": tem mais valor de longo prazo que o "o que funcionou." O que deu certo você lembra sozinho; a falha precisa do contexto anotado pra não repetir.
- O arquivo
lessons-learned.mdcresce a cada fatia. M5/L05 volta nele pra compor seu Personal Pack.
Você terminou quando
Três coisas:
git log --onelinelido com as 3 perguntas aplicadasdocs/lessons-learned.mdcommitado com 3-5 notas honestas- Você consegue dizer, em uma frase, qual foi sua maior aprendizagem da fatia 1