Na preparação de uma recente palestra sobre mobilidade, acabei pesquisando um vasto material referente ao desenvolvimento de apps. E gostaria de compartilhar os aspectos que considero mais importantes. Isso será feito em dois artigos. Neste, abordarei alguns itens relativos ao processo de desenvolvimento de apps e, no próximo, teremos um debate mais detalhado do modelo a ser desenvolvido, se app nativo, HTML5 ou híbrido.
Os apps mudam de forma significativa a interação das empresas com seus clientes. Com milhões de apps desenvolvidos nas apps stores da vida, a impressão que temos é que desenvolver um app é simples e qualquer um pode desenvolver um. Sim e não! Sim, caso você queira desenvolver um app focado no B2C, sem maiores pretensões de integração com aplicações já existentes na empresa e apenas usando APIs facilmente encontradas, como Google Maps. É bem mais fáacil que escrever um monolítico e gigantesco ERP… Por outro lado, um app corporativo envolve outras facetas, como integração a sistemas já existentes, garantia de alta qualidade (é o nome da corporação que está em jogo), garantia de segurança e privacidade, e diversos outros fatores que criam um cenário bem mais complexo que parece quando apenas olhamos a superfície do oceano…
Vamos analisar algumas variáveis que envolvem um app corporativo. Os clientes de uma empresa utilizam uma variedade bem grande de dispositivos e querem usá-los para acessar o app. Cenário bem diferente do mundo desktop, no qual basicamente criava-se o aplicativo para rodar em Windows (e às vezes em Linux), e acessível por dois ou três diferentes navegadores. Limitar o acesso a uma única plataforma móvel pode significar perda de negócios.
Outra característica do dinâmico ambiente móvel é a velocidade com que os clientes esperam novas funcionalidades. O mercado de apps é balizado por ciclos de desenvolvimento muito rápidos, medidos em semanas, e não mais em meses. Os fornecedores de smartphones e tablets atualizam seus sistemas operacionais ou lançam novos produtos a cada 12-18 meses, e isso demanda que os apps explorem as novas funcionalidades disponibilizadas, tão rapidamente quanto os usuários as utilizam. Quando comparamos com os tradicionais longos ciclos entre lançamentos de novas versões do Windows, por exemplo, é uma mudança radical.
Qualidade é outra variável fundamental. O mercado de apps já se acostumou a classificar os apps pelo rating de 1 a 5 estrelas e, se o app não for 5 estrelas, a divulgação viral negativa circula muito rapidamente. Os usuários não aceitam bugs e querem ter experiência muito positiva. Se isso não for alcançado, não se tem as 5 estrelas… Além disso, no uso de um app, a primeira impressão é a que fica. A primeira versão não pode ser de segunda classe…
Temos um desafio e tanto: conciliar velocidade de desenvolvimento com alta qualidade de código e, ao mesmo tempo, proporcionar uma experiência de uso rica e positiva para, pelo menos, os principais dispositivos disponíveis no mercado. E esses dispositivos tendem a variar cada vez mais: estão vindo por aí óculos, relógios, consoles de automóveis etc. Isso nos leva a repensar se os modelos e as práticas de desenvolvimento de sistemas que aprimoramos por décadas, que sustentam o modelo cliente-servidor em desktops, continuam válidos para o mundo dos apps.
Vale a pena ler o texto “A Mobile Application Development Primer” (pdf). Embora alguns princípios básicos sejam mantidos, temos que olhar todas as etapas dos processos atuais de desenvolvimento de sistemas e eliminar os pontos de atrito. O que pode ser feito da forma mais rápida possível, sem perder a qualidade do código?
Uma mudança é a entrega em versões com funcionalidades adicionais, mas em ciclos pouco espaçados entre elas. Por exemplo, uma empresa de seguro saúde pode entregar uma primeira versão com a lista de médicos de determinada especialidade próximos do ponto de onde se encontra o cliente (GPS…). A segunda versão mostra um mapa (Google Maps) com a localização do consultório e como chegar lá. E a terceira utiliza realidade aumentada, e você aponta a câmera do seu smartphone para uma rua e o app localiza os consultórios e clínicas que estão localizadas nela.
Outra mudança no processo de desenvolvimento é a presença atuante de novas atividades, como profissionais envolvidos em UI (user interface) e UX (user experience). Uma discussão interessante sobre as diferenças ente UI e UX pode ser vista aqui. Estamos falando de skills diferentes do desenvolvedor típico. Este, na minha opinião, conhece profundamente tecnologia, mas não tem bons skills para design.
Um app corporativo não pode viver isolado dos sistemas da corporação. Deve obter dados deles e criar um contexto em que as características do dispositivo como geolocalização, acelerômetros etc. são combinadas com os dados que a empresa mantém sobre o cliente para disponibilizar a melhor experiência de uso possível.
E não poderia deixar de mencionar o desafio dos testes. Com a diversidade de dispositivos e o contínuo ciclo de atualizações, aliados às exigências de alta qualidade dos apps, os testes passam a ter um papel de extrema importância. Merece todo um estudo específico. Alguns pontos são interessantes: por exemplo, disponibilizar a aplicação internamente em uma app store privada, para feedback de funcionários, antes de disponibilizá-la para os clientes.
Enfim, desenvolver apps para o mundo móvel cria desafios, mas também abre novas oportunidades profissionais. Demanda uma nova curva de aprendizado. Mas, sinceramente, vale a pena.



