Cover do episódio 49: O que estatística ensina sobre código: por que viés importa em sistema, não só em análise
#04910 de setembro, 20183 min leituraTecnologia sem HypeS3 · 2018–2019

O que estatística ensina sobre código: por que viés importa em sistema, não só em análise

Aprendi estatística para pesquisa — média, variância, p-valor, viés amostral. Depois percebi que esses conceitos descrevem exatamente os problemas que sistemas de software têm em produção.

EstatísticaObservabilidadePerformanceDados

A média de latência do sistema era 45ms. O time estava satisfeito.

Ninguém tinha olhado o percentil 99. Era 2.3 segundos. Para 1% dos usuários — que em escala são milhares de pessoas — a experiência era completamente diferente do que os números "mostravam."

Viés de média. O mesmo problema que aprendi em aula de estatística dois anos antes.


Estudar estatística para pesquisa parece distante de engenharia de software. Não é.

Média esconde distribuição. Quando você reporta "latência média de 45ms," está comprimindo toda a variabilidade da distribuição em um único número. Uma distribuição bimodal — onde metade das requests é 10ms e metade é 80ms — tem média de 45ms. Mas o comportamento real é completamente diferente do que o número sugere.

Variância é informação. Alta variância em latência significa sistema instável, não só lento. Baixa variância com média alta significa problema sistemático, não ruído. O que você vai tratar é diferente dependendo do tipo de variabilidade.

Viés amostral contamina conclusão. Se você mede performance só em ambiente de desenvolvimento, com dataset de teste, na máquina do dev — sua amostra é enviesada. Não representa o usuário real. As conclusões que você tira não se traduzem para produção.

P-valor ensina o que "estatisticamente significativo" significa. Quando você vê melhoria de 5% em benchmark, precisa saber se isso é ruído ou sinal real. Em experimentos A/B, a diferença entre resultado significativo e coincidência é a mesma pergunta que estatística responde.


O que mudou quando trouxe esse pensamento para engenharia:

Passei a pedir percentis, não médias. P50, P95, P99 contam histórias diferentes. P50 é o usuário mediano. P99 é o caso mais difícil que ainda acontece frequentemente.

Passei a questionar amostras de benchmark. Benchmark rodado em máquina local, com cache quente, sem concorrência — não é amostra representativa de produção.

Passei a pensar em viés de seleção em features. Sistema que só coleta dado de usuários que completam o fluxo não sabe nada sobre usuários que desistiram. A amostra do que você mede determina o que você pode aprender.


Esses insights não vieram de livro de engenharia. Vieram de estudar análise de dados para um projeto de pesquisa onde o professor era exigente com metodologia.

A conexão entre estatística e sistema de software não é óbvia no começo. Fica óbvia quando você vê um time tomar decisão ruim baseada em média que escondia problema real.

Pensamento estatístico é pensamento sobre incerteza. Engenharia de software é trabalho com sistemas incertos. A linguagem transfere diretamente — só precisa de alguém para mostrar a conexão.

Essa semana: qual é a última métrica de sistema que você reportou? Era média? O que o P99 diria que a média esconde?