Guia de Estudos - Mobile 2022

Crie Rotina

Muitas pessoas me perguntam: "Lucas, o que você me recomenda estudar para melhorar minhas habilidades?

A minha primeira resposta normalmente também é uma pergunta:

O que você gosta de estudar?

Mais importante do que estudar um assunto específico devemos focar na cadência do aprendizado.
Manter a cadência nos estudos é o que vai aumentar o seu nível de maturidade em programação, independente da linguagem ou framework. Mas por que isso?
Porque cadência envolve persistência. Envolve errar, envolve não conseguir prosseguir. Mas também envolve superação e aprendizado real.

Quando não se tem persistência em algo, o ganho é muito superficial.
E, se estudar já é um hábito que demanda esforço, estudar algo que você não tem interesse demanda um esforço muito maior.

Além disso, como já diria o Gato de Cheshire no clássico "Alice no País das Maravilhas":

Gato de Cheshire

Então se você não tem um plano de estudos, segue aqui o meu primeiro conselho de amigo:

Esqueça o plano. Crie uma rotina de estudos!

Não pense demais. Apenas estude.

Leia artigos, blogs ou procure o Twitter de outros desenvolvedores Senior. Seja o que for.
Criar esse hábito será o maior benefício para seu crescimento profissional.

Mas se você já tem uma rotina de estudos e gostaria de ajuda para organizá-la ou priorizar temas mais relevantes, vem que eu te ajudo.

Guia de Estudos 2022

Aqui vai um pequeno adendo, os assuntos a seguir tem um viés de complexidade um pouco maior. Então caso você esteja aprendendo agora alguma das Stacks, eu recomendo solidificar a sua base para depois buscar conhecimentos específicos.

Programação Assíncrona

Talvez um dos tópicos mais complexos da programação seja justamente programação assíncrona.
A quantidade de caminhos que o código pode tomar se torna infinitamente maior quando não conseguimos predizer quando uma função irá retornar algum valor ou quando um estado será alterado na tela.
Mas apesar de ser um tema complexo, muita coisa mudou com o passar do tempo. E hoje temos várias estruturas auxiliares que nos ajudam com essa tarefa.

Em Android, se você ainda não começou os estudos de Coroutines, lembre-se que este é o padrão mais utilizados em novos projetos. Inclusive, nos exemplos de documentações Android, o foco em Coroutines predominante.
Lembro também que AsyncTask se tornou deprecated na API 31 do Android, então o recomendado é começar a avaliar a migração desse código o quanto antes.

Já em iOS, a introdução de conceitos como Actors e Tasks mudou completamente a forma como interagíamos com código assíncrono. Saem de cena as famosas completionHandlers para entrarem as novas keywords, async e await. E essa mudança é muito mais profunda do que parece. Inclusive o próprio conceito de Thread é redefinido quando passamos a olhar para a forma que as Tasks interagem entre si.
Sugestão de leitura: Concurrency

Interfaces Declarativas

Não há dúvidas, interfaces declarativas tem sido um Hot Topic desse ano.
Tanto o Jetpack Compose no Android quanto o SwiftUI no iOS vieram para ficar.
Nem tudo são flores (mas quando isso é verdade?). Ambas bibliotecas precisam de um maior polimento e correção de bugs.
Mas não se deixe influenciar pelo desespero e pessimismo de alguns desenvolvedores da comunidade. Afinal de contas, por serem novas abordagens e novas implementações, estamos todos aprendendo.

Ponto de atenção: em ambos os casos a mudança na construção de interfaces não é apenas uma mudança de framework. O paradigma de se escrever interfaces declarativas é totalmente diferente do que estamos acostumados.
Navegações, exibição de alertas, referência de Views internas... Nada disso é igual!! Começar a usar esses novos frameworks é uma verdadeira lição de humildade, onde aprende-se tudo (quase) do zero.

Modularização

Como falar de um guia de estudos sem falar de modularização? Praticamente em todos eventos que vamos tem uma "Talk" sobre modularização de aplicativos.

Mas por que isso é tão importante? Por dois simples motivos, reduzir a carga mental de cada time e habilitar entregas mais rápidas de forma independente entre as equipes.

Contudo, modularização tem seus riscos. Simplesmente começar a criar subprojetos e referenciá-los dentro de um projeto principal não é o suficiente para garantir o crescimento saudável dos módulos de sua aplicação.
É preciso estudar como quebrar os domínios e features de seu App, de forma que os times tenham plena autonomia nos módulos e funcionalidades em que estão trabalhando.

Esse não é um trabalho só de engenharia, mas também de processo e pessoas.
É necessário se planejar para reduzir a sobreposição e duplicação de funcionalidades.
É necessário criar os canais de comunicação corretos entre as pessoas.
É necessário orquestrar a entrega de todos os times, pensando que somente um pacote final irá ser entregue ao cliente.

Para isso, tanto o processo quanto a gestão de pessoas de sua empresa devem se preparar para absorver as demandas e tarefas que esses desafios impõe.

VR/AR

Facebook (agora Meta), Apple, Google e Microsoft. Já ouviu falar dessas empresas?

Apesar de ainda ser algo pouco presente em nosso cotidiano, todas elas estão ativamente trabalhando em tecnologias e produtos voltados para o mercado de Realidade Aumentada e Realidade Virtual.

Esse assunto é onde o futuro realmente está.
Então se você já está confortável com seu nível de conhecimento atual e quer se preparar para o futuro, invista seu tempo em VR/AR.

Bonus: Server-Driven UI

Como trazer valor para o negócio, com o menor custo possível? Essa é pergunta de milhão de dólares (ou mais).
Server-Driven UI é um forma de se pensar e estruturar a sua aplicação para que ela responda dinamicamente à resposta do servidor.

Mas isso não é a mesma coisa que BFF? Não.

Backend for Frontend é uma estratégia que visa focar na experiência do usuário, separando uma interface de backend para cada frontend.
Essa estratégia pode ser implementada de forma clássica, pensando somente nos dados e formatação dos mesmos, ou pode ser implementada trazendo também para o frontend a estrutura que o mesmo deve exibir.

Quando o Backend começa a pensar não somente nos dados, mas também na forma de apresentação dos mesmos na tela, temos o que chamamos de Server-Driven UI.

  • Um exemplo prático disso seria apresentar os números de telefone do usuário. Essa informação poderia ser exibida como:
    • uma lista vertical
    • um campo de texto único, separando os número por vírgula

Ter essa flexibilidade de alteração na estrutura não é algo trivial.
Normalmente um dos pré-requisitos é ter um Design System robusto e completo.
Além disso, é fundamental também montar uma equipe plenamente capaz de construir uma biblioteca performática e consistente, que consiga gerar dinamicamente elementos na tela do celular com base na resposta do servidor.

E aí? Quer aprender mais?

Gostou dos tópicos a serem abordados? Vem comigo!
Mensalmente vou trazer as novidades e recomendações de estudo sobre cada um desses temas em sua respectiva tecnologia.

E para não perder nenhuma das publicações, só me seguir no Linkedin!

Traduções: