Aplicativo ou WebApp?


(Rafael Nepomuceno) #1

Bem, é uma pergunta retórica. O que eu quero é expressar minha opinião e saber o que vocês pensam também, saber se não é paranóia.

Penso que WebApps estão no fim de carreira, uma vez que é impensável lançar uma ideia, um serviço - não incluindo ferramentas e sistema para desenvolvedores -, sem que os carros chefes sejam aplicativos Mobile. E aí, ao invés de criar uma WebApp (que já tem que ser responsiva, porque vai ser acessada pelo celular), cria-se uma Home Page onde a função principal é somente hospedar os botões "Available on Google Play/App Store"

Sou dev front-end,
Pegando a vibe do Ionic/Phonegap
Mergulhando em Android Dev

E pensando na vida...


Vale a pena - Browser Acesso .VS APP
(Diego Eis) #2

@Rafael_Nepomuceno Minha resposta é grande, não é definitiva e na verdade é um post que não foi publicado em lugar nenhum por que é um rascunho bem do bagunçado com ideias jogadas! Segue aí! :wink:

Web ou Nativo

Essa discussão é bem velha e sim, a web tem perdido desde sempre, por vários motivos, desde a incapacidade de manipular o hardware do aparelho até performance. Eu sempre fui um defensor de fazer websites totalmente responsivos, mobile first, levando em consideração todas as boas práticas e blá blá blá. E aí está um dos erros: um website é diferente de sistemas e produtos.

Quando pensamos em um produto, muito provavelmente a performance e a fluidez de uso vai importar demais… tanto que será motivo decisivo para vários gerentes e diretores de empresas optarem por produzirem Apps e não investirem em uma versão responsiva inteligente. Digo inteligente, porque existem diversas soluções para aumentarmos a performance de carregamento, renderização, quantidade de requests e uma série de outras coisas, fazendo com que a web se aproxime mais da experiência nativa.

Mas na verdade estamos discutindo o assunto errado. Discutimos a vida inteira se os nossos produtos precisam ou não serem instalados nos aparelhos ou se devem ser consumidos pelo browser, via web, quando na verdade temos que discutir a tecnologia usada para desenvolver esses produtos.

Um sistema baseado em web, somente responsivo, nunca vai ter a performance igual aos de aplicativos nativos. Não como a web é construída hoje. Isso pode mudar com uma série de boas práticas e com as mudanças que web tem recebido com o tempo, como a vinda do HTTP2.

Essas boas práticas podem ser aplicadas em Apps Híbridas ou até mesmo em seu sistema responsivo hoje, que nem vai ser instalado como app nos aparelhos, mas acessado normalmente pelo browser.

Um pitaco sobre as Apps Híbridas

Uma App Híbrida é instalado no aparelho, como um aplicativo nativo, mas são aplicações que rodam no browser nativo do próprio, usando UIWebView se for iOS e a WebView se for Android. Elas são desenvolvidas em HTML, CSS e JavaScript (sim, igualzinho a sua aplicação online) e são empacotadas em uma aplicação nativa. Existem várias ferramentas que fazem isso, o Cordova é um exemplo.

As vantagens são todas as que a App nativa tem, mas com algumas outras como: desenvolver uma vez só e distribuir para todas as plataformas. O design é igual para todas as plataformas. Você pode reutilizar código HTML, CSS e JavaScript do seu produto existente.

Claro, eles não são tão rápidos como os aplicativos nativos por que ainda dependem dos motores de renderização dos browsers de cada plataforma, mas são bem mais rápidos que um sistema acessado pelo browser normal.

Equipes

Quando falamos em desenvolver apps nativas, falamos de ter uma equipe (ou várias) que programe em linguagens como Java, ObjectiveC e Visual Basic.

Há também os designers, que precisam entender bem as guidelines das principais empresas, entendendo bem as regras de uso de ícones, cores, tipografia, fluxos, estrutura etc. Essas guidelines costumam ser levadas a sério, principalmente quando se trata de Apple.

Outra alternativa é ter várias equipes especializadas em plataforma específicas. Nesse caso o grande trabalho é garantir a comunicação entre as equipes para garantir homogeneidade no lançamento de features, mudanças de layouts e etc.

Muitas empresas tem adotado uma terceira alternativa: contratar uma consultoria, que provavelmente vai te cobrar horrores para o primeiro desenvolvimento e depois para atualizações. Essa é uma boa abordagem para caso você não tiver ninguém dedicado dentro de casa desenvolvendo os Apps.

Escolher uma das opções vai depender da sua estratégia, claro. Se as Apps não são o seu negócio principal, mas você precisa ter alguma coisa, contratar uma consultoria é o ideal. Agora, se com o passar do tempo você vai querer dar mais atenção para as Apps, é melhor começar a pensar em equipes alocadas. Talvez iniciar o foco em uma plataforma para só depois abraçar a segunda.

Nativo: o problema do Design

Um grande problema dos Apps nativos é a heterogeneidade dos designs das plataformas e do seu produto. Na verdade isso não envolve apenas design, mas envolve também em grande parte interações. A não ser que seu produto tenha todos os princípios do Material Design ou seja igual aos designs feitos pela Apple, ele nunca não será parecido com a interface dos aparelhos.

Vantagens da Web

  • Muitos dos apps que se dizem "nativos” são feitos de forma híbrida: usando HTML, CSS e JS
  • A performance do DOM é o grande problema. o dom nunca será rápido o suficiente
  • O problema de performance é totalmente estinguido quando usamos frameworks como React
  • Com ServiceWorks os problemas de manipulação de fratures do aparelho praticamente some
  • o design em web apps é único e consistente
  • Existem sistemas que simplesmente não precisam de aplicativos nativos
  • nao estou discutindo se você precisa ou não de um aplicativo, estou discutindo com qual tecnologia fazer o aplicativo

https://www.linkedin.com/pulse/native-vs-web-applications-jacob-clark

http://readwrite.com/2015/02/27/native-vs-web-apps-ceasefire

http://developer.telerik.com/featured/front-end-driven-applications-new-approach-applications/


(Rafael Nepomuceno) #3

Caramba @diegoeis. Uma resposta digna de Tableless, o que me faz muito honrado :point_up:

Eu tenho muita fé na Web. Penso que o caminho evolutivo do desenvolvimento mobile é código único / plataromas multiplas. E nesse quesito, a Web é o caminho apontado, pela flexibilidade, leveza, por tudo. Problema de performance é questão de tempo.

Veremos os proximos capíulos dessa jornada!


Devo migrar para área do desenvolvimento mobile?
(Sérgio Lopes) #4

Vou botar mais lenha na fogueira pq discordo de alguns pontos do @diegoeis e da premissa inicial do @Rafael_Nepomuceno. Post longo tbm. E filosófico :stuck_out_tongue:

O que diferencia as Apps nativas das Web Apps?

Vários pontos o @diegoeis falou, e vários são comumente falados por aí. Uma lista rápida das vantagens das Apps:

  • Acesso a recursos de hardware;
  • Experiência offline;
  • Ser instalável na home (engajável);
  • Encontrável na loja de Apps (descobrível);
  • Performance melhor;
  • UX otimizada pra plataforma.

Muitas dessas coisas já foram resolvidas na Web. Você acessa quase todo tipo de hardware na Web (só casos muito específicos que não). Offline funciona há vários anos com AppCache em todos os browsers. Agora tem os ServiceWorkers tbm, que além disso estão abrindo portas até pra Push Notifications e Background Sync.

Web Apps são instaláveis desde o iOS 1 (saudoso iPhoneOS). Agora com a Manifest API do W3C, tá melhor ainda. Já consigo instalar WebApps pela loja usando FirefoxOS, Windows Mobile, BlackBerry FireOS e outros. Os grandes resistentes ainda são Google e Apple (pq fazem bilhões em suas lojas). Mas eu chuto que cedo ou tarde a Play Store libera WebApps por lá tbm.

Mas e a performance?

Browser é mais lento que nativo, ninguém questiona isso. Mas não precisamos ser mais rápidos que nativo. A Web só precisa ser boa o suficiente. E chegamos / estamos chegando lá.

No Desktop a Web tbm é mais lenta. Um Gmail, por melhor que seja, não é rápido como um Outlook. Nem um Google Docs se equipara ao MS Office. Mas isso não importa. Os browsers Desktop são bons o suficiente pra essas WebApps. E aí a conveniência e segurança da Web se sobressaem.

No mobile, a meu ver, o caminho é o mesmo. Para muitas Apps, a diferença de performance nos browsers não importa muito. E vai importar menos ainda, conforme os browsers ficam melhores e os hardwares evoluem.

Isso sem contar as novas features da Web que resolvem gargalos clássicos. Exemplo: a natureza single-threaded do JS é o que mata muita da performance. Vieram os Workers pra ajudar. E agora teremos multithread de verdade no WebAssembly. (e tem o asm.js aliás que já traz muitas melhorias)

E o design/UX da plataforma?

Tá, mas uma App nativa parece nativa. Uma WebApp nunca vai ter aquela cara de iOS/Android. Realmente, não vai ter. E é pior tentar imitar.

Aqui de novo eu vejo a história se repetindo. O Gmail não tem cara de Windows nem de Mac, tem cara de Gmail. E todo mundo usa ele no Desktop. Ninguém se incomoda por isso.

É legal ter a cara da plataforma? Talvez. É determinante? Não acho. É uma oportunidade de ter um branding próprio e se diferenciar. E eu acho que as útimas décadas do Desktop nos ensinaram que o usuário não liga muito pra todas as Apps dele terem a mesma cara.

Tecnologia vs Experiência do usuário

Mas eu sinceramente acho que perdemos o ponto da discussão quando entramos nesses pontos técnicos demais. A tecnologia vai evoluir e a Web vai chegar lá (se já não chegou).

A questão da App vs Web deve ser a experiência do usuário.

O ponto chave é: o usuário quer instalar uma App sua no aparelho dele? Na dúvida, a resposta é não.

Instalar algo é custoso. Exige uma lealdade a seu produto. Exige paciência pra entrar la loja, esperar instalar. Exige ter Wifi pq não vou estourar minha quota de 3G instalando coisas na rua. Exige espaço sobrando no meu aparelho. Exige paciência pra ver seu ícone atrapalhando minha home. Exige que eu lembre de você depois e abra sua App.

Estudo atrás de estudo mostra que usuário não instala qualquer coisa.

Sempre falo: a Web favorece a descoberta e o uso descompromissado. App é para engajar os poucos usuários fiéis que você tem. E com as WebApps instaláveis tenho o melhor dos 2 mundos: descubro seu site pelo Google, uso sem compromisso e, se gostar, só aí instalo na minha home.

A Web é melhor pro usuário na maioria dos casos. Seu produto não é o Facebook nem o Waze (onde o nativo cai como uma luva). Você não é o TOP 10 na AppStore. Minha opinião é que para 99,5% dos cenários, uma App é pior experiência pro usuário.

Web está no fim de carreira?

Eu enxergo justo o contrário. A Web já esteve muito mais ameaçada pelas Apps no passado. Mas as coisas melhoraram. Muito. E o futuro é promissor pra Web (ou pelo menos até as Apps fazerem algo disruptivo novamente).

Uma palavra sobre Apps híbridas

PhoneGap/Cordova é uma aberração. Não me entenda mal. Eu trabalho com Cordova, uso Ionic, conheço a plataforma. [SPOILER ALERT] Vou até lançar um livro de Cordova pela Casa do Código até o fim do ano.

Mas App híbrida é uma aberração que no mundo ideal não deveria existir. Sabe que os próprios devs do PhoneGap quando lançaram anos atrás falaram que o objetivo era que o projeto morresse no longo prazo. Quando? Quando a Web chegasse lá.

Uma App Cordova reúne o pior dos 2 cenários. Os gargalos de performance tradicionais do browser com a exigência de instalação/distribuição via loja de aplicativo. Junta a falta de um UX otimizada que o CSS não permite com um cenário que não favorece a descoberta nem o uso descompromissado.

No mundo ideal existe espaço apenas Apps nativas para aqueles casos que justifiquem e WebApps para todos os outros. Claro, com uma Web evoluída que ataque todos aqueles pontos que falei antes (e estamos quase lá).

Então, o que eu devo fazer?

Como o tópico não é sobre o que eu devo fazer hoje, não vou entrar nesse mérito. Era mais pra filosofar e falar sobre o futuro, certo? Queria mostrar meu ponto de vista e colocar que, na minha visão, o futuro da Web é promissor demais.

Claro, se você tem que tomar uma decisão hoje, tem muitos pontos aqui pra refletir. Cada caso é um caso. Só digo pra tomar cuidado pra não achar que você é o próximo Waze. Dica: não é.

E a Web é melhor do que imaginamos para a mais cenários do que imaginamos. Na dúvida, faça Web primeiro para atender todas as plataformas de forma aberta e universal. Só aí crie Apps nativas para engajar seus clientes fiéis nessa ou naquela plataforma.


O Xamarin consegue criar apps no mesmo nível de java(Android),objective-c/swift(iOS)?
Phonegap x Objective C/Java/C#
(Diego Eis) #5

Pô, mas eu concordo totalmente com você! :wink:


(André L Benatti) #6

Estou sozinho ou tem mais alguém aqui que encontrou uma necessidade dessa discussão virar um post do Tableless com uma finalização de "O que devo fazer?" com seu devido mérito?

Muito bom o post, @sergiolopes! Eu estava inclinado em iniciar um app híbrido num futuro não tão distante e agora vou repensar duas vezes.

Mas de verdade, esse "O que devo fazer?" foi tipo quando você assiste A Sociedade do Anel pela primeira vez: o filme fica super empolgante com vários orcs e flechas e mortes, daí os hobbits pegam um barquinho, vão pro mar e o filme acaba do nada, junto com a sua esperança de continuar recebendo aquela injeção de empolgação, hahahhah.


(Sérgio Lopes) #7

Hahaha. É que a decisão do que fazer tem que levar em conta muitas e muitas variáveis. Não tem uma resposta exata. Algumas perguntas que você deve se fazer pra decidir:

  • Quanto dinheiro eu tenho pra investir em mobile? Criação e manutenção futura.
  • Minha equipe manja de Objective-C? De Java? De HTML? Cordova?
  • Sou um produto novo ou já tenho um passado, uma história?
  • Meu produto é a App ou ela é um suporte pro negócio principal?
  • Ja tenho clientes? Onde eles me acham hoje? No Google?
  • Qual a expectativa dos meus clientes? Me achar no meu site ou na store?
  • Minha App tem uma razão genuína pro cliente voltar várias vezes?
  • Vou usar recursos muito específicos de hardware ou não preciso?
  • Tenho como argumentar com o dono da empresa que brilha os olhos pra estar na AppStore?

São muitas respostas possíveis....


Posso dar meu pitaco também. Coisas que na minha opinião jamais deviam ser App: shopping center, restaurante, ecommerce, blogs, foruns, sites de noticia em geral, cooperativa de taxi, sua empresa XPTO, etc.

Coisas que talvez valham a pena ser Apps (se você tiver outros bons motivos): agregadores de notícias, agregadores de ecommerce (buscape?), agregadores de taxis (99? easytaxi?), agregadores de restaurantes (ifood?), sites de noticia muito famosos (folha? g1?), home banking.

Coisas que certamente serão Apps. TOP 10 serviços do mundo (facebook, twitter, etc), mapas, serviço de email, calendario, alarme, games, streamming de música, plugins/extensões do SO (teclado?).

Claro, é minha opinião, e eu provavelmente estou errado em alguns chutes que dei aí. Cada caso é um caso. Tem que ser analisado especificamente.