Concrete Logo
Hamburger button

Desenvolvimento mobile levado a sério

  • Blog
  • 22 de Novembro de 2013
Share

Talvez por sua inerente juventude, o desenvolvimento de sistemas mobile ainda não é tratado com a seriedade que seus similares: backend e web principalmente. Fato é que hoje muitas empresas que entraram no mercado mobile descobriram que é bem diferente fazer um projeto “apenas” para estar neste mercado e fazer um app excelente que se destaca entre os usuários. E por que será isso?

  1. O ambiente de desenvolvimento é completamente diferente: desde a compilação até a distribuição, não há nada que se assemelhe com mobile.
  2. Não há uma fartura de bons desenvolvedores, talvez porque é algo um tanto quanto recente.
  3. Talvez o mais importante seja: por ser novo, não se dá a devida importância a este canal.

Boas práticas do desenvolvimento de software são, em geral, esquecidas no ambiente mobile. Raramente se vê testes nos projetos. Dedicar uma equipe para desenhar e testar o aplicativo é um sonho e integração contínua é um sonho mais distante ainda. Muitos argumentam que não há ferramentas satisfatórias para estas tarefas.

Enfim, tudo isso é balela.

Apesar de ainda imaturo por sua idade, o desenvolvimento mobile está mais do que pronto para quem o quer levar a sério. Qualquer empresa que deseje investir neste canal (que por sinal, já se provou muito rentável) encontrará tudo o que precisa para ter uma plataforma estável com uma manutenção sem dor de cabeça e monitoramento constante.

Para isso, o primeiro passo é ter um ambiente dedicado de desenvolvimento. Ou seja:

  1. Respositórios dedicados para cada ambiente (Android, iOS, Windows Phone, web responsivo/web mobile, Ubuntu Phone? 🙂 )
  2. Um backlog específico para mobile  (idealmente com as mesmas histórias para cada plataforma: iOS, Android, etc) até o ponto que o backlog seja único para o produto como um todo.
  3. Testes, testes, testes e mais testes (não pense nisso como CUSTO, mas como LUCRO).
  4. Um time de QA dedicado (não adianta pedir para apenas os amigos testarem, deve-se ter um fluxo de desenvolvimento que inclua testes constantes)
  5. Integração contínua bem configurada (várias imagens com vários tamanhos e vários cenários de uso sendo testados, maior detalhamento sobre este ponto abaixo)

Normalmente as empresas optam por começar em uma plataforma e ir adicionando plataformas conforme a disponibilidade de recursos. Isso é, em geral, um bom caminho. O único cuidado que se deve ter é não deixar as plataformas com backlogs muito distintos. Uma funcionalidade implementada em uma plataforma e não em outra pode gerar uma dor de cabeça imensa no futuro, seja por causa da manutenção do backend ou por diferenciar as audiências.

O que nos leva ao tópico de testes.

Por quê as pessoas acreditam que não precisa ter testes em mobile?

Não sei… Mas a verdade é que sem testar a chance de ter um aplicativo muito instável em pouco tempo é bem grande. Hoje as plataformas líderes do mercado (Android, iOS, Windows Phone) possuem bom suporte a frameworks de teste seja unitários ou funcionais. Claro, ainda dá para melhorar muito quando comparamos com desenvolvimento backend, mas 2012 e 2013 trouxeram muitos avanços nessa área. Para os testes funcionais é imprescindível que sejam feitos em todas as versões da plataforma. Criar várias imagens, uma para cada versão, é a única forma de garantir estabilidade. Qualquer alteração, por menor que seja, deve começar um novo round de testes.

Fora os testes unitários, incluir um QA para mobile é altamente lucrativo. Mesmo que já se tenha uma plataforma forte de automação de cenários de testes funcionais (usando Calabash por exemplo) nunca se garantirá 100% dos casos. É preciso que alguém acostumado com a aplicação teste o maior número de casos também. Esta pessoa irá ajudar a escrever os cenários, detectar qualquer problema de ambiente entre outras tarefas essenciais.

Por fim, para que todo este processo possa ser automatizado, deve-se utilizar integração contínua. Pois é, IC em ambiente mobile. Muita gente vem lutando para fazer dessa prática algo mais simples e comum no ambiente mobile. Até a Apple lançou recentemente uma forma de se fazer integração contínua com o novo XCode. Só este ponto merece alguns posts dedicados que faremos no futuro.

Em seguida, deve-se ter uma monitoração constante do aplicativo em produção.

Ou seja:

  • Google Play statistics, Google Analytics, Flurry analytics, rastreamento de campanhas de marketing e etc. É comum nós “acharmos” que entendemos o comportamento do usuário mobile, mas este é um grande erro. Deve-se monitorar constantemente a resposta do usuário ao aplicativo, ver plataformas e dispositovos mais críticos para ter na integração contínua, ver qual tipo de campanha de marketing traz maior retorno entre outros vários dados importantes que recebemos de ferramentas de analytics.
  • Deve-se ter um time de comunicação preparado para dar feedback ao usuário. É comum que as empresas abandonem os canais de comunicação para mobile. Reviews negativos no Google Play sem serem respondidos, não ter um canal de feedback fácil para o usuário entre outros erros de comunicação.
  • O Backlog deve se ajustar a esta monitoração constante. Muitas vezes a priorização de histórias muda por causa de reviews entre outras comunicações ou dados do comportamento do usuário

Enfim, hoje é preciso pensar no ambiente mobile como um canal importante e que merece todos os cuidados que temos com o backend e web. As ferramentas existem, então é uma questão de acertar o time correto e dar seriedade para este canal importantíssimo.