É muito comum que desenvolvedores de sistemas extremamente competentes se aventurem pelo mundo dos apps para dispositivos móveis com alta taxa de frustração. Geralmente o motivo é que não adequam corretamente as suas criações ao contexto móvel.
Desenvolver aplicativos para celulares pressupõe o conhecimento de algumas questões bastante peculiares.
Este artigo visa explicitá-las, de forma a orientar desenvolvedores sobre pontos fundamentais do contexto mobile, que influenciarão na qualidade da experiência do usuário final.
1. A Rede

2. Integração

3. Escassez de recursos

4. Assincronia

5. Gravação local

6. Antecipação
Antecipação é outra técnica muito interessante que muda completamente a experiência de fluidez do usuário e aproveita melhor o tempo de "inatividade". Imagine que você criou um app que permite que o usuário tire fotos e depois as publique na Internet. Logo depois que o cidadão tira uma foto, o app exibe uma caixa de diálogo perguntando: "Você deseja publicar a foto neste momento?". A técnica de antecipação consiste em, antes de jogar na tela a pergunta ao usuário, já iniciar um processo assíncrono de upload da foto, ou seja, o app já estará enviando a foto para o servidor enquanto o usuário vê a mensagem e pensa se quer publicá-la ou não. Se o usuário levar 3 segundos para pensar, pode ser suficiente para que a foto seja transferida. A decisão do usuário, então, confirmará (ou não) a publicação da foto.
7. Cache
Eis uma técnica que pode ser vista sob vários aspectos. Mas, é inquestionável que o uso de cache é o que torna possível o que fazemos hoje com nossos aparelhos celulares. Para aqueles que não sabem, o cache é uma forma de armazenar dados que permite sua recuperação de maneira muito rápida, praticamente instantânea, se comparado aos métodos tradicionais. Explicando muito superficialmente, os dados que buscamos quando efetuamos uma requisição, via de regra estão gravados em discos, que são dispositivos físicos, cujo acesso depende de deslocamentos de braços mecânicos sobre superfícies magnéticas. Essas buscas geralmente ocorrem na casa dos segundos, o que, embora pareça pouco no contexto humano, no contexto das máquinas é uma eternidade. Então, foi inventado o cache, que nada mais é do que a reprodução de parte dos dados em memória eletrônica. Dessa forma, o tempo para obter as respostas cai para a casa dos milissegundos, permitindo a experiência que temos hoje em nossos smartphones. Acontece que a maneira de aplicação de um cache é também bastante subjetiva. Mas o conceito e a intenção permanecem os mesmos. Uma das formas de implementar cache é na API remota, que é consumida pelo app. Cria-se uma tarefa agendada que extrai a informação de um banco de dados de tempos em tempos e a armazena em memória real. Esta memória (o cache) é, então, exposta via webService. Isso garante um acesso praticamente imediato do app aos dados remotos, pois a consulta ao banco de dados remoto foi antecipada pela API. Outra maneira de implementar cache é no próprio aplicativo. Por exemplo: Na primeira vez que o aplicativo é acionado, é feita uma consulta à API que traz todos os itens disponíveis numa determinada tabela do banco de dados remoto (por exemplo: uma lista de restaurantes). Esses itens são, então, armazenados em um banco de dados local, dentro do aparelho celular, o que constitui um cache local de dados). Esse tipo de cache vai permitir que, mesmo sem acesso à Internet, o aplicativo possa mostrar ao usuário os restaurantes para que sejam avaliados. Cache é essencial.
8. Compatibilidade
Sempre que você tiver aquela vontade irresistível de usar aquele novo recurso fantástico disponível apenas na versão recém-lançada do sistema operacional Android, pense duas vezes. Qual o seu público-alvo? A quantas pessoas deseja que seu aplicativo atenda? Num país como o nosso, embora as estatísticas mostrem que já existem mais celulares do que pessoas, é pouco provável que a maior parte deles sejam aparelhos modernos. Então, compensa utilizar um recurso que vai restringir o uso do seu app apenas aos dispositivos mais novos? Particularmente acho que não. Essa é uma discussão importante, pois durante o desenvolvimento de aplicativos Android, é preciso especificar para qual versão você está programando, o que vai provocar uma limitação no número de aparelhos que suportam o seu app. O resultado é que, se uma pessoa com um celular mais antigo pesquisar o seu app na Google Play Store, se ele não for compatível com o aparelho dela, o app nem ao menos aparece na pesquisa. Eu tenho como filosofia criar apps que funcionem na maior parte possível de aparelhos Android. No uso de mapas, por exemplo, é preciso baixar o "Google Play Services for Froyo", biblioteca que (embora considerada deprecated) é compatível com qualquer modelo de aparelho Android. Aplicativos com mapas produzidos com esta biblioteca funcionarão no mais básico Android (essa biblioteca está incluída em nosso ambiente de desenvolvimento disponível aqui no blog). No momento que se publica o APK na loja, o desenvolvedor recebe um relatório informando o número de dispositivos compatíveis. Recomendo levar este quesito com seriedade. É muito frustrante não poder usar um app por ser incompatível com nosso modelo de celular. Seu usuário também pensará desta forma.
Sempre que você tiver aquela vontade irresistível de usar aquele novo recurso fantástico disponível apenas na versão recém-lançada do sistema operacional Android, pense duas vezes. Qual o seu público-alvo? A quantas pessoas deseja que seu aplicativo atenda? Num país como o nosso, embora as estatísticas mostrem que já existem mais celulares do que pessoas, é pouco provável que a maior parte deles sejam aparelhos modernos. Então, compensa utilizar um recurso que vai restringir o uso do seu app apenas aos dispositivos mais novos? Particularmente acho que não. Essa é uma discussão importante, pois durante o desenvolvimento de aplicativos Android, é preciso especificar para qual versão você está programando, o que vai provocar uma limitação no número de aparelhos que suportam o seu app. O resultado é que, se uma pessoa com um celular mais antigo pesquisar o seu app na Google Play Store, se ele não for compatível com o aparelho dela, o app nem ao menos aparece na pesquisa. Eu tenho como filosofia criar apps que funcionem na maior parte possível de aparelhos Android. No uso de mapas, por exemplo, é preciso baixar o "Google Play Services for Froyo", biblioteca que (embora considerada deprecated) é compatível com qualquer modelo de aparelho Android. Aplicativos com mapas produzidos com esta biblioteca funcionarão no mais básico Android (essa biblioteca está incluída em nosso ambiente de desenvolvimento disponível aqui no blog). No momento que se publica o APK na loja, o desenvolvedor recebe um relatório informando o número de dispositivos compatíveis. Recomendo levar este quesito com seriedade. É muito frustrante não poder usar um app por ser incompatível com nosso modelo de celular. Seu usuário também pensará desta forma.
9. Agilidade
Chamamos os aparelhos celulares de "dispositivos móveis" não é à toa. As pessoas usam seus smartphones na rua, à caminho do trabalho, ou no supermercado, enfim, é preciso entender o contexto em que acontece o uso do aplicativo. O usuário está com pressa, fora de casa, no meio do caminho para algum lugar, as condições de iluminação podem variar (o usuário pode estar na praia, com sol à pino, ou dentro de um vagão do metrô mal iluminado). Portanto, para um app ser considerado adequado, as respostas precisam ser rápidas. Mantenha o foco em responder ao usuário imediatamente.
Chamamos os aparelhos celulares de "dispositivos móveis" não é à toa. As pessoas usam seus smartphones na rua, à caminho do trabalho, ou no supermercado, enfim, é preciso entender o contexto em que acontece o uso do aplicativo. O usuário está com pressa, fora de casa, no meio do caminho para algum lugar, as condições de iluminação podem variar (o usuário pode estar na praia, com sol à pino, ou dentro de um vagão do metrô mal iluminado). Portanto, para um app ser considerado adequado, as respostas precisam ser rápidas. Mantenha o foco em responder ao usuário imediatamente.
10. Simplicidade
Alguns desenvolvedores sustentam uma regra de que no contexto mobile, o número de cliques (toques na tela) não deve passar de três, desde a primeira interação do usuário até a obtenção daquilo que ele procura. De fato, existe uma infinidade de aplicativos altamente complexos que não fazem sucesso porque não é o que o usuário quer. Num aplicativo de ônibus, por exemplo, talvez o usuário não queira traçar rotas especificando origem e destino dos veículos que tem ar-condicionado e rodas de liga leve e teto solar, mas, simplesmente, querem saber onde o ônibus está. Portanto, tenha isso em mente. Mantenha as coisas básicas o máximo que puder. Pense nos aplicativos mais famosos (que têm bilhões de downloads na loja) e confira como são, de fato, simples.
Embora alguns dos itens expostos acima possam parecer não ter relação com performance, no meu entender há vários tipos de "performance". O conceito está sim, sempre ligado a desempenho, o que não significa apenas que o aplicativo é rápido, mas sim que toda uma experiência do usuário tem uma prazerosa fluidez.
Há também alguns aspectos importantes no desenvolvimento de aplicativos que consiste em ter um bom embasamento teórico-filosófico, o que funciona como os alicerces da própria ideia do aplicativo, o que dá sentido a ele.
Este será o tema de nosso próximo post. Não perca!
Alguns desenvolvedores sustentam uma regra de que no contexto mobile, o número de cliques (toques na tela) não deve passar de três, desde a primeira interação do usuário até a obtenção daquilo que ele procura. De fato, existe uma infinidade de aplicativos altamente complexos que não fazem sucesso porque não é o que o usuário quer. Num aplicativo de ônibus, por exemplo, talvez o usuário não queira traçar rotas especificando origem e destino dos veículos que tem ar-condicionado e rodas de liga leve e teto solar, mas, simplesmente, querem saber onde o ônibus está. Portanto, tenha isso em mente. Mantenha as coisas básicas o máximo que puder. Pense nos aplicativos mais famosos (que têm bilhões de downloads na loja) e confira como são, de fato, simples.
Embora alguns dos itens expostos acima possam parecer não ter relação com performance, no meu entender há vários tipos de "performance". O conceito está sim, sempre ligado a desempenho, o que não significa apenas que o aplicativo é rápido, mas sim que toda uma experiência do usuário tem uma prazerosa fluidez.
Há também alguns aspectos importantes no desenvolvimento de aplicativos que consiste em ter um bom embasamento teórico-filosófico, o que funciona como os alicerces da própria ideia do aplicativo, o que dá sentido a ele.
Este será o tema de nosso próximo post. Não perca!
Considerações muito importantes. Sendo um pouco mais rigoroso e baseado nas normas de qualidade, sugiro mudar de compatibilidade para portabilidade.
ResponderExcluir