Progressive Enhancement: melhoria necessária na web
Particularmente noto que os designers e desenvolvedores gostam de exagerar na defesa de alguns pontos de usabilidade em meio a alguma discussão sobre determinada teoria. Termos como "pular na cara do usuário", "frustrar", "gritar", entre outros são comuns nestas conversas, aumentando bastante o problema apresentado apenas para melhorar sua defesa. Apesar de eu estar neste meio, isto não é este o ponto principal do post.
É realmente frustrante quando não conseguimos acessar determinada funcionalidade de um site por causa de um navegador ou sistema operacional que está sendo utilizado. Penso que isto não é uma opinião pessoal, e sim da maioria dos humanos. Com isto, irei explicar rapidamente um conceito meio antigo, porém pouco utilizado na realidade do nosso mundo virtual. Para entender melhor o que significa o Progressive Enhancement, ou Melhoria Progressiva, é preciso conhecer também o conceito de Graceful Degradation, ou Degradação Graciosa.
Os desenvolvedores, na sua maioria, estão acostumados a criar páginas para os navegadores atuais que não funcionam completamente em versões antigas de alguns navegadores (como grande exemplo, o IE6). Como sempre tento defender, é preciso analisar bastante o público-alvo do projeto em que está sendo desenvolvido antes de tomar qualquer decisão precipitada. Se em determinado caso, é esperado um grande público formado pelos navegadores antigos, é loucura deixar esta parcela de lado. Esta atitude é tomada na sua maioria pela falta de tempo, orçamento e em algumas vezes pelo conhecimento limitado do próprio desenvolvedor. Além disso, é observado também o aumento no uso de dispositivos móveis, em que em alguns casos a ausência de determinadas tecnologias (Javascript, Flash, etc.) pode frustrar o usuário.
A técnica do Graceful Degradation defende a teoria em que determinadas funcionalidades não devam funcionar em algumas plataformas. Pensam que se o navegador do cliente não tem suporta à Javascript ou está sem o Flash instalado é problema dele. O pensamento egoísta obriga o cliente a fazer o update de seus aplicativos, caso ele queira ver perfeitamente o "grande projeto desenvolvido". Às vezes levo na brincadeira e apoio estas idéias pela raiva particular principalmente do IE6, mas todos nós devemos ter em mente que isto pode ser decréscimo significante no resultado do projeto.
Baseada no pensamento colaborativo, a estratégia do Progressive Enhancement foi criada onde o conceito principal é justamente o inverso da Graceful Degradation. O projeto é feito de baixo para cima, pensando no menor denominador comum entre as funcionalidades dos browsers (sempre me lembro das aulas de matemática do colégio), para em seguida o desenvolvedor adicionar funcionalidades e melhorias para o comportamento e apresentação do site que só são possíveis nos navegadores mais atuais. Desta forma, em nenhum caso o cliente perde as funcionalidades principais do site devido a falta de upgrade de seu browser, que muitas vezes é de responsabilidade do "carinha da ti" da empresa.
Se vai ser feito um simples formulário tendo o submit com Ajax, pensando na beleza da resposta a ser dada sem a necessidade de atualizar a página, este mesmo formulário pode ter um "sistema defensivo" que funcione independentemente da presença do JavaScript na máquina do cliente. O uso de linguagens de back-end (PHP, ASP, ASP.NET, etc.) independe do navegador do cliente e garante a funcionalidade principal do caso, mesmo se a apresentação dela não for a melhor possível. Tem que ter em mente em que o ponto fundamental é a funcionalidade. É muito mais difícil você perder um usuário por não ter visto a resposta deste formulário aparecendo com um "fadeIn" em jQuery do que um que não conseguiu fazer a ação principal desejada.
É preciso colocar na cabeça algumas coisas, estudar um pouco mais estes conceitos e se imaginar na posição do usuário. Ele é sua platéia e tem que estar em primeiro lugar! Por isso, não frustre-o.