Mindset Mobile: Características dos smartphones

Larissa Barra
Desenvolvimento ágil | Thoughtworks
8 min readSep 18, 2018

Mindset. Palavrinha gringa bonita para definir o conjunto de atitudes ou posturas mantidas por alguém. Para sair do mundo do backend e entrar no mundo mobile, tive que adotar vários novos hábitos e pensar em um monte de coisas para desenvolver uma funcionalidade; coisas que nem me passavam pela cabeça antes.

Como é um universo bem grande e novo pra muita gente, eu e mais duas pessoas da minha equipe decidimos fazer uma série de posts contando um pouco sobre como é fazer essa transição para o desenvolvimento de aplicações móveis. Vamos começar falando sobre algumas características dos smartphones — e dos principais sistemas operacionais móveis do mercado — que devem passar pela sua cabeça ao desenvolver um app.

Características dos smartphones

Uma tela, uma ou duas entradas e poucos botões que formam um dispositivo que cabe no bolso. Para a maioria das pessoas, isso é um smartphone, certo? Bem, se você faz parte da equipe de desenvolvimento de uma aplicação móvel, seja qual for seu papel, o smartphone precisa ser muito mais do que isso. Desde a ideação, passando pela especificação, desenvolvimento e, por fim, a entrega, algumas características dos smartphones devem ser levadas em conta para ter uma aplicação bem sucedida.

Esse sucesso envolve, basicamente, manter as pessoas que baixam seu app sempre felizes. Talvez essa tenha sido a primeira grande mudança para mim ao adotar o mindset mobile: o foco passa a ser em pessoas. Você pode até ter um cliente para quem desenvolve o app, mas o cliente desse cliente é o público; e esse público é numeroso, diverso e exigente, muuuito exigente. E #somosTodosPúblico: basta prestar atenção na nossa própria reação quando um app quebra no meio do uso.

Para começar a nortear os pensamentos de “que características são essas afinal?”, aqui vai uma lista de coisas que podem te render apenas uma única estrelinha na avaliação do seu aplicativo se você ignorar:

Pouca memória
A memória é uma das coisas mais limitadas de um smartphone. Um app que precisa de muita memória para funcionar é um forte candidato a ser fechado pelo sistema operacional quando estiver rodando em plano de fundo, ou causar o fechamento de outros quando estiver ativo. Se somarmos possíveis perdas de dados a esses fechamentos inesperados, é uma boa receita para um comentário pouco amigável e muito curtido nas lojas.

(imagem de alerta do Android avisando que a aplicação parou)

Pouco processamento
Gráficos perfeitos ou muitos cálculos complexos podem te custar uma fatia de audiência. A capacidade de processamento dos smartphones não é equivalente à dos servidores, e quanto maior essa capacidade, maior o gasto de bateria. Deixar seu app responsável por tarefas exigentes pode fazer com que ele acabe não valendo a pena usar.

Pouco espaço em disco
De que adianta ter uma aplicação maravilhosa, robusta, que tem todas as funcionalidades que você imaginou, se ela é muito grande e o usuário não tem mais espaço no celular para baixar? A otimização de espaço em disco tem que ser levada a sério, a não ser que você queira seu app no topo da lista do que apagar para poder tirar mais fotos.

(imagem de alerta do iOS avisando que o armazenamento está quase cheio)

Pouca bateria
A duração da bateria hoje é um dos maiores problemas de quem usa um smartphone, e qualquer app que consuma muita vai ser — e, provavelmente, permanecer — fechado. Por isso, se o seu aplicativo for daqueles que subtrai 5% de bateria a cada 15 minutos, é melhor começar a otimizar o que está acontecendo em plano de fundo.

Internet lenta, instável ou indisponível
Quando estamos sem conexão com a internet, é normal não esperarmos que um website funcione. Mas raríssimos são os casos em que está tudo bem um app não funcionar. Se o funcionamento da sua aplicação depende de conexão, ou se o consumo de dados é muito alto, cuidado: as chances de ter um público frustrado são altas.

(imagem de uma mensagem do Safari dizendo que é impossível abrir a página porque o iPhone não está conectado à internet)

Nós podemos encarar a lista acima como problemas ou podemos encarar como parte do nosso contexto e encontrar formas de contornar essas limitações. Uma aplicação móvel vai muito além do que está instalado no smartphone de alguém. Existe toda uma estrutura por trás: o backend cuida disso. Devido aos recursos limitados do telefone, o ideal é um mundo em que os serviços sejam mobile first, e que o app em si seja uma capa de apresentação que receba o que deve ser apresentado já mastigado e sem sobras, só o necessário. Sendo assim, que tal deixar as buscas em uma cache no servidor e os cálculos feitos pelo seu BFF?

Como a aplicação móvel é uma estrutura completa e complexa, sua arquitetura tem que ser planejada levando todas essas questões em conta. E não me refiro apenas à arquitetura do backend, não! A arquitetura do frontend e a experiência de usuário também dão pano pra manga quando analisamos todas as possibilidades… e restrições.

Quando pensamos na interação, por exemplo, é possível que pensemos primeiro no toque. Mas nunca esqueça que, em um smartphone, o toque nunca é apenas o "clique". Também temos vários gestos, alguns que estamos acostumados — por exemplo, o swipe para os lados para navegar entre itens, os dedos fazendo uma pinça para aproximar — e outros nem tanto — como deslizar o lado da mão por toda a tela para tirar um print da tela (tive um telefone que funcionava assim e passei muito tempo sem saber como fazer até encontrar instruções na internet).

Também temos comandos de voz, leitura de impressões digitais, deteção de rosto, recursos de realidade aumentada… e temos que ter cuidado ao usar cada tipo de interação e em quais funcionalidades queremos utilizá-los, para que nossa aplicação se mantenha sempre compatível e acessível.

Uma aplicação que pode ser controlada por voz pode ser de grande ajuda para pessoas com alguma dificuldade motora, porém não podemos fazer com que dependa somente da voz sem excluir uma parcela do possível público. Uma interface gráfica com elementos bem dimensionados e posicionados pode ser muito amigável para interagir com o toque, mas se não tiver sido estruturada da forma certa, uma pessoa que usa leitor de tela não vai entender a informação que você quer passar. Sempre precisamos pensar em uma alternativa para cada forma de interação com nosso app para manter a acessibilidade — equipes diversas ajudam muito nisso!

Por sorte, os dois sistemas mais presentes no mercado, Android e iOS, possuem diretrizes de design que ajudam muito na elaboração da interface. O guia da Apple é o Human Interface Guidelines, um conjunto de diretrizes super completo que está disponível inclusive para desenvolvimento de aplicações para Apple Watch e Apple TV, além de celulares e notebooks. Já a Google, atualmente, disponibiliza o Material Design, um guia que vai além de ensinar como estilizar seus elementos e chega até a dar dicas de como se comunicar efetivamente com as pessoas usuárias! Um bom exemplo é esse da imagem a seguir:

(imagem mostrando duas mensagens para o usuário, a primeira sendo “preparando vídeo” e a segunda sendo “buferizando”, e comentando como se deve utilizar uma linguagem simples e acessível para todas as pessoas, como na primeira mensagem)

Vale a pena dar uma olhada nesses guias e salvar nos favoritos, porque tem muitas dicas sobre tantos temas diferentes que nem dá pra lembrar de todos na hora de desenvolver. Eles vão, por exemplo, te lembrar que para campos numéricos, podemos subir um tecladinho só de números, não precisa ter letras! Ou que cada sistema tem seus elementos nativos que a gente que usa está acostumada a ver, e usar outro elemento para representar a mesma funcionalidade pode parecer estranho.

Ainda bem que existem guias para nos ajudar, porque montar uma tela que fique bem diagramada e acessível para qualquer pessoa não é fácil. Lembra do conceito de responsividade da web? Pois continue com ele em mente, porque no celular é a mesma coisa. Para lidar com responsividade em iOS é um pouco mais fácil, já que a quantidade de tamanhos de tela e de versões do sistema é limitada. Mas em Android… a coisa complica. É o mesmo sistema operacional utilizado desde relógios até TVs. A quantidade de tamanhos de tela diferentes é enorme. A quantidade de versões do Android e ROMs personalizadas também. E aí tudo tem que ser muito bem pensado, tamanhos, posições e conteúdo, para fazer caber sem faltar ou sobrar espaço demais. E quando você monta algo super legal e lindo e usa uma coisinha diferente que só… alguns telefones não tem suporte a essa funcionalidade.

E assim, entramos em outra questão que não pode ser esquecida ao desenvolver uma aplicação móvel: existe muita fragmentação no mercado. Marcas, modelos, tamanhos, versões do sistema. Esses gráficos de um relatório da Open Signal de 2015 e da StatCounter esse ano dão uma ideia do tamanho do problema:

(gráfico mostrando a comparação de tamanhos de tela de dispositivos iOS)
(gráfico mostrando a comparação de tamanhos de tela de diferentes dispositivos Android)
(gráfico mostrando a presença de cada versão do iOS no mercado. Cores modificadas para melhor visual)
(gráfico mostrando a presença de cada versão do Android no mercado. Cores modificadas para melhor visual)

Vale a pena acessar os link para ver os nomes, marcas, modelos e versões mostrados nos gráficos.

A questão da fragmentação altera desde a geração de conteúdo até os testes. Você pode ter uma frase que em inglês tem X caracteres, em português tem X + 30 e já não cabe mais na tela. Ou uma interface bem limpa, que numa tela de iPhone SE fica linda e numa tela de iPhone X deixa um vazio enorme. Ou dois telefones Android diferentes com a mesma versão do sistema, mas um tem suporte a impressões digitais e o outro não. As especificações técnicas de memória e processamento, por exemplo, também variam muito e seu app deve suportar essas variações. E isso toma tempo de análise, desenvolvimento e testes, muitos testes.

Bem, depois de um textão desses, espero ter conseguido deixar um gostinho da diversidade de ideias / características / problemas que uma equipe de desenvolvimento de um app vai enfrentar. Fazendo funcionar, fazendo caber, se fazendo entender e torcendo a cada entrega. Parece muito… e é mesmo!

Pessoalmente, eu me sinto uma usuária mais empática depois de começar a trabalhar com mobile. Como nem tudo são flores, ainda tem um mundo de gente que a gente tem que agradar! Eu aqui, esperando ter agradado e agradecendo muito a audiência, com essa deixa, deixo vocês com os posts da Marcella e do Bruno, os próximos da nossa série de Mindset Mobile:

Obrigada, gente! Dúvidas ou trocas de ideias, é só me chamar! :)

--

--

Larissa Barra
Desenvolvimento ágil | Thoughtworks

Engineer at Spotify, enthusiastic about many things, curious about everything // Desenvolvedora no Spotify, entusiasta de várias coisas, curiosa por quase todas