Detalhes não são pequenos
Um detalhe é uma decisão em escala pequena. Os sistemas que falham, e as pessoas de quem lembramos, são feitos deles.
As pessoas me descrevem como obcecado por detalhes e normalmente querem dizer isso como uma crítica leve. Lento demais, minucioso demais, incapaz de deixar passar a coluna nula. Entendo a frustração. Também acho que a palavra 'detalhe' faz um trabalho desonesto, porque sugere que a coisa é pequena. Não é pequena. É uma decisão, tomada em escala pequena, cujas consequências não são.
Um valor padrão é uma política
Pegue o exemplo mais chato que conheço: o valor padrão de um campo. A coluna é criada com padrão zero, ou o parâmetro da API tem padrão false, ou o formulário pré-seleciona a primeira opção. Esse padrão vai ser aplicado a todo registro em que ninguém pensou, que é a maioria. É uma política, promulgada em silêncio, afetando mais linhas do que qualquer decisão explícita que o time já tomou. Já vi um fuso horário padrão definido como a cidade do próprio desenvolvedor corromper anos de dados de agendamento num país inteiro. Ninguém chamou aquilo de detalhe depois.
Nulo significa que ninguém decidiu
Outro: uma coluna que aceita nulo. Toda coluna anulável é uma pergunta que o time se recusou a responder. Um usuário pode existir sem e-mail? Um pedido pode existir sem total? Às vezes a resposta honesta é sim, e o nulo significa algo específico. Mais frequentemente o nulo está ali porque a migração ficou mais fácil assim, e agora todo leitor daquela coluna precisa adivinhar o que a ausência significa. O bug chega meses depois, num relatório que excluiu em silêncio toda linha em que o valor faltava, e o número sobre o qual todos tomaram decisões estava errado em um terço.
Por que me recuso a deixar passar
Quando audito um sistema, os achados em que as pessoas mais resistem são sempre os que parecem pequenos. Um índice faltando. Um arredondamento inconsistente. Um timestamp sem fuso. Seguro a linha nesses casos não porque gosto, mas porque mais de 600 projetos me ensinaram que a falha catastrófica quase nunca é um erro grande e visível. É uma decisão pequena que ninguém revisou, acumulada em cada registro e cada dia, até o dia em que finalmente importou. Os erros grandes são pegos. Os detalhes vão para produção.
Do que os pacientes do meu pai se lembram
Encontrei meu pai uma vez, por cerca de duas horas, na adolescência. Tudo o mais que sei sobre Pedro Moretti Guedes, médico em São Paulo por mais de quarenta anos, vem dos pacientes dele. Do que eles se lembram não são as coisas grandes. É que ele lembrava o nome da mãe deles. Que percebia quando alguém tinha vindo a pé em vez de ônibus, e perguntava por quê. Que não cobrava de quem não podia pagar, e fazia isso de um jeito que deixava a pessoa manter a dignidade. Detalhes. Cada um deles uma decisão pequena que dizia a uma pessoa que ela foi vista.
Não aprendi isso com ele diretamente. Aprendi com as pessoas que carregaram isso por décadas. E isso moldou como penso o trabalho: o detalhe não é a parte pequena do trabalho. É a parte em que você decide se de fato se importa.
Atenção é uma forma de respeito
Em software, atenção ao detalhe é respeito pela pessoa que vai usar o sistema, pela pessoa que vai mantê-lo e pela pessoa cujos dados ele guarda. Um padrão bem escolhido respeita o usuário que nunca vai mudá-lo. Uma coluna não anulável respeita o analista que vai consultá-la daqui a dois anos. Um timestamp com fuso respeita o paciente em outro estado cuja consulta depende dele. Nada disso vai ser notado quando estiver certo. Tudo isso vai ser sentido quando estiver errado.
Então continuo sendo lento, e minucioso, e incapaz de deixar passar a coluna nula. Não é obsessão. É o trabalho, levado a sério, na escala em que ele de fato se decide.