O guia inicial do desenvolvimento Android
Resumindo
Quem está começando na área de desenvolvimento Android ou já conhece pelo menos o básico e quer melhorar suas habilidades, pode ter dificuldade ao selecionar o que vai aprender e no que focar depois de acabar um tópico.
Assim, neste artigo, você vai encontrar um guia do que e quando aprender em Android, dentre outras coisas:
- Nativo vs híbrido;
- Material design;
- Boas práticas de programação;
- Documentação.
Vale mencionar que, em 2021, a Alura realizou uma série de pesquisas de mercado sobre Android, Flutter e React Native que, dentre outras coisas, revelou os conhecimentos técnicos e diferenciais que o mercado requer de um Desenvolvedor Junior; a seguir vamos nos aprofundar em vários desses temas e linkar materiais de estudo.
Ao final do artigo, você encontra um Plano de Estudos que linka vários conteúdos em ordem, para já começar a estudar.
Nativo ou Híbrido?
Afinal, estudar e se desenvolver no modelo nativo ou híbrido? Essa talvez seja a decisão mais importante no início dos seus estudos e vai depender do que você almeja profissionalmente ou do seu foco de estudo atual. O mercado de trabalho oferece muitas oportunidades em ambos os casos e cada um tem suas vantagens e desvantagens. Por exemplo:
Nativo: O desenvolvimento de apps nativos Java/Kotlin costuma entregar uma experiência de usuário mais robusta e aplicações com melhor performance. Além disso, facilita o trabalho ao lidar com recursos específicos do sistema como câmeras, sensores e novos recursos trazidos ao SDK (Software Development Kit) a cada nova atualização;
Híbrido: O desenvolvimento híbrido, que utiliza um framework como Flutter ou React Native, pode diminuir o tempo de desenvolvimento e a quantidade de código escrito quando seu app precisa estar em outras plataformas como IOS, pois o mesmo código, com poucas modificações, pode rodar em vários sistemas sem problemas. Não é uma questão com resposta exata e vai depender de vários aspectos, mas para ajudar temos um vídeo bem legal sobre isso no canal da Alura.
Java ou Kotlin
Antes de prosseguir com as demais dicas, se você escolheu o nativo...
Desde 2017, a Google recomenda que os aplicativos Android sejam construídos com a linguagem Kotlin no lugar do Java por 'aumentar a produtividade, a satisfação dos desenvolvedores e a segurança do código'. E, embora a documentação oficial do Android mencione que cerca de 30% de quem desenvolve profissionalmente ainda usa Java em seus projetos, esse número tende a diminuir cada vez mais.
Recentemente, o Android Nativo recebeu mais uma poderosa adição ao seu kit de desenvolvimento que muda a forma como os apps Android são desenvolvidos. Logo, se você escolher o nativo, é bom já se familiarizar com essa nova ferramenta: o Jetpack Compose.
Vamos agora ver algumas boas práticas e dicas que servem tanto para nativo ou híbrido!
Independente das escolhas, saiba o básico
Tanto o nativo como o híbrido requerem uma série de conhecimentos em comum que, apesar de não ter uma ordem exatamente específica, pode ser resumida nos tópicos a seguir:
Domine sua linguagem
Seja Java, Kotlin, Dart, JavaScript ou qualquer outra linguagem, você vai passar muito tempo escrevendo códigos nela, então, tenha uma base sólida sobre seu funcionamento e seus principais recursos, o que é útil e facilita seu trabalho. Pense o seguinte: seria possível, porém mais difícil, viajar para um país estrangeiro sem dominar bem a língua, certo?
Crie boas telas
Tem vontade de criar um app legal? Comece pelo básico e aprenda a construir telas comuns, fixe bem a criação de layouts, saiba exibir textos, receber entradas de dado do usuário, criar listas, menus, lidar com eventos de click no seus componentes - e o que for necessário para entregar uma experiência agradável para quem usar sua aplicação.
Estude sobre personalização, quase todo app Android segue uma espécie de padrão, tanto visual como de navegação, e isso não é coincidência: o Material Desgin guia a criação de telas através de diretrizes que garantem comportamentos comuns e intuitivos. São fáceis de usar e, embora não sejam regra, recomendo fortemente que você conheça esses padrões.
Conforme desenha suas telas e precisa dar vida a elas por meio da linguagem escolhida, sua evolução deve ser natural; então chegará o momento em que você consegue fazer ações bem legais e pode começar a focar em conceitos mais técnicos.
Nesse ponto do aprendizado, é legal se familiarizar com conceitos mais específicos do Android (especialmente se estiver lidando como o nativo) como o de Ciclo de vida de uma aplicação, tanto para conhecer melhor como o próprio sistema do lida com nosso app, como pensar em maneiras de otimizar nosso código em certos momentos. Temos um artigo explicando melhor esse conceito de Lifecycle
no Nativo em si e recomendo a leitura desse outro em inglês que foca mais em Flutter.
Lide com erros
Acostume-se com a palavra Exception
- você vai vê-la várias vezes durante seu desenvolvimento (haha). Brincadeiras à parte, não é comum você ver uma vaga de Dev solicitando que você saiba “lidar bem com exceções" ou “ou depurar apps bem”, mas você usará bastante essa habilidade no dia a dia.
Esse tema quase entra no escopo de testes, que veremos a seguir, e será útil saber como identificar certos comportamentos que deveriam ocorrer e o que realmente está rolando - o que é possível quando você está ligado nos Logs do Android, por exemplo.
Guardando informações localmente
Pense na enorme dificuldade que seria se, ao fechar um aplicativo, todas as informações salvas (como cartão de crédito e cadastro do usuário) se perdessem. Seria inviável usar um app desses, certo?
Logo, avançando um pouco mais nos estudos, você deve precisar armazenar informações por um período de tempo maior no dispositivo dos usuários, por exemplo: Salvando os dados de login para que não seja necessário inseri-los novamente toda vez que entrarmos no app, guardando listas de itens de um app de notas ou mesmo garantindo que mensagens trocadas online permaneçam disponíveis sem conexão à internet. Aqui temos algumas opções e as mais comuns são:
- SharedPreferences: para informações simples;
- DataStore: também para informações simples;
- Banco de dados: para lidar com fluxos de dados mais complexos.
Recomendamos que você dedique mais tempo ao banco de dados, pois essa ferramenta permite guardar e recuperar grandes quantidades de dados de maneira ágil e performática. No Android, é muito comum lidarmos com o banco de dados SQLite, e a documentação oficial recomenda o uso de uma ferramenta muito comum que é o Room para tornar seu uso mais fácil.
Consumindo Web APIs
Por mais que possamos fazer muito salvando dados localmente, provavelmente uma hora ou outra vamos precisar buscar uma informação online, salvar algum dado em um servidor externo ou mesmo enviar algo para ser processado fora de nosso dispositivo e depois recebê-lo de volta.
Nesse momento, é importante que você conheça a técnica de consumir APIs REST para estabelecer comunicações externas, essencial no repertório de habilidades de quem desenvolve para Android. Aqui não existe uma solução única, o desenvolvimento híbrido ou nativo já oferece maneiras de fazer isso naturalmente, mas inúmeras bibliotecas visam facilitar esse trabalho. Vejamos três delas:
Aproveite para explorar as páginas dessas soluções e turbinar seus estudos!
Aprimorando nosso app
A fim de tornar nossa aplicação mais robusta, escalável e testável, podemos aplicar algumas técnicas, como implementar padrões de arquitetura como MVVM
(Model-view-viewmodel), que é muito comum na programação mobile.
Agora complicou? Calma, vamos devagar. O padrão de arquitetura MVVM
visa a facilitar a separação das nossas camadas de interface de usuário (UI) do nosso código de lógica de negócio.
Apesar de muito útil, padrões de arquitetura como esse aumentam a complexidade de nossos projetos e têm uma curva de aprendizado um pouco íngreme, ou seja, você pode demorar um pouco para entender como as coisas realmente funcionam. Assim, a formação em Arquitetura Android pode ser bem útil nesse momento.
Aplicar técnicas para limpar e aumentar a legibilidade do seu código é uma habilidade essencial para todo programador - não apenas na área mobile -, então conhecer, por exemplo, os princípios de Clean Code e SOLID, pode ser uma boa ideia; temos um vídeo do #HipstersPontoTube com nosso CEO Paulo Silveira comentando sobre esse tema.
Um código limpo e fácil de entender torna sua aplicação versátil e mais fácil de testar ou escalar quando necessário, e, mais uma vez, a documentação oficial do Android é de grande ajuda ao oferecer um Guia para a arquitetura do app que contém conceitos e práticas recomendadas na construção de aplicações .
Testes
Embora muitas empresas disponham de um departamento específico para qualidade de software, saber o básico de testes é uma habilidade importante para criar códigos menos suscetíveis a falhas e, no pior dos cenários, que quebrem nossa aplicação.
O Android Studio (ambiente de desenvolvimento oficial do Android), gera algumas pastas e arquivos de testes toda vez que criamos um novo projeto:
A Documentação do Android possui uma boa introdução ao tema, abordando as principais categorias de testes, quando usá-los e sugestões de ferramentas para te auxiliar.
Nosso podcast Hipsters Ponto Tech tem um episódio sobre Testes Automatizados que vai ser uma ótima introdução ao assunto.
Na Alura você encontra cursos de Testes tanto em Android Nativo, quanto em Flutter.
Disponibilizar o app / Gerar o APK Instalável
Uma habilidade que geralmente vemos como requisito em vagas para pessoas desenvolvedoras de Android é o conhecimento do processo de publicação de aplicativos na loja oficial da Google, a Play Store.
Esse é um passo um pouco mais avançado (que além de te fazer “cumprir o requisito de vaga” haha), vai permitir que você tenha um portfólio de apps para mostrar seu trabalho quando necessário. A distribuição de apps Android pode ser feita por outros meios que não a loja da Google, mas esse é provavelmente o mais utilizado atualmente.
Prática
A prática leva a perfeição.
Quem nunca ouviu essa frase não é mesmo? Nesse caso, o ditado é extremamente válido: estude e tenha noção do que você pode construir, as ferramentas e recursos que pode utilizar e, constantemente, pratique tudo isso.
Tire momentos para criar seus próprios apps, aplicar tudo o que aprendeu, resolver os problemas que devem surgir no caminho. Esses momentos de estudo são uma oportunidade para rever aquele tópico que você não entendeu bem de primeira ou vai requerer uma atenção extra.
A prática ajuda a fixar os conteúdos aprendidos e você pode acompanhar sua evolução armazenando esses projetos em algum sistema de versionamento como o Git e GitHub.
Versionamento
Git, Github e outros sistemas de versionamento não servem apenas para acompanhar a evolução de um código. Na verdade, são ferramentas muito úteis por permitir o trabalho simultâneo de várias pessoas em um mesmo projeto, logo, conhecê-las bem é indispensável para todo programador! E, na área mobile, isso não é diferente.
Documentação oficial
No desenvolvimento híbrido ou nativo, você vai se deparar diversas vezes com a Documentação Oficial do Android, que é muito útil e bem detalhada em vários aspectos. Sempre que tiver uma dúvida, vale a pena consultar!
Conclusão
O mercado de desenvolvimento Mobile, assim como toda área de tecnologia, nunca para de evoluir!
Abordamos, neste artigo, os principais conceitos que um desenvolvedor ou desenvolvedora Android deve saber lidar no seu dia a dia, desde o básico até tópicos mais avançados. Estar sempre atento às mudanças do mercado, ao surgimento de novas tecnologias e estar disposto a aprender algo novo é tão importante quanto os assuntos que mencionamos, e por isso, não se limite, vá além!
Elaborado especialmente para esse artigo, abaixo você encontra três planos de estudos - um para Android Nativo, um para Flutter e outro para React Native - que incluem artigos, cursos, podcasts e vídeos que vão te guiar nessa maravilhosa jornada que está prestes a começar!
Muito obrigado pela presença e até mais!