- 7 de March de 2023
- Blog
Mobile: O futuro do desenvolvimento nativo
Este artigo é a terceira parte da série: O paradigma declarativo e por que ele vai dominar o ambiente de desenvolvimento Mobile. No primeiro texto, falamos sobre o paradigma declarativo; no segundo, sobre como ele vem dominando o desenvolvimento mobile.
Após apresentarmos o paradigma declarativo e entendermos como ele vem sendo amplamente usado no desenvolvimento de interfaces de usuário, vamos agora explorar nossas expectativas sobre como o desenvolvimento nativo pode ser acelerado usando essas novas ferramentas.
O Futuro
Vamos analisar mais de perto o desenvolvimento nativo —Android e iOS, deixando um pouco de lado o desenvolvimento multiplataforma —, para entendermos melhor as mudanças que podemos enfrentar no futuro do desenvolvimento.
Antigamente, no desenvolvimento Mobile, precisávamos de 2 times completamente distintos: um time de desenvolvedores Android e um time iOS. Eles não trabalhavam em sincronia e o próprio desenvolvimento feito por eles era muito diferente:
A começar pela linguagem. Enquanto o iOS usava o Objective-C, o Android possuía o Java para o desenvolvimento. As linguagens não possuíam muitos recursos em comum e as implementações eram bem diferentes.
Além disso, os sistemas de Views de cada um não se pareciam. No Android, possuíamos nossos layouts e as próprias Views para controle, enquanto no iOS o desenvolvimento era feito na ferramenta visual Storyboard e controlada pelo ViewController.
Essas diferenças também geravam distorções na arquitetura de UI. No iOS, o mais comum era usar MVC, enquanto no Android houve uma transição mais rápida para o MVVM (apesar de MVP e MVC também serem muito usados).
O tempo passou, novas tecnologias foram surgindo e hoje podemos dizer que o desenvolvimento Android e iOS está muito mais próximo do que já foi um dia!
As linguagens Kotlin e Swift possuem diversas semelhanças em sintaxe e paradigmas. O sistema de Views caminhou para uma lógica similar entre eles com o SwiftUI e o Jetpack Compose. A arquitetura de UI hoje usada para os dois é o MVVM (inclusive, com o desenvolvimento declarativo, não é mais possível usar MVC).
Por fim, surgiram novas ferramentas muito similares para lidar com o desenvolvimento assíncrono, grande temor dos programadores, em ambos os ambientes: as Coroutines no Kotlin e o Async/Await do Swift.
Com essa aproximação entre os ambientes de desenvolvimento, podemos começar a vislumbrar uma aproximação também entre os times de desenvolvimento nativo!
Ao invés de times trabalhando completamente separados, cada um em seu próprio repositório com tarefas diferentes, podemos imaginar esse trabalho sendo dividido por funcionalidades, por exemplo. Dessa forma, cada time implementa uma funcionalidade diferente em paralelo e, depois, eles trabalham em sincronia para que cada funcionalidade seja portada para o outro ambiente.
E por que não termos também um repositório compartilhado (chamo na figura abaixo de “Domain” pelo meu apreço ao Clean Architecture) entre os ambientes de desenvolvimento, contendo regras de negócio e códigos comuns entre os ambientes?
Todas essas técnicas são coisas que podemos vislumbrar num futuro próximo e temos que estar atentos, pois elas vêm para ficar e podem acelerar muito o desenvolvimento de novos projetos. E quem não se atualizar pode acabar ficando para trás.
Alinhando a novas técnicas
Um último ponto que gostaria de levantar sobre o desenvolvimento declarativo é que ele está muito mais alinhado a novas técnicas e tendências de mercado do que o desenvolvimento imperativo. Algumas dessas novas tendências que podemos citar são:
- Server-driven UI: técnica emergente usada por Airbnb e Lyft, por exemplo, aproveitando o servidor para criar a interface do usuário nos aplicativos móveis;
- Relay/SwiftUI Inspector: ferramentas que tentam gerar códigos declarativos baseadas no design feito no Figma;
- Material Design/AHIG: diretrizes e boas práticas fornecidas aos desenvolvedores para implementar os layouts dos aplicativos. Ao usar as ferramentas declarativas temos essas diretrizes já implementadas.
Conclusão
Nesta série de artigos apresentamos o paradigma declarativo e entendemos como ele mudou e segue mudando a vida dos desenvolvedores. Mostramos as principais diferenças para o paradigma imperativo e como se tornou mais fácil criar interfaces de usuário com ele.
Vale dizer aqui que não existe bala de prata no desenvolvimento e, apesar do paradigma declarativo apresentar muitos benefícios para os desenvolvedores, também temos algumas desvantagens ao utilizá-lo. Mas, como esta série já está muito grande, vou me abster de explicá-las e deixo aqui com vocês um outro artigo com uma ótima análise dos problemas dessa abordagem!