the two hard things
expressãoprogramação
'Só existem duas coisas difíceis em Ciência da Computação: invalidação de cache e dar nomes às coisas.'
A frase é atribuída a Phil Karlton, engenheiro da Netscape, e sua longevidade vem de ser verdadeira: os dois problemas são sobre manter um nome ou uma cópia fiéis a uma realidade que muda. O corolário favorito da comunidade acrescenta uma terceira: erros de off-by-one. Cite-a sempre que um cache velho e um nome de variável enganoso conspirarem no mesmo incidente.
Existem apenas duas coisas difíceis em computação: invalidação de cache e dar nome às coisas. A piada é de Phil Karlton, e a versão popular acrescenta erros de um a mais como terceiro item que chega em segundo, o que é uma piada melhor e uma citação pior.
As duas metades são sérias. A invalidação de cache é difícil porque exige saber quando algo mudou em outro lugar, que é um problema de conhecimento distribuído vestido de otimização de desempenho, e quase todo defeito de cache é na verdade uma pergunta sobre de quem era a responsabilidade de dizer que o dado estava velho. As falhas também são do pior tipo: intermitentes, dependentes de ambiente, e invisíveis em teste, onde os caches costumam estar frios ou desligados.
Nomear é difícil por uma razão diferente e mais interessante. Um nome é a descrição comprimida de uma decisão, então escolher um obriga você a saber exatamente o que a coisa é, e a dificuldade de nomear costuma ser sinal de que o conceito não está limpo. Esse é o valor prático escondido na piada: quando um nome não vem, o problema muitas vezes é o projeto, e não o vocabulário.
Também conhecido como: cache invalidation and naming things