Pesquisa: o mercado Dev Android Jr em 2021
Nós da Alura procuramos melhorar constantemente o nosso conteúdo, e no mês de março, fizemos uma pesquisa para entender melhor como o mercado enxerga alguém que vai atuar como dev Android Junior em 2021.
Fontes da pesquisa
Como fontes de pesquisa, utilizamos vagas online publicadas em diversos sites e uma pesquisa em aberto (realizada em março de 2021), criada por nós e com 93 respostas, informações da comunidade, desde estagiários a líderes que atuam na área.
Começando com a atuação das pessoas no mercado de Android, tivemos os seguintes resultados:
Então com base nas seguintes tecnologias:
- Activities
- AndroidX
- Broadcasts
- Ciclo de vida
- Componentes do Material Design
- Constraint Layout
- Coroutines
- Data Binding
- Dagger/Hilt
- Flow
- Fragments
- Git
- Integração com Web Services/API
- Internacionalização
- Java
- Koin
- Kotlin
- Persistência de dados
- Navigation
- Retrofit
- Services
- SharedFlow
- Shared Preferences
- SQLite
- StateFlow
- Testes com Mock
- Testes de integração
- Testes de unidade
- Testes instrumentais
- Volley
- ViewModel
- WorkManager
Tivemos duas perguntas relacionadas às tecnologias que são imprescindíveis e as diferenciais para atuar como Dev Android Jr. Nas tecnologias imprescindíveis tivemos o seguinte resultado:
Em maiores destaques temos Kotlin, Ciclo de vida, Activities e Git. Como podemos notar, o Kotlin com 89% é a tecnologia que mais se destaca, indicando que se você quer atuar como um Dev Android Jr, precisa aprender Kotlin!
Nas respostas de tecnologias diferenciais, tivemos um resultado bastante curioso:
Note que muitas das pessoas destacaram todos os fundamentos de testes, desde unidade a testes instrumentais! Portanto, se você quer se destacar no mercado, habilidades com testes no mundo Android são muito desejadas!
Outra leitura que podemos fazer da pesquisa, é que as demais tecnologias também são importantes! Isso significa que apenas conhecer as Top 10 tecnologias imprescindíveis ou diferenciais, podem não ser o suficiente para você atender a todos os requisitos de uma vaga para o mercado de Dev Android Jr.
"Então quais são as outras tecnologias que eu devo ficar de olho?"
Pesquisa de mercado
Considerando também a pesquisa de mercado, abaixo são apresentadas as tecnologias e habilidades que foram apresentadas na maioria das vagas:
- Kotlin e Java
- Android SDK
- Ciclo de vida
- Activity e Fragments
- Services, Broadcast
- Criação de layout e telas, Constraint Layout
- Persistência de dados interno e externo (Web Services/APIs)
- Sqlite com Room
- Requisições com o Retrofit
- Bibliotecas
- Jetpack
- Room, ViewModel, LiveData, Data Binding e Navigation
- Retrofit
- Injeção de dependência (dagger/hilt ou koin)
- Jetpack
- Git
Observe que boa parte das tecnologias foram apresentadas nos resultados da pesquisa! É válido ressaltar que nem toda a vaga é igual, há empresas que exigem mais conhecimento de uma tecnologia em específico do que outra, ou até mesmo considere algumas exigências como diferencial.
Minhas impressões
Além da pesquisa, também posso compartilhar um pouco da minha visão em relação ao desenvolvimento Android, como dev e professor de Android. Muito do que acredito está relacionado com a pesquisa, conversas com amigos e outros devs Android.
TL;DR
Acredito que aprender tanto Java como Kotlin é importante. Conhecer Activities, Fragments e ciclo de vida é necessário para desenvolver Apps. Na criação de telas complexas, o Constraint Layout faz muita diferença. Todo o App exige técnicas de persistência de dados interno ou externo. O conhecimento de bibliotecas comuns em projeto é benéfico para conhecer as técnicas e soluções frequentes na maioria dos Apps. Versionar o código com Git é essencial para se trabalhar em time. Aprender pelo menos os fundamentos de testes é essencial.
Java ou Kotlin?
Independente de conhecer Java ou Kotlin, acredito que ter um bom conhecimento em programação orientada a objetos seja essencial para desenvolver Apps Android. Toda a base do framework do Android utiliza todos os conceitos desse paradigma!
Entre Kotlin ou Java, eu acredito que o investimento no Kotlin seja melhor, pois as novas soluções, bibliotecas, padrões, comunidade, Google etc estão focando em Kotlin.
Isso significa que não faz sentido aprender Java?
Não necessariamente, pois se você vai fazer manutenção em um projeto e ele utiliza Java, o conhecimento em Java vai ser fundamental para que você consiga trabalhar. Em outras palavras, tente aprender os dois! Após aprender uma das linguagens a curva de aprendizagem é menor para a outra.
Fundamentos do Android
Conhecer Activities, Fragments e ciclo de vida são fundamentais para que você consiga criar funcionalidades, telas, utilizar bibliotecas e se comunicar com diversos componentes que usam essas soluções do ambiente do Android.
Criação de telas
A criação de telas é de extrema importância, existem muitas técnicas para isso e o Constraint Layout é o componente que permite implementar telas mais complexas com uma certa facilidade, portanto, acredito que seja bem importante o seu conhecimento também!
É válido notar que atualmente temos o Jetpack Compose que traz uma nova maneira de criar telas no Android. No momento não é uma exigência no mercado, mas acredito que tem muito potencial para ser adotado, recomendo o acompanhamento também.
Persistência de dados
Saber como persistir dados de maneira interna ou externa também é muito importante! Todo o aplicativo vai exigir esse tipo de solução, a maioria dos casos vão utilizar bibliotecas mais famosas como o Room ou Retrofit e é extremamente recomendado o seu aprendizado.
Programação assíncrona
Lidar com implementações que exigem computação assíncrona é um outro ponto bastante comum e importante no Android! Toda a aplicação vai precisar lidar com esse tipo de comportamento, seja uma transação no banco de dados interno, requisição HTTP ou qualquer operação que tende a demorar... Para esses cenários, as Coroutines estão cada vez mais em alta por facilitar a forma como programamos de maneira assíncrona, portanto, reserve também o seu tempo para estudar Coroutines!
Bibliotecas do mundo Android
Conhecer as bibliotecas comuns em projetos Android é bastante importante (AndroidX, Jetpack, Dagger/Hilt, Retrofit e etc), pois facilita a compreensão do que geralmente os Apps precisam, como essas necessidades/problemas são solucionados com as bibliotecas e também como utilizá-las adequadamente para o ambiente Android. Como destaque, recomendo focar nas bibliotecas do Jetpack.
Versionamento de código
Também acredito que além desses pontos e outros, aprender a versionar o seu código com Git seja algo necessário para conseguir trabalhar em equipe. Por mais que não seja algo específico de Android, aprender versionamento é esperado na maioria das áreas de desenvolvimento de software, ou seja, quanto antes você conhecer/aprender, melhor será para a sua carreira como dev em geral.
Testes automatizados
Por fim, mesmo que na pesquisa a parte de teste entrou como um diferencial, recomendo que estude pelo menos os fundamentos de testes (unidade, mocks, integração e instrumentais), pois a maioria dos projetos (se não todos) vão exigir o conhecimento e implementação de testes.
O que você achou?
Agora que compartilhei o meu ponto de vista, convido você para compartilhar aqui nos comentários o que você achou da pesquisa, como enxerga o mercado de Dev Android ou até mesmo se discorda de algum ponto, ou tem algo para complementar. O seu ponto de vista é muito importante para toda a comunidade :)