Princípio de pareto: A teoria 80/20 aplicada ao desenvolvimento de web

Sou fã do Yahoo. Isso é uma coisa que não se ouve muito por ai, geralmente o bam bam bam é sempre o Google. Mas o Yahoo tem umas sacadas para desenvolvedores que o Google não tem, como Hack Day e o Yahoo User Interface Blog. No YUI você encontra muita coisa interessante pouco divulgada por ai. Vi um dias desses um artigo chamado Performance Research, Part 1: What the 80/20 Rule Tells Us about Reducing HTTP Requests relacionando a teoria de pareto com ganhos de performance nos sites. A idéia em si não é nova e nem sua aplicação, ainda assim achei muito pertinente.

Vilfredo Pareto econonista italiano, observou que 80% da riqueza da Itália provinha de 20% da população. O princípio de pareto (também conhecida como regra 80/20) diz que para cada fenômeno, 80% das consequencias vem de 20% das causas. Esta é uma suposição que prega que a maioria dos resultados em qualquer situação é determinado por um pequeno número de causas e este princípio é aplicado em estudos relativos a economia, produtividade, política, desenvolvimento etc e onde mais este “padrão” for observado.

O texto do Yahoo diz que em desenvolvimento de software ou aplicações web, 80% do tempo gasto em um projeto, somente 20% é dedicado a código. Os caras fizeram uma pesquisa de performance no site do Yahoo para descobrir qual o tempo de resposta do browser para requisitar a página no servidor, e fazer o download dela renderizando no cliente como mostra o gráfico abaixo.

grafico

Comparando estes dados com outrs requisições e com outros sites, eles viram que do tempo total até um site ser acessado e ser completamente renderizado no browser, de 5% a 38% é gasto em requisitar o HTML e os outros 80% a 90% são gastos em requisitar coisas que estão linkadas no HTML, como imagens, scripts, folhas de etilos etc. Os browsers baixam em paralelo somente 2 ou componentes até solicitar o download dos próximos em alguns casos. E a conclusão lógica é que boa parte dos ganhos de permormance pode estar em reduzir o número de requisições ao servidor. O próximo texto deles vai falar de cache.

Para muitos isso é muito muito óbvio, mas eu só escrevi este texto porque eu acredito que é uma grande defesa aos padrões web se bem explicada e um grande argumento de venda. Quando você desenvolve em camadas separando o conteúdo da apresentação, você tem menos código a ser baixado e parte dele será cacheado. Principalmente os e-commerce que possuem um fluxo de navegação interno maior, e várias páginas são requisitadas ao servidor neste fluxo, boa parte do que for requisitado já foi cacheado como estilos e scripts. Mas muitos ainda são fãs de utilizar scripts dentro da propria página e estilos inline.

Imagine se você consegue reduzir 15kb nas principais páginas de um site com 20 mil acessos por dia. Qual seria a economia de banda no servidor e em quantos segundos no total seria possível melhorar a experiência do usuário no site tornando-o mais rápido? ROI pra você. Isso não justifica você investir nos 20% que corresponde a 80% do resultado de um site leve e otimizado para uma boa experiência com o usuário?