Conhecidos e desconhecidos

Esse post tem uns trava-línguas, mas é conhecimento que considero bem importante e útil; uma daquelas coisas das quais meio que sabemos intuitivamente, mas que vale a pena ser botada em palavras pra tornar concreto e solidificar o conhecimento.

No final do post faço umas conexões com o mundo de desenvolvimento de software, mas a ideia geral é aplicável pra bastante coisa na vida.

Donald Rumsfeld, um secretário de defesa dos Estados Unidos, em um briefing de notícias em 2002, disse o seguinte, em tradução livre minha:

Existem conhecimentos conhecidos; são coisas que sabemos que sabemos. Também sabemos que existem os desconhecimentos conhecidos; quer dizer, coisas que sabemos que não sabemos. Mas também existem os desconhecimentos desconhecidos - o que não sabemos que não sabemos. E [...] é essa última categoria que tende a ser a mais difícil.

Confuso?

Vamos tentar levar um pouco mais devagar pra extrair o sentido de cada categoria de informação.

Os conhecimentos conhecidos são pedaços de informação que sabemos, com certeza, que sabemos, simples ou complexo. Eu sei que 2 + 2 = 4, e que o sol vai nascer de manhã. Sei que dados os outros parâmetros iguais, a profundidade de campo em uma foto diminui à medida que a abertura do diafragma aumenta. Eu sei que é verdade, ponto.

Os desconhecimentos conhecidos são as informações que eu sei que não sei. Simples também: qual é a circunferência da Terra? Não faço ideia. É uma coisa que eu sei que não sei, e isso em alguns casos pode ser remediado através de uma pesquisa no Google, em outros não. O importante é que dos conhecimentos desconhecidos não vem nenhuma surpresa. É um buraco de conhecimento que estamos enxergando, então conseguimos tomar as medidas adequadas e desviar dele.

E então o pior: os desconhecimentos desconhecidos. Essas são as informações que nós não sabemos que não sabemos. São a fonte de surpresas, ou de quando você chega lá no final de um projeto, olha pra trás e fala: "ah, se eu soubesse isso antes...".

Você é vítima de um desconhecimento desconhecido quando percebe que pisou num chiclete que agora está grudado no seu sapato. Ora, se soubesse que um chiclete estava na calçada, mesmo que não soubesse exatamente onde está (ou seja, se fosse um desconhecimento conhecido), ia ficar de olho e provavelmente conseguiria desviar! O problema é que você não sabia que não sabia onde estava o chiclete.

Na tecnologia e especificamente no desenvolvimento de software, os desconhecimentos desconhecidos são um tanto perigosos. Um programador pode não saber que existe uma estrutura de dados mais eficiente pro problema que está resolvendo, mas mais grave, pode não saber que está introduzindo um problema de segurança!

Pra alguém não familiarizado com segurança web por exemplo, a necessidade de escapar caracteres como o "<" quando renderizando texto de uma fonte não confiável (como o usuário) não é óbvia, e pode resultar em uma vulnerabilidade de XSS (Cross-Site Scripting) que compromete a segurança dos usuários de seu site. Ele caiu num desconhecimento desconhecido, porque se soubesse que esse tipo de vulnerabilidade existe, procuraria por jeitos de saná-los.

É um problema também na área quente de inteligência artificial que pode afetar tanto iniciantes quanto experts. A distância euclidiana é uma métrica muito útil e popular em diversos casos, mas não é uma boa métrica em alta dimensionalidade, e isso não é óbvio. Esses são casos de que sabemos; imagine em quantos problemas mais os maiores cientistas do mundo não estão quebrando a cabeça por causa de desconhecimentos desconhecidos!

É uma ideia interessante pra se ter em mente enfrentando todos os tipos de problemas na vida: às vezes as coisas são mais complicadas do que parecem.

Quem estava à frente de seu tempo, talvez, seja Sócrates: há bastante tempo atrás, já sabia que nada sabia!

Show Comments

Get the latest posts delivered right to your inbox.