Se você tem acompanhado os lançamentos dos novos gadgets tem visto que muita coisa tem surgido para além de novos modelos de smartphones, como os os aparelhos de duas telas.

Mas além destes novos modelos e que trazem novos desafios, outra grande novidade é Surface DUO da Microsoft, https://www.microsoft.com/en-us/surface/devices/surface-duo que lembra um tablet Windows, mas mais potente. Além dele, possivelmente você já conheça os wearables (em português, algo próximo de “vestíveis”) que são gadgets que você literalmente pode vestir! Os mais conhecidos são os relógios e as pulseiras, que recentemente tem sido adotas em larga escala por bancos. Sem falar nas inúmeras SmartTVs e receptores de streaming como o Chromecast e o Apple TV.

Vale citar também que os celulares e até mesmo os eletrodomésticos, para quem gosta de IoT, têm ganhado novas tecnologias como assistentes virtuais, que podem ser combinados com IA e Data Science para ter cada dia mais espaço e maior relevância no nosso dia a dia e consequentemente no mercado. Tudo isto sem falar dos aplicativos automotivos e até mesmo carros autônomos.

Então você pode estar pensando, onde se encaixa o conhecimento de uma pessoa desenvolvedora mobile no meio disto tudo? O desenvolvimento mobile ainda é relevante?

É fato de que tudo tem evoluído com uma velocidade surreal e que com frequência, surgem novos aparelhos tecnológicos , novos padrões comportamentais e principalmente novas formas de se trabalhar com tecnologia.

Quando falamos de uma pessoa desenvolvedora mobile, a primeira coisa que pode vir a mente é que estamos nos referindo a profissionais que desenvolvem aplicativos para celulares e tablets Android e iPhones/Ipads, certo? O que uma pessoa com estes conhecimentos poderia agregar e ser relevante frente a tudo isto que citamos acima?

Gadgets como pulseiras e relógios, em boa parte, usam o sistema operacional Android, iOS ou baseados em Linux, além de integrar-sem com os celulares e tablets. Receptores de de streaming, integram-se com celulares e tablets. O novo Surface Duo executa Windows. As SmartTVs possuem diversos sistemas operacionais, algumas utilizam Tizen, mas a boa maioria, sabe executar aplicativos com javascript.

No mundo IoT existem diversas opções para se trabalhar com sistemas operacionais já conhecidos. Por exemplo a Raspberry PI é uma placa muito utilizada e com ela é possível se trabalhar com Android, Linux e Windows. A Google mantém um kit para iniciar com desenvolvimento IoT em seu portal Android Things.

Em todos os exemplos, você vai notar algumas características em comum: Uma interface de comunicação com o usuário, recursos de hardware limitados e pouco controle do ambiente de execução.

O conhecimento e a experiência de uma pessoa desenvolvedora mobile se torna ainda mais relevante quando observamos todas essas características, já familiares e que fazem parte do dia a dia e do mindset de quem trabalha com desenvolvimento mobile (mesmo que apenas com celulares) como processamento limitado, distanciamento do ambiente de execução, thread de UI, dificuldades de conexão e tráfego de dados, binários de instalação, lojas e entre outras que talvez não seja algo muito familiar para uma pessoa com um conhecimento formado mais no mundo de desenvolvimento web.

Interface de comunicação com usuário

Uma das partes mais importante de um aplicativo, além de sua relevância, é sua interface de comunicação com usuário, que é potencializada quando combinada com o conhecimento de uma pessoa profissional de UX (em inglês user experience, em português experiência do usuário). Conhecer os componentes nativos e saber o comportamento esperado de cada um, entender o seu público alvo e prever comportamentos em diferentes tamanhos e densidades de telas, é fundamental para um aplicativo mobile. Preocupações como tamanho de área clicável, quantidade de informações e quantidade de toques na tela até atingir o objetivo podem fazer toda a diferença.

Recursos de hardware limitado

Uma pessoa profissional mobile sabe que, diferente de outros sistemas, no mundo mobile o tamanho do aplicativo é de grande relevância, dado que normalmente os dispositivos (celulares/pulseiras/relógios/TV, etc) possuem pouco espaço de armazenamento e a disputa por cada mega é acirrada. Afinal, a concorrência poderá ser com aplicativos como Facebook, Instagram, aplicativos bancários.
Além do armazenamento, a pessoa desenvolvedora mobile também costuma levar em conta o quanto de bateria o seu aplicativo irá consumir, se o hardware para um determinada funcionalidade estará disponível e o que fazer se não estiver.

Pouco controle do ambiente produtivo

A partir do momento em que o aplicativo é entregue, ele será instalado nos dispositivos dos usuários e a pessoa desenvolvedora não possui nenhum controle. Por isso é importante considerar com muita atenção a segurança do aplicativo, evitando manter dados do usuário nos aparelhos, existe a possibilidade de conexões inseguras e transações interceptadas, entre outros.
Outras preocupações envolvem, por exemplo, instabilidade na conexão com internet e pacote de dados, diferentes hardwares executando o aplicativo, que pode ocasionar bugs muito específicos em uma massa reduzida de dispositivos.

Entretanto, cada um dos gadgets e placas citadas acima, possuem um sistema operacional diferente e linguagens de programação diferentes. A pergunta que fica então é: Como uma pessoa que possui conhecimento em uma linguagem irá conseguir trabalhar com tantas coisas?
Bem, além das linguagens de programação ditas nativas como Kotlin (Android) e Swift (iOS), tem se tornado muito popular no mundo mobile os frameworks de desenvolvimento cross platform (multiplataforma), ou seja, frameworks capazes de, com uma mesma base de código e mesma linguagem de programação, entregarem aplicativos para diversos sistemas operacionais. Alguns bons exemplos destas plataformas são:

  • Xamarin/Xamarin.Forms: Open source mantida Microsoft, utiliza a linguagem de programação C# ou F# e entrega aplicativos nativos principalmente para celulares/tablets/relógios/pulseiras Android, iOS, SmarTVs Tizem, AndroidTV, AppleTV dispositivos com duas telas, dispositivos Windows como Surface e Hololens.
  • React/React Native: Desenvolvido e mantido pela equipe do Facebook, utiliza a linguagem de programação Javascript e entrega aplicativos nativos principalmente para celulares/tablets/relógios/pulseiras Android e iOS, AndroidTV, AppleTV, sistemas web e é bastante comum encontrar aplicativos React desenvolvidos para SmartTVs (como é o caso da Netflix).
  • Flutter: Desenvolvido pela Google, utliza a linguagem Dart, tem crescido bastante na adoção da comunidade e de empresas. Entrega aplicativos nativos principalmente para celulares/tablets/relógios/pulseiras Android, iOS, AndroidTV, AppleTV e sistemas web.

Mas é importante ressaltar que além do conhecimento técnico da linguagem de programação em específico, é fundamental ter um sólido conhecimento do sistema operacional com que se está trabalhando. Muita coisa as plataformas irão abstrair, entretanto, você poderá se deparar com situações específicas em que somente o conhecimento do sistema operacional será capaz de solucionar. Há de se levar em conta também toda habilidade e experiência de uma pessoa desenvolvedora mobile em trabalhar com as condições características de um celular, por exemplo, que são de grande valia no processo de desenvolvimento, entrega e monitoramento de qualquer uma das tecnologias e aparelhos que citamos neste artigo. São proficiências específicas e que podem fazer a diferença durante o ciclo de vida do produto.

Olhando para tudo isto, acredito que a pessoa desenvolvedora mobile tem sua relevância na revolução tecnológica que vivemos. É essencial buscar sempre que for possível manter-se atualizada e atenta com as novas tendências do mercado para que aproveite suas experiências valiosas do dia a dia e mantenha-se atualizada com tudo que está surgindo.

(Cross post de http://high5devs.com/2020/04/e-um-bom-momento-para-ser-uma-pessoa-desenvolvedora-mobile/)