Mobile

3 fev, 2014

Os futuros profissionais estão preparados para a mobilidade?

Publicidade

A mobilidade está inserida no nosso dia a dia. Smartphones e tablets vão em breve ultrapassar os desktops e laptops como o meio mais utilizado para acessar a web. E, claro, as expectativas de seus usuários é que suas experiências de uso sejam no mínimo iguais, mas preferencialmente, bem melhores que as que encontramos no mundo do teclado e mouse. Em termos de UI (User Interface), o modelo touch screen permite, indiscutivelmente, uma forma  mais intuitiva de uso.

Esta intuitividade vai aumentar à medida que interfaces à base de voz se popularizem, com assistentes pessoais como Siri e Google Now conquistando confiança, à medida que se tornam mais inteligentes. Este teste comparativo é bem interessante! 

Mas, além da intuitividade e facilidade de uso, outra questão fundamental que afeta a experiência de uso é o desempenho das aplicações, sejam elas nativas, híbridas ou 100% HTML5.

Aí enfrentamos um desafio. Além das apps, muitas vezes temos que acessar web sites. Um acesso demorado é frustrante, por mais atraente que seja o site. Se ele demorar muito tempo para renderizar e aparecer de forma nítida na tela do seu smartphone, inevitavelmente vai gerar uma experiência negativa. Um estudo feito nos EUA pela Tealeaf, em 2011, (Tealeaf foi comprada pela IBM em 2012 e seu site é este aqui) mostrou que 85% dos adultos que efetuaram transações por smartphones esperavam que suas experiências de shopping online fossem iguais ou melhores a que obtinham com seus desktops e laptops. E 63% disseram que se enfrentassem problemas via acesso móvel, provavelmente não tentariam alternativamente via outros canais. Em outras palavras, um desempenho ruim no smartphone ou tablet afeta o negócio como um todo.

Com smartphones cada vez mais poderosos (o iPhone 5S tem 40 vezes a capacidade computacional do primeiro iPhone, de 2007) e linhas de comunicação mais rápidas é de se esperar que a experiência do usuário em termos de desempenho seja positiva. Infelizmente não é verdade em muitos casos. Além de nossa 3G deixar a desejar, existem algumas variáveis que afetam a performance das redes wireless. Uma é a latência, que é a demora experimentada entre uma requisição de serviço e sua resposta. Toda conexão Internet é capaz de transmitir um determinado volume de dados em um determinado período de tempo, e esta capacidade é chamada de bandwith. A latência é que impede que esta capacidade seja plenamente alcançada. Quando usamos acessos via fios, a latência é causada basicamente pela resistência do material ao fluxo de elétrons. O que afeta o seu desempenho é o congestionamento da rede, ou seja, um número muito grande de usuários compartilhando os mesmos recursos, influenciando significativamente o desempenho.

Já em redes wireless é diferente. Embora o ar (meio de transmissão wirelesss) não ofereça resistência, permite que diversas interferências aconteçam. Rádios, fornos microondas ou barreiras eletromagnéticas afetam a performance. E como funciona um acesso wireless? Primeiro o smartphone se conecta a uma estação rádio-base da operadora e esta se comunica com um servidor da operadora que opera um serviço 3G chamado GGSN (gateway GPRS Support Node), que atua como intermediário entre o usuário e a Internet, assinalando endereços IP e filtrando pacotes de dados entre outras operações. Envia a solicitação para o servidor adequado (como DNS ou HTTP) e recebe a resposta, fazendo o mesmo caminho para o retorno. Obviamente, que de maneira geral as operadoras mantêm um número bem menor de servidores GGSN que estações rádio-base, pois os GGSN atuam como concentradores e consequentemente estão sujeitos à sobrecarga de solicitações. Bem, as estações rádio-base também estão sujeitas à sobrecarga…

Resumo da ópera: ter um bom desempenho em dispositivos móveis, principalmente quando acessando websites, é de extrema importância. Pensando no caso, conversei com um amigo, professor de um curso de pós-graduação em Ciência da Computação. Analisando varios cursos, observamos que na imensa maioria deles, os métodos e técnicas de programação ensinados e praticados são ainda para o modelo conceitual dos desktops. Um exemplo é o tamanho das páginas web. Estão cada vez maiores e complexas. Estudos mostram hoje que uma página web tem, em média, cerca de 1 MB (e talvez chegue a 2 MB em 2015) e contém em torno de 80 recursos como JavaScripts, CSS (Cascading Style Sheets), arquivos, entre outros. Além disso, é muito comum, para preencher a pagina, que sejam necessários varios pedidos HTTP.  O resultado? Sites que funcionam bem para desktops, conectados a redes de fios, mas que são péssimos para wireless. A alternativa de se criar sites lipoaspirados (m.sites) nem sempre atende, pois a maioria dos usuários opta por acessar o site completo, se tiverem esta opção.

Na conversa ficou claro que pouco se ensina de best practices de programação para  mobilidade. Mas este será o principal foco de desenvolvimento de sistemas daqui para frente. Portanto, é necessário que os desenvolvedores aprendam a programar as melhores práticas para ambientes móveis. Práticas de otimização como as propostas pelo PageSpeed, do Google, são orientadas para páginas em desktops/laptops e não smartphones. Portanto devem ser repensadas quando aplicadas à dispositivos móveis. Por exemplo, apenas cerca de 20% do tempo gasto para exibir uma página web é consumido pelo download da própria página HTML. Os restantes 80% (a maioria do tempo!) é gasto na carga de recursos necessários para renderizar a página como script files, imagens, CSS, etc. Ora, em ambientes móveis, como vimos, quanto menos requisições HTTP melhor. Também tem mais performance as páginas menos carregadas de figuras. Consumir menos CPU dos smartphones também é uma boa medida e quanto menos JavaScript, mais eficiente é o processamento. Uma rule of thumb diz que fazer parsing e executar um código JavaScript pode ser dez vezes mais lento em um smartphone do que em um desktop.

Existem várias técnicas para otimizar sites acessados por dispositivos móveis, como diminuir requests HTTP, diminuir código JavaScript, otimizar imagens, evitar CSS selectors complexos, etc. Outro aspecto pouco lembrado a respeito de JavaScript é que diferente dos desktops, os smartphones dependem de baterias que são consumidas por rádios (celulares, Wi-Fi, Bluetooth), acesso à rede e execução de código, como Java Script. Assim, quanto mais CPU for demandado para executar JavaScript, mais rapidamente a bateria será consumida. Bem, não faz parte de nosso artigo discutir as inúmeras técnicas de otimização para ambiente móvel, mas a mensagem é que cada vez se torna mais importante que os desenvolvedores aprendam estas best practices. E, infelizmente, nem todos os cursos estão bem preparados.