Apps: uma nova maneira de ver o desenvolvimento de software
Autor: Adriano Azevedo | Publicado: 2012-07-09T21:00:00-03:00



Um dia desses, após uma destas palestras, estava conversando com um professor de um curso de Ciências da Computação e entramos em um assunto interessante: o modelo de desenvolvimento de sistemas, voltado para aplicações complexas e abragentes, típicas do modelo cliente-servidor se aplica ao design de apps móveis? Concluímos que as apps demandam um novo modelo de projeto e acho que vale a pena expor nossos argumentos aqui para validarmos com vocês.

A característica mais marcante de uma app é sua objetividade. Ela tem uma função específica e se atém a ela. É o exemplo prático do conceito de minimalismo em software. Definitivamente, é completamente diferente de um ERP ou aplicação que vemos hoje no modelo cliente-servidor, onde inúmeras funções são executadas pela aplicação.

A app executa uma única função e deve fazê-la bem. Apenas isso. E nos leva a repensar um pouco os princípios do desenho de sistemas. Acostumamos-nos a pensar de forma abrangente e somos treinados para criar aplicações complexas. Nossas práticas e métodos de desenho de sistemas são aderentes à complexidade e, portanto, também são complexos. Tanto é assim que nos últimos anos, devido à velocidade com que TI deve responder às demandas dos negócios, surgiram novas propostas que dessem mais agilidade ao processo, como o “Agile Development”. Bem, falando em simplicidade, vejam este filme do TED, de 2007, onde John Maeda, que escreveu o livro “Laws of Simplicity”, fala sobre simplicidade.





Os softwares atuais embutem tantas funcionalidades que não usamos a maior parte delas. Um exemplo? Peguem o Word e vejam quanto de suas funções são realmente usadas. Um estudo da própria Microsoft em 2006 mostrou que cinco comandos (paste, save, copy, undo e bold) correspondiam a 32% de todos os comandos usados. Eu pesssoalmente uso pouco mais que meia duzia de comandos no meu dia a dia e apenas de vez e quando uso algo mais sofisticado. Afinal escrever um texto que vai para um blog não demanda nenhuma sofisticação artística do editor de textos, apenas conteúdo que tenha algum valor. Um ERP também é uma peça de software extremamente complexa. Precisamos de cursos de várias semanas para saber usá-los. Claro, a proposta deles é integrar todos os processos de negócios, o que indiscutivelmente traz inúmeros benefícios para as empresas.

Mas, em smartphones precisamos integrar todos os processos ou podemos pensar de forma diferente, olhando funções específicas e criando um app que seja ótimo para satisfazer esta única e determinada função?

Vamos exemplificar a ideia. No meu Android instalei um software chamado Camera360. O que ele faz? Tira fotos, claro, mas permite criar efeitos especiais simples, mas interessantes. Obviamente não é uma ferramenta profissional, mas atende à imensa maioria das pessoas que, como eu, gostam de tirar uma foto e criar um efeito especial divertido. Just for fun… E você não precisa de nenhum manual para usá-lo. Isto é simplicidade.

Outro aspecto interssante das apps é que ao contrário das aplicações tradicionais, onde você tem um road map que mostra suas novas funcionalidades no futuro, aumentando, em consequência, a complexidade pois muitas destas funcionalidades tem pouco a ver com a proposta inicial do software, elas devem conservar a simplicidade. Ou seja, voltando ao Camera360 ele adiciona, a cada nova versão, alguns novos efeitos, mas mantem-se fiel a sua proposta de ser unicamente um software para tirar fotos. A resultante? Uma app só tem versao 1. As evoluções são ajustes finos, melhorias de performance e correções de bugs que não alteram o objetivo básico do software. Comparem com um Office, por exemplo, e vejam as diferenças em novas funcionalidades entre a versão que veio com o XP e a 2007. E quantas destas novas funcionalidades usamos realmente no nosso dia a dia?

A conversa girou sobre estes assuntos e concluímos que as apps precisam ser realmente simples. Primeiro porque muitas têm vida curta. Se olharmos o que baixamos para nossos smartphones, vemos que usamos no nosso dia a dia poucas apps. Como muitas são gratuitas, fazemos o download por impulso e as usamos uma ou duas vezes. Depois as deixamos de lado e, às vezes, as desinstalamos. É provavel que tenhamos umas 60 a 80 apps em nossos smartphones, mas usamos constantemente apenas uma meia dúzia. Outra meia dúzia usamos eventualmente e as outras estão lá porque simplesmente não as desinstalamos.

Além disso, as telas são pequenas e colocar muita coisa nelas desestimula seu uso. Diferente do paradigma cliente-servidor onde aproveitavamos as telas grandes do PC para criar uma infinidade de abas e ícones para as aplicações.

Outro desafio é que a experiência do usuário deve ser bastante similar, qualquer que seja o hardware que ele usa. Assim o principio do menor denominador comum deve ser aplicado ao projeto de apps. Evitar ou não o uso de alguma funcionalidade que apenas um smartphone específico implementa, deve ser bem balanceado pelo projetista.

Enfim, as apps representam uma nova maneira de ver o desenvolvimento de software. Se quisermos explorar este potencial para o ambiente corporativo, devemos ter em mente que elas terão que observar o princípio da simplicidade, que para nós, que paradoxo, é complexo de observar. Os sistemas abrangentes e integrados estarão na retaguarda, abrindo suas funcionalidades via arquitetura baseada em serviços (olhem o SOA) e APIs para explorarmos estes serviços. Mas, na ponta, as apps, devem ser desenhadas para aproveitar apenas o essencial de cada serviço. Elas não devem ser projetadas para serem novos ERPS, olhando processos integrados, mas devem ser escritas para criarem uma nova experiência do usuário para uma única, simples, mas útil atividade de negócios.