Revisitando o imposto sobre o ângulo XML

Ocasionalmente, escrevo sobre coisas que considero um pouco leves, vagamente instigantes e, de alguma forma, esse texto acaba sendo extremamente controversa uma vez publicado aqui. Caso em questão, XML: O imposto sobre o ângulo. Ainda estou encontrando pessoas on-line que quase literalmente odeia minhas entranhas porque eu escrevi esse post. O senhor pensaria que eu chutei o cachorro deles ou que fiz propostas românticas inapropriadas para a pessoa amada deles.

Bem, antes de mais nada, estamos falando de XML, a linguagem de marcação, e não de XML, a religião, certo?

Espero que sim. Tento não me envolver emocionalmente com as ferramentas e tecnologias que uso, se puder evitar. Isso não significa que não possa ser entusiasta ou crítico em relação a essas ferramentas e tecnologias, mas não sou casado com o material de qualquer maneira. Quem precisa de toda essa bagagem emocional?

Obviamente, não consegui comunicar isso antes. Falei um pouco sobre isso no podcast #5 do Stack Overflow com Joel, onde tentei ampliar e explicar um pouco melhor minha posição.

Eu não estava tentando apresentar isso como “Oh, XML é ruim, vamos todos mudar para essa nova linguagem de marcação que todos os caras legais estão usando”. O que eu estava tentando dizer é que por que não pensamos no que estamos fazendo? Esse é o tema geral de muitos dos artigos do meu blog. Podemos parar de programar por um minuto para pensar no que estamos fazendo e não fazer uma escolha cega baseada em “Bem, é isso que minha ferramenta faz, então é isso que tenho que fazer”?

Acho que, obviamente, há prós e contras em cada uma delas. Não estou dizendo que uma delas é a solução certa o tempo todo. Mas acho que, ironicamente, o senhor é o que está acontecendo com o XML. Acho que as pessoas estão dizendo: “É sempre a resposta certa, porque pode armazenar qualquer coisa, certo? E todas as coisas que eu uso o utilizam, portanto, deve ser a escolha certa para tudo”. Isso me incomoda um pouco. Talvez eu seja apenas contrário. Talvez eu seja um iconoclasta e queira experimentar coisas diferentes e ver coisas diferentes, mas acho que o realmente entender as alternativas ajuda o senhor a entender melhor o XML, um pouco também.

Espero que as pessoas que leem meu blog não fiquem com a ideia de que se trata de uma reação instintiva para um lado ou para o outro. Trata-se de entender as vantagens e desvantagens e aplicar essas vantagens à sua situação específica. Acho que essa é a arte absoluta da programação. É entender o que o senhor poderia fazer, e qual dessas coisas se encaixa melhor na sua situação. Ao contrário do que muitos programadores fazem, que é “aprendi a usar um martelo e vou martelar tudo”. Em última análise, para mim, trata-se de autoconsciência.

A propósito, gostaria de agradecer a todos que contribuíram para fazer esses transcrições de podcasts do Stack Overflow. É por causa do tempo generosamente doado pelo senhor que posso citar esse áudio aqui.

Não publico coisas para irritar as pessoas, publico porque quero que os programadores pensem sobre suas ferramentas, suas tecnologias, seus métodos.

Cartazes do Think IBM, tirados no Museu de História do Computador

Se o que eu publico aqui às vezes parece desnecessariamente conflituoso, uma pessoa muito mais inteligente do que eu disse isso melhor do que eu:

Faço blogs para ajudar os outros e também para aprender. Como se vê, ambos são auxiliados pelo fato de as pessoas realmente lerem o material. Por favor, perdoe os dispositivos necessários.

Por favor, perdoe os dispositivos necessários; acho que muitas vezes aprendo melhor por meio de o modelo de aprendizagem smackdown. Isso funciona para mim. Talvez não funcione para o senhor, e não tem problema. Há milhões de sites para o senhor escolher.

Dito isso, eu realmente tenho um problema com XMLou eu não teria escrito nada em primeiro lugar. Acho que há um problema real aqui que, na maioria das vezes, está sendo completamente ignorado. Febre do XML pode não ser tão debilitante quanto, digamos, Dengue, mas também tem efeitos colaterais.

Considere Norman Walsh’s Defending the Tax (Defendendo o Imposto). Norman é arquiteto de padrões XML na Sun.

Por outro lado, a diferença entre:

fruit=pear
vegetable=carrot
topping=wax

e

<doc>
<fruit>pear</fruit>
<vegetable>carrot</vegetable>
<topping>wax</topping>
</doc>

não é tão grande assim, não é mesmo? (Ou talvez o senhor ache que seja, de gustibus non est disputandum.)

O de gustibus A rejeição significa que Norman considera que é uma questão de gosto, mas não é. A diferença é grande. Há um custo mental muito real para analisar até mesmo algumas linhas curtas de XML.

Como programador do ecossistema do Visual Studio, o XML está presente em todos os cantos e recantos de um projeto. Toda vez que olho para o meu arquivo XML web.config, há um custo mental de ter que analisar todas essas tags no arquivo. Aqui está esta tag, que se alinha com esta tag. Aqui está essa coisa gigantesca e detalhada em que apenas metade dela é realmente importa.

Claro, é um esforço pequeno. Insignificante, até. Mas o que é o custo mental desse esforço insignificante vezes o número de desenvolvedores no mundo, vezes o número de projetos no mundo?

Também afirmo que essas pequenas dores de cabeça podem ser mais significativas do que o senhor imagina. Em Tropeçando na Felicidadeo autor Dan Gilbert faz uma afirmação semelhante.

Tropeçando na Felicidade

Sua pesquisa descobriu que as pessoas são ruins em prever sua própria felicidade futura. Elas tendem a superestimar radicalmente o impacto positivo ou negativo de grandes eventos em suas vidas – perder o emprego, ficar rico, divorciar-se, ter filhos. Em geral, isso é bom; significa que temos mecanismos de defesa para nos adaptar e sobreviver em nossas circunstâncias variáveis como seres humanos. Mas, também tendemos a mudar radicalmente subestimar o impacto das dezenas de pequenos eventos em nossa vida ao longo do dia. Assim, as pequenas injustiças não acionam nossas defesas. O efeito daquela porta de tela que range, o latido do cachorro do vizinho, o telefonema que interrompe – tudo isso pode ter um impacto cumulativo muito mais profundo em sua felicidade diária do que o senhor imagina.

É um livro fascinante, e estou apenas parafraseando a menor parte dele. Recomendo enfaticamente ao senhor sua leitura se isso for de algum modo interessante para o senhor. Receio que ele não desvendará exatamente os segredos da felicidade, mas o senhor poderá compreender melhor por que tendemos a fazer as escolhas que fazemos em nossa busca incessante pela felicidade.

Não estou tentando mudar o mundo da noite para o dia, mas não me importaria de plantar algumas sementes de discórdia na mente das pessoas. Essas pequenas coisas assuntos.

Da próxima vez que o senhor estiver tentando entender um arquivo XML, pense nisso.

É só isso que estou dizendo.