Porque você precisa de um aplicativo mobile?

Muitas empresas estão investindo dinheiro em aplicativos mobile. De bancos a fabricantes de sabão, todo mundo quer ter sua bandeira fincada nas lojas de aplicativos mobile. Este movimento tem um quê de corrida do ouro, com muita gente desenvolvendo aplicativos mobile porque todo mundo está fazendo, sem uma definição clara de objetivos e, o que é mais importante, sem um estudo de alternativas para se atingir esse objetivo.

Existe uma alternativa às aplicações mobile: sites mobile, e eu recomendo que você avalie, antes de iniciar a construção de uma aplicação mobile, se seu problema não pode ser resolvido por um site mobile.

Campus Online Visie, um exemplo de aplicativo web mobile

Sites mobile são multiplataforma. Aplicativos para iPhone não rodam em Android, aplicativos para Blackberry não rodam em Windows Phone. Desenvolver um aplicativo que funcione nessas quatro plataformas significa desenhar uma vez só, mas construir quatro vezes. Em linguagens de programação diferentes, com APIs diferentes. Disponibilizar seu aplicativo nas diversas lojas mobile também significa encarar várias exigências burocráticas. Um bom site mobile, por outro lado, funciona nas quatro plataformas citadas acima, e tem grande chance de funcionar em qualquer outra, sem esforço extra.

Sites mobile usam uma base de código que você aproveita para desktops. Se você já tem um site ou aplicativo web que faz o que você precisa, provavelmente, para ter um site mobile, será preciso mexer apenas no que os desenvolvedores chamam de “camada de apresentação”. Se você ainda não tem um site ou aplicativo web e decidir construí-lo mobile, vai aproveitar boa parte do seu investimento se no futuro decidir tê-lo também funcionando também em computadores.

Com HTML5, sites mobile podem fazer quase tudo o que uma aplicação mobile faz, incluindo acessar o GPS, ler a orientação do dispositivo (se o telefone está em pé ou deitado), guardar dados no telefone, desenhar gráficos, transições, animações, tocar áudio e vídeo, e até funcionar offline.

Quando você precisa de um aplicativo? Existem, claro, situações em que construir um aplicativo é essencial. Você vai precisar de um aplicativo se:

* Está fazendo um jogo pesado
Ainda é muito difícil, com HTML5, construir interfaces tridimensionais, com gráficos de alta qualidade, muito movimento, respostas rápidas e interação com som.

* Precisa interagir com o telefone
Não há uma maneira de um site mobile ler a agenda de contatos do telefone, ou as fotos da galeria, por exemplo. Embora hajam maneiras de, por exemplo, disparar uma ligação telefônica a partir de um link ou botão.

* Precisa de interação precisa com o acelerômetro
Sites mobile hoje apenas sabem se o telefone está em pé ou deitado, e mais nada. Não dá para fazer um aplicativo controlado pelo acelerômetro assim, como uma corrida em que o volante é o próprio telefone.

* Pretende cobrar por seu aplicativo
Existem alternativas para se cobrar pelo acesso à aplicação ou vender conteúdo dentro dela, e fazem todo o sentido se seu aplicativo for realmente multiplataforma, acessível do computador e do celular.
Se você pretende cobrar pelo uso do próprio aplicativo, é bom avaliar se usar as lojas de aplicativos, em que o usuário compra com um clique, já tendo seu cartão de crédito cadastrado, não é a melhor solução. Nesse caso, as lojas de aplicativo também vão dar visibilidade ao seu aplicativo.

* Seu aplicativo precisa rodar em background
Se seu aplicativo precisa de um serviço rodando em segundo plano, você não conseguirá fazer isso com um site. Por exemplo, se seu aplicativo deve avisar o usuário cada vez que ele se aproximar de um local específico, mesmo que ele esteja fazendo outra coisa no telefone ou esteja com o telefone no bolso.

Site do Twitter mobile: quase completo, mas sem notificações em background

Há, por outro lado, uma diversidade de situações em que um bom site mobile pode substituir, com vantagens, um aplicativo. Quando o aplicativo só acessa seu site, como fazem muitos aplicativos de internet banking, que são exatamente iguais o site mobile do banco. Mesmo que seu site seja um aplicativo web razoavelmente complexo, com animações, gráficos e interações, é muito provável que seja possível fazê-lo funcionar em dispositivos móveis, atendendo a uma variedade de plataformas com um esforço de investimento só.

Quando o aplicativo é só um sistema de cadastro e consulta, realiza cálculos, gera relatórios, etc. Ou quando se trata de uma consulta a serviços web, um mecanismo de chat, um catálogo de produtos, um e-commerce, um sistema de mapas e rotas, um gerenciador de conteúdo ou qualquer outro negócio que já tenha sido bem resolvido com uma interface web.

Avalie alternativas antes de construir um aplicativo mobile. Talvez você possa, com um site mobile, atingir um público muito maior, com um investimento menor, e ainda tenha uma drástica redução nos custos de manutenção e atualização do aplicativo.

Como você aprendeu a programar?

Começamos a trabalhar com treinamentos quase por acidente. Estudamos padrões web e muito javascript porque isso nos tornava mais produtivos, e as pessoas começaram a nos pedir indicações de onde aprender isso. Como eu sempre gostei de ensinar, começar foi fácil. Naturalmente nos focamos em treinamentos de nível intermediário e avançado. Quem chegava a um de nossos treinamentos já era profissional da área.

Falando especificamente dos cursos que eu ministro, Javascript Crossbrowser, Ajax e Python, foram feitos para quem já é programador. Não ensinamos lógica de programação, sintaxe do Javascript ou a estrutura básica do desenvolvimento web.

Agora muitas pessoas têm nos procurado para saber como aprendem a programar, e isso tem me colocado uma grande interrogação na cabeça. Como ensinar alguém, de verdade, a programar? O mercado está cheio de cursos de “PHP básico”, “Javascript básico”, “Delphi básico” e “Qualquer Outra Linguagem Básico”. Mas esse não é um bom jeito de se ensinar programação. É impressionante a quantidade de pessoas por aí que fizeram o curso básico, o intermediário e o avançado, e nunca aprenderam programação de verdade. Infelizmente, a esmagadora maioria das faculdades também não está cumprindo o seu papel.

Programação é muito mais do que saber comandos e técnicas de uma linguagem, é um jeito de pensar. É como jogar xadrez. Todo mundo que aprendeu de verdade a jogar xadrez, passou por duas etapas. Primeiro, aprendeu as regras, como se mexe cada peça, como se faz roque, en passant, promoção de peões, etc. Depois de tudo isso, finalmente começou a aprender a jogar.

Aprendi o movimento das peças com dez anos. Aprendi a jogar com catorze. Meu pai tinha uma farmácia e eu trabalhava meio período como entregador. Os negócios não iam muito bem, o que significava que eu tinha muito tempo livre. Foi quando conheci meu tutor. Era um senhor aposentado, que tinha ainda mais tempo livre do que eu, e gastava parte dele com um dos passatempos prediletos de muitos aposentados: comprar remédios. Um dia me viu com um tabuleiro, e perguntou se eu queria jogar.

Levou mais de seis meses para que eu ganhasse a primeira partida. Foram seis meses que ele passou me ensinando, sem me dizer o que estava fazendo. Repetia a mesma abertura dezenas de vezes, até que eu conseguisse me defender dela. Em seguida, começava com outra abertura.

Imagino uma escola de programação assim. Um lugar onde você é desafiado com um tipo de problema até conseguir resolvê-lo bocejando, aí partimos para outro tipo. Uma “academia” de programação, um lugar para se ensinar a pensar, a resolver problemas.

Sonho com essa idéia desde o dia em que a tive.

Buzzca

Mais uma novidade, senhoras e senhores: Buzzca, um diretório de blogs e podcasts brasileiros, da Riot.

A Visie fez todo o desenvolvimento server-side, e a programação Ajax, bem como o treinamento do pessoal de programação da iDeal Interactive que mantém o site. Foi um projeto muito divertido e instrutivo. Desenvolvido em Python+PSE, em pouco mais de um mês, conta com um robô de RSS, um cadastro de blogs e podcasts, uma interface para leitura de feeds, um cadastro de favoritos e uma porção de outras coisinhas.

Do rascunho inicial do banco de dados ao site no ar, o desenvolvimento levou cinco semanas, seguido de um breve período de ajustes de performance e otimização. Está hospedado em Linux, com banco de dados MySQL. O robô, a parte em que eu mais me envolvi, é capaz de indexar e manter atualizados no servidor atual até meio milhão de feeds, o que significa alguns bilhões de transações por dia. (Sim, nós fizemos o teste ;-) )

Obrigado ao pessoal da Riot e da iDeal por escolherem e confiarem na Visie. E pela chance de participar de um projeto interessantíssimo, daqueles que nos fazem perguntar se é mesmo justo que sejamos pagos para fazer algo tão divertido. ;-)

De minha parte esta experiência foi fantástica! Tive toda orientação necessária pra me “virar” com uma linguagem excelente, além de conhecer na pratica novas metodolodias que otimizam muito o nosso trabalho.” – Samir Braga, desenvolvedor do Buzzca.com.br