Desenvolvedor(a) Android: Um guia prático para se tornar — Parte 2

Aline Souza
Aline Souza
Published in
5 min readApr 19, 2021

Na última semana publiquei a parte 1 deste artigo (se não viu, clique aqui) onde abordei o conhecimento essencial que qualquer desenvolvedor Android deveria conhecer: Lógica, Lifecycle, Kotlin, viewGroups e Jetpack Components.

E obviamente, dentro de cada um dos tópicos citados acima, existe uma infinidade de conteúdo para se aprofundar, o que pode te levar a meses de estudos. Mas vamos considerar que você já conseguiu uma boa bagagem utilizando LiveData, viewModel, entendeu a diferença das etapas de um ciclo de vida, e sabe estruturar um ConstraintLayout facilmente. E agora?

Agora chegou a hora de nos aprofundarmos um pouco mais e começar a explorar um mundo que pode te destacar durante uma entrevista.

Consumo de APIs

Sei que para quem nunca programou e está iniciando na área, esse termo "consumo de APIs" pode não significar absolutamente nada. Termos como response, payload e JSON pode assustar muita gente. Mas afinal, o que é uma API?

API é um conjunto de rotinas e padrões de programação para acesso a um aplicativo de software ou plataforma baseado na Web. A sigla API refere-se ao termo em inglês “Application Programming Interface” que significa em tradução para o português “Interface de Programação de Aplicativos”. — CanalTech

Traduzindo a termos menos técnicos: uma API é uma interface responsável tanto por nos fornecer informações de um servidor, quanto executar alguma ação neste mesmo servidor.

E saber conectar seu aplicativo com essas APIs é de extrema importância. E existem diversas formas de fazer isso. Atualmente, por exemplo, eu utilizo RxJava. Mas considerando-se a complexidade em sua manipulação, e supondo que vocês estejam estudando com Kotlin, recomendo fortemente que estudem Coroutines.

Material: Existem centenas de materiais incríveis na internet para aprender sobre Coroutines, mas eu gosto muito dos artigos do Android DevBr (inclusive, siga-os no medium para ficar por dentro das novidades do mundo Android): Veja o artigo aqui.

Bônus: Entra aqui também, um estudo extremamente importante que é sobre threads. Saber o que deve ser executado em MainThread, o que deve ser assíncrono, etc. podem lhe dar uma enorme vantagem na construção de um aplicativo.

Arquitetura & Padrões de Projeto

É fato que qualquer aplicativo que preze por qualidade precisa ter uma arquitetura bem definida. Entender algumas das opções de padrões de projeto mais utilizadas é de extrema importância para conseguir separar responsabilidades, construir um aplicativo robusto, escalável e mais do que isso: ser capaz de se encontrar em um projeto, por mais distintos que possam ser os contextos.

Mas não se desespere! Esse é um assunto complexo, e muito extenso. Você não irá dominar arquitetura e padrões de projetos lendo alguns posts. O ideal é que busque estudar constantemente sobre.

Alguns materiais de estudos que recomendo:

Bônus: Tratando-se de arquitetura e padrões de projeto, um estudo de extrema importância é SOLID. Trata-se de um acrônimo que nos trazem boas práticas de desenvolvimento de software, visando construir aplicações cada vez mais independentes, com alto poder de escalabilidade e testável.

Eu escrevi uma série de artigos explicando cada um dos princípios de forma mais simplificada, que você pode conferir aqui: Parte 1 | Parte 2 | Parte 3 | Parte 4 | Parte 5.

Modularização

Já entrevistei alguns candidatos que nunca haviam ouvido falar sobre modularização. E os poucos que já tinham ouvido falar, se limitavam a citar o benefício da "organização" ao modularizar um aplicativo. A questão é que modularizar vai muito além de organizar seu código.

Modularizar é sobre reutilização de código/feature e principalmente: sobre melhorar o tempo de build. Justamente por esses motivos, essa tem sido uma técnica cada vez mais utilizada no mercado, e portanto, algo extremamente útil para estudar.

Materiais recomendados:

Testes

Esse é o terror de muitos desenvolvedores. Muitos consideram, erroneamente, que testar é de única e exclusiva responsabilidade do QA (quality assurance). A questão é que a qualidade deve ser responsabilidade de todos. Afinal, quanto mais pessoas testarem, maior a probabilidade de um aplicativo coeso e estável.

Os testes automatizados devem se tornar parte do desenvolvimento. Ou seja, uma feature não deveria ser considerada pronta se não houver testes.

Saber a diferença entre testes unitários e testes instrumentados, qual a responsabilidade de cada um deles, como implementar, etc. é extremamente importante.

Alguns nomes para te ajudar a estudar: MockK (teste unitário) e Espresso (teste instrumentado).

Material recomendado:

Bônus: Versionamento de Código e Metodologia Ágil

Quando trabalhamos sozinhos é fácil manter a organização de um código. Afinal, só você mexe nele. Mas agora pensa em um time como o que atuo, com mais de 70 desenvolvedores Android codando ao mesmo tempo. A probabilidade de virar uma confusão é bem grande. E para isso, é extremamente importante saber utilizar git , saber o que é uma branch, fazer um commit, etc. Afinal, não importa qual ferramenta você vai usar: GitHub, Gitlab, Sourcetree, ou tantos outros que existem no mercado: a utilização e conceitos do git são os mesmos.

Aprenda também a usar o git por linha de comando. Isso pode agilizar seu tempo em muitos cenários.

E aproveita o embalo nos estudos sobre git, e leia sobre Code Review. É uma prática muito utilizada no mercado e que é capaz de transmitir muito conhecimento (tanto para quem faz, quanto para quem recebe).

E claro, não poderia deixar de lado a metodologia ágil. É fato que muitas empresas ainda utilizam o método Cascata para desenvolvimento. Mas o ágil vem tomando mercado pouco a pouco e é difícil você pegar um grande projeto que não utilize um Scrum ou Kanban (ou quem sabe os dois, como no meu caso). Portanto, é muito válido você estudar os rituais do movimento ágil, os papéis e suas devidas responsabilidades, assim como os termos mais usados no dia-a-dia como sprint, backlog, review, etc.

Só nesses pontos acima já te dei insight de estudos para o restinho do ano. Mas é claro que a área de programação é extensa, e na parte 3, quero trazer pontos ainda mais complexos como por exemplo: processo de build, custom view, design pattern, ofuscação de código, firebase, CI/CD, etc.

Me siga no LinkedIn para ficar por dentro da parte 3 deste artigo.
Perdeu a parte 1? Veja aqui.

Code Like a Girl 👧

--

--

Aline Souza
Aline Souza

Desenvolvedora Android, apaixonada por tecnologia, e aprendendo todo dia um pouco mais! Code like a girl :)