Wednesday, August 24, 2011

O conceito dos Mini (& Lean) Apps

Depois que instalei o app do meu banco no meu celular, eu simplesmente não voltei mais a utilizar a página web para acessar minha conta bancária. Mesmo se o computador está na minha frente, eu ainda prefiro pegar o celular. O app do meu banco no meu celular é muito mais prático, conciso e objetivo.

Porque então não seguir os mesmos princípios de um mobile app nos sites para web? Essa é a idéia dos Web Apps (ver também http://en.wikipedia.org/wiki/Web_app).

O website do meu banco hoje é um verdadeiro elefante branco. Possui milhares de informações e funcionalidades, todas entrelaçadas na navegação. Eu posso praticamente fazer quase tudo pelo site que eu poderia fazer na agência bancária. Pelo lado da disponibilidade, isso é uma vantagem enorme. Mas pelo lado da objetividade, o excesso de oportunidades atrapalha.

Observação: Sou cliente de vários bancos diferentes e o website de todos eles possuem essas mesmas características.

Defendo aqui neste post que aplicativos corporativos transformem-se em vários Mini Apps, bastante práticos e objetivos, que desempenham tarefas bem determinadas com simplicidade. O usuário configuraria e utilizaria no seu browser ou no seu desktop, somente suas tarefas mais corriqueiras, quando precisasse delas, se vir a precisar. Tudo configurado de acordo com os seus interesses, assim como são os smart phones.

Vamos a outros exemplos:

Que tal o Microsoft Word sendo um "marketplace" com várias opções de mini aplicativos? Quando você quiser somente criar, abrir, editar, salvar ou imprimir um documento de texto, você utiliza o app principal (simples e prático como um notepad). Mas se você quiser inserir Cliparts, Wordarts, Gráficos, Referências Cruzadas, Símbolos, etc, essas funções estariam em um mini aplicativo a parte, com uma navegação bem mais específica e direcionada, muito mais fácil de usar e o mais importante, disponível somente no caso de você precisar.

E que tal a Intranet da sua empresa como se fosse a tela do seu celular? O app de RH separado do app dos eventos corporativos que é separado da página de contatos dos funcionários. Cada um com a sua navegação própria, sua interface simplificada e suas peculiaridades. Você não precisaria mais navegar por uma porção de links até chegar no seu contra-cheque.

A idéia é que cada Mini App seja um produto à parte dentro de um grande aplicativo. Um produto independente e autônomo. Você digitaria a URL do seu banco no browser e veria na sua home page somente os apps que você escolheu para utilizar. Se você tem cartão de crédito mas não tem investimentos com esse banco, então você visualizaria o app para acessar o seu cartão de forma prática e simplificada. Toda a parte de investimentos desse banco não ficaria visível para você a todo o momento, te confundindo.



Desenvolvendo Mini Apps

Desenvolver aplicativos complexos como sendo um conjunto de Mini Apps é uma enorme facilidade para os usuários. Mas a grande vantagem mesmo está no custo de desenvolvimento.

Com os Mini Apps, a equipe de desenvolvimento pode focar muito mais precisamente nos vários Minimum Viable Products que a aplicação possui, e se eles forem desenvolvidos independentemente um dos outros, com bastante autonomia e seguindo os conceitos de Lean Code, o custo de manutenção desse software pode cair consideravelmente.


Os Mini Apps de LiveSource

Quando comecei a desenvolver o LiveSource eu fui simplesmente adicionando todas as novas funcionalidade ao código fonte sem me preocupar muito com a quantidade de classes e arquivos fontes que estavam sendo criados. Numa questão de pouquíssimos meses, o código de LiveSource tornou-se altamente complexo e de caríssima manutenibilidade. Isso sem falar na interface com o usuário, que a cada nova funcionalidade, a navegação ficava mais confusa e prejudicada.

Foi quando surgiu a idéia de separar o produto LiveSource em vários mini produtos, e desenvolver o que estamos chamando aqui de Mini Apps.

LiveSource original passou então a ser dividido em vários Minimum Viable Products, como por exemplo, um Mini App separado somente para tratar do Product Backlog de um projeto (que passou a chamar-se EasyBacklog), um outro Mini App para gerar e exibir um task board dinâmico (chamado de Live Task Board), um outro para lidar com a geração automática da documentação do código fonte, outro para tratar das métricas do software, e por aí vai.

Figura 1: Os Mini Apps de LiveSource

Observe no canto inferior esquerdo da figura acima os links para acessar os vários mini aplicativos fornecidos pelo site de LiveSource. Cada um possui o seu "mundo" à parte, com interface e código fonte independentes.

. . .

A independência dos Mini Apps de uma grande aplicação deve ser total. A interface com o usuário, a configuração, o código fonte, todos separados um dos outros e, principalmente, autônomos.

A autonomia dos Mini Apps traz automaticamente uma enorme visibilidade para as características individuais do mini produto que ele representa, características essas que muitas vezes ficam desapercebidas quando a aplicação é somente visualizada como um todo, numa grande sopa de funcionalidades.