terça-feira, 28 de julho de 2009

Garbage in, garbage out (ou "pensar pra quê?")

Na computação, há um velho princípio (da época dos mainframes, vistos como máquinas pensantes, como me lembro de uma enciclopédia dos anos 70) chamado garbage in, garbage out. Basicamente, ele afirma que a saída é tão boa quanto a entrada; não existe mágica que transforme dados ruins em resultados milagrosos. Podemos generalizar esse princípio para qualquer procedimento experimental: simplesmente não há como obter resultados válidos a partir de dados inválidos sem cometermos uma fraude científica [1].

E um dos conceitos derivados é o perigoso garbage in, gospel out. É o que vejo muitas vezes por aí: uma confiança cega no resultado emitido por uma máquina que supostamente nunca está errada e que muitos acreditam ser "perfeita". A simulação, a modelagem, os algoritmos viraram verdadeiras armas mágicas, aquelas que substituem experimentos e análises e que, para alguns, nunca estão erradas.

Armas essas que podem machucar os seus usuários de forma violenta se usadas incorretamente. Basta lembrar que tais softwares têm milhares - senão milhões, ou bilhões em um futuro próximo - de componentes e linhas de código, assim sua complexidade cresce de forma assustadora. Assim, um modelo incompleto (como é o caso de componentes eletrônicos ou sistemas físicos, nos quais muitas vezes uma modelagem de baixo nível é inviável), um pequeno erro de digitação ou mesmo um atalho tomado para simplificar o código, podem esconder erros que aparecerão no imperfeito e imprevisível mundo real.

Tal comportamento, muitas vezes, vem da cultura de querer uma fórmula para tudo. Quem precisa de raciocínio e de interpretação quando existem milhões de fórmulas mágicas, nas quais basta apenas jogar os valores e, adequado à cultura da impaciência, temos ali uma resposta bonitinha? E é isso que leva a outro comportamento parecido: a dependência excessiva de ferramentas. Vejo pessoas usando calculadoras ou softwares para resolver problemas que poderiam ser executados de forma igualmente eficaz com alguns poucos cálculos manuais.

Ou mesmo passando horas chutando valores em um simulador, até obter o resultado desejado, mesmo que a solução seja impossível no mundo real, ou comentando e descomentando linhas em um código-fonte, praticando a chamada Cargo Cult Programming, tudo isso para evitar o trabalho de pensar e entender a causa do problema, e certamente não é esse o profissional que queremos ver. Em uma analogia, resolver problemas de tal forma seria similar a um "tratamento" médico no qual o profissional decide "sair cortando o paciente até achar onde está o problema".

Em um exemplo mundo-real, podemos fazer uma analogia entre um projeto feito apenas com simulações teóricas e uma pessoa que inicia um relacionamento apenas baseada em fotos e conversas virtuais. Talvez os resultados sejam os esperados, talvez completamente diferentes; talvez uma das, ou as duas pontas desanimem e decidam jogar tempo e trabalho fora.

Não quero defender o retorno às máquinas de escrever e as réguas de cálculo, mas sim que não existe solução - por mais avançada que seja - que tire do profissional o trabalho que nenhuma máquina pode fazer: o de entender o resultado e os limites das ferramentas empregadas e, principalmente, estar pronto para criticar e duvidar de tais, não servindo apenas como um mero apertador de botões.

Por mais poderosas que as ferramentas se tornem, elas não substituirão aquilo que delimita o bom profissional de um mero seguidor de fórmulas e resultados prontos: o bom-senso. E elas continuarão sendo importantes, desde que usadas com consciência de suas falhas e limitações e com a compreensão que nada substitui o mundo real para testes.

Recomendo a leitura desses artigos da coluna Rarely Asked Questions, escrita por um engenheiro da Analog Devices, fabricante de componentes eletrônicos:

1. Which carries more weight, a datasheet or SPICE macromodel? (modelagem X mundo-real)
2. What's in your toolbox? (escolha a ferramenta adequada)
3. Capable engineers should be prepared to question, and modify, anything, not just their own designs (necessidade de criticar e questionar resultados)


[1] Podemos generalizar o conceito de garbage in, garbage out para qualquer mercado: um produto ou serviço refletirá o esforço que nele foi investido e a qualidade que nele foi colocada. E o conceito de aplica-se a produtos de qualidade duvidosa endeusados pela propaganda e pela existência de grandes nomes por trás, no perfeito pensamento capitalista o que é bom para uma empresa, ou para alguém famoso, é bom para mim.

Nenhum comentário:

Postar um comentário

Não são lidos e não me responsabilizo pelo conteúdo deles.