Teu progresso
0 / 83 módulos0%
Estágio 03 · 03-16
BloqueadoEstimar é onde Plenos viram Sêniors ou ficam Plenos pra sempre. Quase todo dev odeia estimar, "não sei, vai depender", "agile não exige", "PM que decide". Mas em organização real, ninguém te dá tempo ilimitado. Estimar mal causa: deadlines mentirosos, retrabalho, perda de confiança da liderança, missed quarter, time queimado.
Senior estima com calibração: separa unknowns de knowns, identifica riscos, faz pré-trabalho de redução de incerteza, comunica com bandas de confiança em vez de números mágicos. Sabe que estimativa não é commit; é planejamento que ajuda decisão. Sabe quando pedir spike, quando dividir, quando dizer "essa estória precisa de mais clareza antes de estimar".
Este módulo é o ofício de planejamento técnico: breakdown de épicos em estórias, T-shirt sizing, planning poker, reference class forecasting, risk register, dependency mapping, critical path, buffers honestos, roadmap quarterly, OKR alignment, e por que "fizemos só 60% do roadmap" é normal e ok.
Não é PM; é o lado técnico que apoia PM. Senior técnico sabe estimar próprio trabalho e do time, defender prazos com evidência, e empurrar back contra escopo irreal sem virar "engenheiro do não".
Hofstadter's law: "It always takes longer than you expect, even when you take into account Hofstadter's law."
Causas:
Aceitar estatisticamente: estimar com distribuição, não ponto. Dar P50 e P90.
team_invites com migration".Se estória > 1 semana, decomponha. Se task > 1 dia, decomponha.
INVEST (estórias boas): Independent, Negotiable, Valuable, Estimable, Small, Testable.
Buckets relativos: XS / S / M / L / XL.
Vantagem: conversa rápida, sem ilusão de precisão. Desvantagem: cada team calibra próprio.
Pontos em Fibonacci (1, 2, 3, 5, 8, 13, 21). Pretende capturar effort + complexity + risk.
Crítica: vira moeda, gerentes comparam times, perde sentido. Use com cautela ou nem use.
Velocity (pts/sprint): planejamento agregado. Vira instrumento manipulável; só serve em time fechado e estável.
Pegue projetos passados similares e use como base. Em vez de "vou estimar do zero", "outras 3 features deste tamanho levaram 3-5 semanas; default 4".
Reduz planning fallacy. Demanda histórico.
Três valores:
Estimativa esperada: (O + 4M + P) / 6. Variance: ((P-O)/6)².
Soma de tasks com PERT dá distribuição do projeto. Útil quando alguém pede single number, você sabe que 03-10 é fantasia e P90 é cobertura.
Cada épico tem riscos identificados:
Para cada: probabilidade × impacto = severity. Mitigation plan.
Riscos top 3 abordados em planning. "Vamos fazer spike na semana 0 pra reduzir risk X".
Mini-pesquisa timeboxed pra reduzir incerteza. "Spike de 3 dias pra avaliar Redpanda vs Kafka". Output: doc com decisão + evidence.
Spikes não entregam feature. Investigam. Estimar pós-spike é mais confiável.
Mapeie dependências entre tasks. Visualize via Gantt ou DAG. Critical path = sequência mais longa; encurtar critical path encurta projeto.
Tarefas off-critical têm slack. Atrasar slack não atrasa projeto; atrasar critical sim.
Ferramentas: Linear, ProjectPlace, Asana Timeline. Em times pequenos, lousa basta.
Buffer do projeto, não da task. Cada task estimada P50; buffer agregado no fim cobre tail.
Anti-pattern: cada dev infla própria estimativa "pra garantir". Buffers escondidos somam-se em quantidade absurda. Melhor: estimativas honestas + buffer global declarado (~20-30%).
Senior diz "não" tecnicamente. "Pra cobrir requisitos A, B, C em 4 semanas, exigiria Y. Sem Y, ou cortamos C ou estendemos pra 6."
Roadmap honesto admite incerteza. Não promete "Q4 lançamento de X" se X é XL com riscos.
OKR: Objective qualitativo + Key Results mensuráveis. Hierarquia (company → team → individual). Reviewed quarterly.
Crítica: OKR vira theater quando KRs são vaidade ou fáceis. Bons KRs medem outcome (não output) e são desafiadores.
Senior técnico aproxima trabalho de OKRs do time. "Esse refactor habilita KR Y porque ...".
Estes são onde mais errôneo:
Ex: migrar de Express → Fastify. Spike (1 sem) → wrapper compat (1 sem) → migrar 30% rotas (2 sem) → rest (3 sem) → cleanup (1 sem). Total 8 sem; comunique como 6-10.
Little's Law: WIP = Throughput × Cycle Time. Reduzir WIP reduz cycle time (com throughput fixo). Limitar WIP é Kanban core.
Métricas alvo: cycle time mediano + p95. Vigilância de outliers (item de 4 semanas que devia ser 1).
Antes do projeto: imagine que falhou catastroficamente. Liste por quê. Use pra mitigation upfront.
Inverte planning fallacy. Time encontra riscos que esconderiam.
Movimento: estimativas são waste; foco em flow + WIP limit + small batch. Estória < 2 dias, não estima, só faz.
Realidade: orgs maiores ainda exigem planning. Mas filosofia (small batches, flow) é correta. Se você tem disciplina, NoEstimates simplifica.
Tooling não substitui disciplina. Time disfuncional com Jira sofisticado é disfuncional.
Story points são subjetivos, drift entre sprints, e não traduzem pra datas. Monte Carlo simulation usa throughput histórico (items completed per week) pra forecast probabilístico. Output acionável: "85% confidence shipping 30 items em 8 semanas" — não "uns 6 sprints, talvez". Adoção 2026: Spotify, Allianz, ING substituíram SP estimation tradicional por flow metrics + Monte Carlo.
Flow metrics (Daniel Vacanti, "Actionable Agile Metrics for Predictability"):
WIP = Throughput × Cycle Time. WIP menor → cycle time menor (throughput fixo).Monte Carlo "when?" — Python:
import random
# Histórico: items completed per week (last 12 weeks)
throughput_samples = [4, 6, 5, 3, 7, 5, 4, 6, 8, 5, 4, 6]
def simulate_when(num_items: int, num_weeks_max: int, trials: int = 10_000):
"""Quantas semanas pra completar num_items?"""
results = []
for _ in range(trials):
weeks = 0
done = 0
while done < num_items and weeks < num_weeks_max:
done += random.choice(throughput_samples)
weeks += 1
results.append(weeks)
results.sort()
return {
'50%': results[len(results) // 2],
'85%': results[int(len(results) * 0.85)],
'95%': results[int(len(results) * 0.95)],
}
# 30 items: when?
forecast = simulate_when(30, 100)
# {'50%': 6, '85%': 8, '95%': 10} → 85% confidence em 8 semanas
Monte Carlo "when?" — TypeScript:
function simulateWhen(
numItems: number,
samples: number[],
trials = 10_000,
): { p50: number; p85: number; p95: number } {
const results: number[] = [];
for (let i = 0; i < trials; i++) {
let weeks = 0;
let done = 0;
while (done < numItems && weeks < 200) {
done += samples[Math.floor(Math.random() * samples.length)];
weeks++;
}
results.push(weeks);
}
results.sort((a, b) => a - b);
return {
p50: results[Math.floor(trials * 0.5)],
p85: results[Math.floor(trials * 0.85)],
p95: results[Math.floor(trials * 0.95)],
};
}
Monte Carlo "how many by date?" — direção reversa:
def simulate_how_many(num_weeks: int, trials: int = 10_000):
results = []
for _ in range(trials):
done = sum(random.choice(throughput_samples) for _ in range(num_weeks))
results.append(done)
results.sort()
return {
'50%': results[len(results) // 2],
'85%': results[int(len(results) * 0.15)], # lower bound, 85% conf
'95%': results[int(len(results) * 0.05)], # lower bound, 95% conf
}
# 8 weeks: how many items?
# {'50%': 44, '85%': 36, '95%': 30} → 85% confidence shipping 36 items
Pegadinha: pra "how many items" usa percentiles INFERIORES (lower bound, pessimistic). Pra "when?" usa percentiles superiores. Direções opostas.
Cumulative Flow Diagram (CFD) — visualizar bottlenecks:
#NoEstimates math (Allen Holub, Vasco Duarte, Vacanti research):
Hipótese: "all stories são approximately same size em backlog bem-decomposto → just count". Evidência empírica: variance em throughput é comparável a variance em SP-weighted throughput na maioria dos teams. SP adiciona overhead sem signal proporcional. Decision tree:
Logística applied — quarterly planning Q4 2026:
[8, 6, 5, 7, 9, 6, 8, 7, 6, 8, 5, 7] (média 6.8/sem, min 5, max 9).{p50: 7 weeks, p85: 8 weeks, p95: 10 weeks}.{p50: 81 items, p85: 70 items, p95: 60 items}.Pegadinhas em produção:
Tools 2026:
Anti-patterns observados:
Cruza com: 04-12 (tech leadership: planning rituals + estimation culture); 03-15 (incident response: MTTR é lead time pra incidents); 04-09 (scaling: capacity planning); 03-04 (CI/CD: deployment frequency feeds throughput sample); 04-16 (product/business: forecasting pra revenue commitments e customer SLAs).
Você precisa, sem consultar:
Conduzir planejamento técnico do CAPSTONE-producao (Logística v2) end-to-end. Output é doc + execução observável.
PLAN-V2.md:
PLAN-V2.md completo antes de começar a v2.Threshold de Maestria
Acerte todas as 5 pra marcar o módulo como concluído. Sem pressa, sem timer. Tudo fica salvo no teu navegador.
Q1Qual a fórmula de PERT three-point estimation para valor esperado?
Q2Por que buffer global é melhor que buffer por task?
Q3Qual é o critério INVEST para boas user stories?
Q4Em Monte Carlo forecasting, por que usar percentile p85 ao invés de p50 para commitments?
Q5Qual a aplicação correta de Little's Law (WIP = Throughput × Cycle Time)?
Destrava
03-16 é prereq dos seguintes módulos: