Dilemas de uma escolha entre React Native e Flutter para desenvolvimento de aplicativos
Programo em PHP há alguns anos. Isso me deu uma série de vantagens na criação de soluções para clientes, amigos e até para familiares. Me deu mais do que apenas “um nariz de vantagem” na carreira profissional também. Barack Obama disse, certa vez, que todos devem aprender a programar. Ouçam o Obama.
Já passei por um período em que achei que a programação havia acabado pra mim. Eu aprendi a fazer minhas rotinas procedurais e tinha alguma dificuldade com orientação a objetos. Como minha formação não é em computação, eu acreditava que me faltavam algumas lacunas de base e isso seria uma grande barreira, talvez definitiva, para avançar à orientação à objetos. Quando o PHP começou mudar, acreditei que seria inevitável saber orientação à objetos para continuar programando. Ou eu teria que aprender um framework que sustentasse as lacunas de conhecimento que eu tinha.
Eu estava errado em alguns sentidos. Qualquer um pode aprender a programar, isso eu já sabia, mas o importante que preciso destacar antes de avançar neste texto é que qualquer um pode aprender orientação à objetos. Qualquer um pode aprender qualquer abstração. É mais fácil para alguns, mas não acredito que seja impossível para alguém. Apesar de acreditar que qualquer um poderia aprender, eu achava que eu não poderia aprender, por diversas razões (“essa nem é minha ocupação profissional principal”). Eu estava errado.
Voltando à vaca fria, decidi aprender um framework de PHP para poder continuar usando as versões mais recentes da linguagem. Aprendi a usar o Fat-Free Framework, não tão popular quanto Laravel, Yii e outros, mas ideal pra mim. Fiz algumas coisas interessantes com ele e, principalmente, recuperei a confiança de que eu poderia aprender qualquer coisa e eu não estava com minha capacidade de programar com os dias contados.
Saber que posso apreender não é suficiente, eu preciso acreditar que terei conforto intelectual no processo, preciso gostar da ferramenta. Depois do PHP, eu arrisquei um pouco em Python e Go, mas não posso dizer que já consigo me virar com eles pelo fato de ainda não ter precisado. Gostei de Go, mas ainda não encontrei uma necessidade para ele.
Uma verdade sobre programação (uma verdade sobre o aprendizado na idade adulta): você só aprende a programar, programando. Arranje um projeto de estimação e aprenda enquanto tenta fazer o projeto. Meus projetos são coisas que eu realmente queira ver prontos; software que eu, de fato, preciso.
Eu quero aprender a programar para dispositivos móveis, para Android e iOS. Já há algum tempo que eu sinto essa necessidade, uma lacuna na cesta de ferramentas. Há algum tempo que eu experimento soluções para isso, instalo e faço um hello world. Exploro o ambiente de desenvolvimento. Pode parecer falta de entusiasmo de minha parte para quem lê minha descrição de como tenho me aproximado dessas tecnologias, mas é mais falta de tempo mesmo, eu primeiro exploro as opções antes de tentar entrar de cabeça e isso pode levar tempo.
Entre as opções disponíveis, havia o React Native, uma plataforma em que a linguagem é o Javascript. Você desenvolve seu software e a plataforma gera o binário para executar em Android ou iOS. Uma lindeza, muito utilizada, uma comunidade enorme e tecnologia oriunda do Facebook, se é que a empresa “matriz” dá algum pedigree. Mas eu nunca consegui me tornar fluente em Javascript, já tentei, mas nunca encontrava um uso, uma necessidade que me fizesse ter maior contato com a linguagem. Não sei explicar, apenas não morri de amores.
Esses dias eu descobri o Flutter. Faz tudo que o React Native faz, mas o ambiente de desenvolvimento parece mais organizado. Não usa Javascript, mas uma linguagem que a Google criou para concorrer com o Javascript anos atrás, mas não conseguiu superar a popularidade da concorrente. Então, Dart estava aí, sem rumo e sem uso. Flutter deu um sentido para Dart, que se tornou a linguagem desse ambiente de desenvolvimento.
React Native possui muito mais libraries (pedaços de código prontos que você pode reaproveitar em seus aplicativos), muito mais desenvolvedores e muito mais chão percorrido. Flutter estabilizou seu ambiente no final do ano passado (2018), há pouco material disponível, há alguns bugs (encontrei um), a comunidade de desenvolvedores é relativamente pequena. React Native parece ter quase todas as vantagens, mas eu ainda não consegui “tração” no aprendizado dele.
Eu morri de amores pelo Flutter. Em algumas horas fiz um aplicativo com funções, não apenas a tela de hello world, um aplicativozinho mesmo. Esse passo é muito importante, principalmente considerando que nunca avancei muito com Java para Android ou Javascript para React Native (olha, a verdade é que eu, por pouco, não ia conseguir instalar o ambiente de desenvolvimento na última vez que tentei — shame on me).
Flutter e Dart podem se juntar ao PHP em minha pequena cesta de tecnologias de desenvolvimento. Espero que aconteça. Se o pedigree da tecnologia significar algo pra você, leitor: a Google é poderosa o bastante para dar um impulso fantástico nesse ambiente de desenvolvimento que ela criou nos próximos anos.
No melhor cenário, além de aplicativos web que me agradam e resolvem meus problemas e os de algumas outras pessoas, eu farei também aplicativos para dispositivos móveis. Se você estiver por aí procurando uma tecnologia para o mesmo fim e quiser trocar uma ideia sobre Flutter, estou por aqui tentando aprender também, pode “chegar junto”, como se diz na Bahia.
—
Meu objetivo é escrever 30 textos em 30 dias. Este é o 17/30. Os textos anteriores podem ser encontrados em https://medium.com/(ricsodre?)