Resposta rápida: para conseguir uma vaga de Kotlin júnior, você não precisa dominar todo o ecossistema. Precisa escrever Kotlin com segurança, escolher uma trilha inicial — Android ou backend —, publicar dois projetos que funcionem, testar as partes importantes e explicar suas decisões em uma entrevista. Um plano eficiente combina fundamentos da linguagem, Git, HTTP, banco de dados, testes e uma stack coerente. O objetivo não é colecionar cursos: é provar que você consegue transformar um requisito pequeno em software executável e compreensível.
A expressão “Kotlin júnior” costuma aparecer em buscas de quem quer entrar no mercado, mas raramente descreve uma função isolada. Na prática, as empresas contratam uma pessoa desenvolvedora Android com Kotlin, backend JVM com Kotlin ou, com menos frequência no nível inicial, alguém para Kotlin Multiplatform. Por isso, o melhor roadmap começa com uma base comum e depois se divide em uma especialização.
Este guia mostra o que estudar, o que colocar no portfólio, como identificar uma vaga realmente júnior e como organizar 90 dias de preparação sem tentar aprender vinte ferramentas ao mesmo tempo.
O que uma pessoa desenvolvedora Kotlin júnior precisa saber?
Uma pessoa júnior não precisa projetar toda a arquitetura de uma plataforma, decidir sozinha a estratégia de observabilidade ou otimizar sistemas distribuídos. Ela precisa conseguir receber uma tarefa delimitada, entender o código ao redor, implementar a mudança, pedir ajuda com contexto e entregar algo testável.
A base técnica esperada costuma incluir:
- sintaxe de Kotlin, funções, classes e coleções;
- null safety e modelagem de estados;
- orientação a objetos e noções de programação funcional;
- Git, branches, commits e pull requests;
- testes unitários básicos;
- leitura de documentação técnica;
- capacidade de depurar um erro sem depender apenas de tentativa e erro;
- uma especialização inicial em Android ou backend.
Você não precisa saber tudo de memória. Precisa reconhecer os conceitos, consultar documentação e conseguir justificar escolhas simples. Dizer “usei val porque o valor não deve mudar” ou “modelei os estados da tela com uma sealed interface para evitar combinações inválidas” vale mais do que repetir definições decoradas.
Fundamentos de Kotlin que vêm antes do framework
Antes de Jetpack Compose, Spring Boot ou Ktor, domine a linguagem. Frameworks mudam; fundamentos continuam aparecendo em projetos e entrevistas.
Variáveis, tipos e null safety
Entenda a diferença entre val e var, inferência de tipos, tipos anuláveis e operadores como ?., ?: e let. Evite usar !! como solução automática: ele apenas adia um possível erro para o runtime.
data class Candidato(
val nome: String,
val github: String?
)
fun exibirPortfolio(candidato: Candidato): String =
candidato.github
?.takeIf { it.isNotBlank() }
?.let { "Portfólio: $it" }
?: "Portfólio ainda não informado"
Esse exemplo pequeno já mostra imutabilidade, nullable types, takeIf, let e Elvis operator. Se esses recursos ainda confundem, revise o guia de null safety em Kotlin e o tutorial sobre a diferença entre val e var.
Coleções e transformações
Vagas júnior cobram muito mais manipulação de listas do que algoritmos exóticos. Pratique map, filter, associateBy, groupBy, sortedBy e operações de agregação.
data class Vaga(
val titulo: String,
val tecnologias: Set<String>,
val ativa: Boolean
)
fun vagasKotlinAtivas(vagas: List<Vaga>): List<String> =
vagas
.filter { it.ativa && "Kotlin" in it.tecnologias }
.map { it.titulo }
.sorted()
A habilidade importante é ler a transformação como uma sequência previsível, sem criar mutabilidade desnecessária.
Classes de dados, interfaces seladas e extension functions
Aprenda quando usar data class, enum class, sealed class ou sealed interface. Também pratique extension functions sem transformá-las em um depósito de lógica global.
sealed interface ResultadoCadastro {
data class Sucesso(val id: Long) : ResultadoCadastro
data class ErroValidacao(val campos: List<String>) : ResultadoCadastro
data object Indisponivel : ResultadoCadastro
}
fun ResultadoCadastro.mensagem(): String = when (this) {
is ResultadoCadastro.Sucesso -> "Cadastro criado com o ID $id"
is ResultadoCadastro.ErroValidacao -> "Revise: ${campos.joinToString()}"
ResultadoCadastro.Indisponivel -> "Serviço indisponível"
}
Esse tipo de modelagem aparece tanto em estados de tela Android quanto em resultados de serviços backend. O guia de sealed classes em Kotlin aprofunda o padrão.
Coroutines sem mistério desnecessário
No nível júnior, você deve entender suspend, escopo, cancelamento e a diferença entre trabalho sequencial e concorrente. Não precisa decorar todos os dispatchers, mas precisa evitar GlobalScope, bloqueios acidentais e Thread.sleep em código assíncrono.
Comece pelo conteúdo de coroutines em Kotlin e pratique com uma operação de rede ou banco que possa ser cancelada.
Escolha uma trilha: Android ou backend
Tentar estudar Android, backend, multiplataforma, data science e DevOps ao mesmo tempo produz familiaridade superficial. Escolha uma trilha principal para a primeira vaga e mantenha a outra apenas como contexto.
| Critério | Android com Kotlin | Backend com Kotlin |
|---|---|---|
| Produto principal | Aplicativo e experiência mobile | APIs, integrações e serviços |
| Stack inicial | Compose, ViewModel, Navigation, Room, Retrofit/Ktor Client | Ktor ou Spring Boot, HTTP, SQL, PostgreSQL, migrations |
| Resultado do portfólio | Visual e fácil de demonstrar | Fácil de testar por endpoints e documentação |
| Conhecimentos complementares | Lifecycle, estado, acessibilidade, publicação | Banco, autenticação, logs, containers |
| Bom encaixe para quem gosta de | Interface, produto e interação | Regras, dados e integrações |
Não existe trilha universalmente melhor. A melhor é aquela em que você consegue concluir projetos, explicar decisões e encontrar vagas compatíveis com seu momento.
Roadmap Kotlin júnior para Android
Para uma primeira vaga Android, organize o estudo nesta ordem:
- Kotlin básico e intermediário: null safety, coleções, classes, lambdas e coroutines.
- Android Studio e Gradle: executar o app, entender variantes e resolver dependências.
- Jetpack Compose: componentes, estado, listas, temas e formulários.
- ViewModel e fluxo de estado: representar carregamento, sucesso e erro.
- Navegação: rotas, argumentos e retorno entre telas.
- Rede: consumir uma API e tratar falhas, timeout e ausência de conexão.
- Persistência local: Room ou DataStore, conforme o tipo de dado.
- Testes: regras do ViewModel, mappers e componentes importantes.
Seu primeiro app não precisa ter cinquenta telas. Um projeto pequeno com lista, detalhe, busca, cache local e tratamento de erro demonstra mais maturidade do que um clone grande que só funciona no caminho feliz.
Use o roadmap de desenvolvimento Android para aprofundar cada etapa e o guia de Jetpack Compose para montar a interface.
Roadmap Kotlin júnior para backend
Para backend, a sequência mais eficiente é:
- Kotlin e Gradle: linguagem, dependências, tasks e organização de módulos.
- HTTP e APIs REST: métodos, status codes, headers, JSON e idempotência.
- Um framework: escolha Ktor ou Spring Boot para o primeiro projeto.
- Banco relacional: SQL, índices básicos, constraints e transações.
- Persistência: Exposed, JPA ou outra ferramenta coerente com o framework.
- Migrations: Flyway ou Liquibase como fonte de verdade do schema.
- Testes: unidade, integração e banco real em pontos críticos.
- Operação básica: logs, variáveis de ambiente, Docker e health check.
Evite começar com microsserviços, Kafka e Kubernetes. Um monólito pequeno, bem organizado e testado é um portfólio júnior melhor do que cinco serviços incompletos. Você pode evoluir depois para mensageria e observabilidade.
Para comparar as opções, leia Ktor vs Spring Boot e siga o roadmap de backend Kotlin. Se escolher Ktor, o tutorial de APIs REST com Kotlin oferece uma base prática.
Dois projetos de portfólio são suficientes?
Dois projetos bons são melhores do que dez repositórios abandonados. O ideal é que cada projeto demonstre uma categoria diferente de habilidade.
Projeto 1: aplicação de produto
No Android, pode ser um organizador de estudos, catálogo ou aplicativo de hábitos. No backend, pode ser uma API de reservas, tarefas ou controle de estoque.
Inclua:
- README com objetivo, stack e instruções de execução;
- funcionalidades concluídas, não apenas telas vazias;
- validação e tratamento de erro;
- persistência;
- pelo menos alguns testes úteis;
- commits compreensíveis;
- screenshots ou exemplos de requisições.
Projeto 2: integração e confiabilidade
Construa algo que consuma uma API externa, sincronize dados ou trabalhe com uma dependência real. Isso cria oportunidades para mostrar timeout, cache, retry, estados de falha e testes de integração.
No backend, você pode usar Testcontainers com Kotlin para provar que o repository funciona com PostgreSQL. No Android, pode testar um ViewModel e seus fluxos com o guia de Flow e StateFlow usando Turbine.
Não coloque chaves de API no Git. Use variáveis de ambiente, arquivos locais ignorados e instruções claras no README.
Como deve ser o GitHub de um Kotlin júnior?
Recrutadores e pessoas entrevistadoras não esperam um projeto famoso. Elas procuram sinais de organização e capacidade de finalizar.
Antes de enviar o link, confira:
- o projeto compila seguindo o README;
- não há credenciais, tokens ou arquivos locais commitados;
- nomes de classes e funções comunicam intenção;
- o histórico não é composto por um único commit “projeto pronto”;
- issues conhecidas estão documentadas;
- testes rodam com um comando claro;
- a arquitetura é proporcional ao tamanho do problema;
- o repositório fixado no perfil é realmente seu melhor trabalho.
Um README honesto também pode explicar escolhas: “usei Ktor por querer uma configuração explícita” ou “mantive um único módulo porque o app ainda é pequeno”. Isso mostra julgamento técnico. Veja mais exemplos no guia de portfólio para desenvolvedor Kotlin.
O que estudar para a entrevista Kotlin júnior
Prepare-se em quatro blocos.
1. Linguagem
Revise null safety, coleções, funções de escopo, data class, sealed types, exceptions e coroutines. Treine explicar um trecho de código, não apenas escrever do zero.
2. Sua trilha
Para Android, revise estado, lifecycle, ViewModel, Compose e consumo de API. Para backend, revise HTTP, SQL, autenticação básica, injeção de dependência e testes.
3. Projetos
Você deve saber responder:
- qual problema o projeto resolve;
- por que escolheu a stack;
- qual foi o bug mais difícil;
- como tratou erros;
- o que testou e o que não testou;
- o que mudaria com mais tempo.
Se você não consegue explicar o próprio repositório, certificados não compensam.
4. Colaboração
Prepare exemplos de como recebeu feedback, pesquisou uma solução, dividiu uma tarefa e pediu ajuda. Para júnior, comunicação e capacidade de aprendizado têm peso alto.
O guia de entrevista para Kotlin e Android traz perguntas e um plano mais detalhado.
Como reconhecer uma vaga realmente júnior
Nem todo anúncio com “júnior” no título possui escopo inicial. Avalie o conjunto.
Sinais positivos:
- responsabilidades delimitadas;
- revisão de código e mentoria;
- requisitos concentrados em uma stack;
- espaço explícito para aprendizado;
- processo técnico compatível com o nível;
- descrição clara do time e do produto.
Sinais de alerta:
- exigência de liderança ou decisões arquiteturais sozinho;
- uma lista enorme de clouds, filas, bancos e frameworks obrigatórios;
- responsabilidade por produção sem suporte;
- expectativa de experiência profunda em várias especializações;
- descrição vaga, mas cobrança por disponibilidade total.
Você não precisa cumprir 100% dos itens para se candidatar. Se atende à base e consegue demonstrar aprendizado nos demais pontos, a candidatura pode fazer sentido. Acompanhe as vagas Kotlin júnior e leia cada descrição como um mapa do que o mercado está pedindo — não como uma sentença sobre seu valor profissional.
Plano de 90 dias para sair do estudo solto
Um plano possível, adaptável à sua disponibilidade:
Dias 1 a 30: base executável
- revisar fundamentos de Kotlin;
- resolver exercícios curtos de coleções e null safety;
- usar Git em todos os dias de prática;
- escolher Android ou backend;
- criar o esqueleto do primeiro projeto;
- escrever os primeiros testes.
Dias 31 a 60: projeto completo
- implementar a funcionalidade principal;
- adicionar persistência e integração externa;
- tratar carregamento, erro e dados vazios;
- melhorar o README;
- pedir revisão para alguém da comunidade;
- publicar uma versão demonstrável.
Dias 61 a 90: candidatura e entrevista
- começar o segundo projeto, com escopo menor;
- revisar perguntas técnicas da trilha;
- ajustar currículo e LinkedIn;
- fazer candidaturas semanais com registro de status;
- simular explicações dos projetos em voz alta;
- estudar lacunas observadas em vagas reais.
Para organizar o processo sem perder prazos e respostas, use uma planilha ou quadro simples. O guia do eu.dev.br sobre acompanhamento de candidaturas júnior complementa esta etapa sem exigir uma ferramenta complexa.
Erros que atrasam a primeira vaga
Estudar sem publicar nada
Curso concluído não prova que você resolve ambiguidades. Transforme cada bloco de estudo em uma pequena entrega visível.
Trocar de stack toda semana
Compose hoje, Spring amanhã, Flutter depois e React na semana seguinte impedem profundidade. Mantenha uma trilha por pelo menos um ciclo completo de projeto.
Copiar arquitetura grande para app pequeno
Dez módulos e várias camadas não tornam o projeto automaticamente profissional. Complexidade deve resolver um problema real.
Ignorar testes e documentação
No nível júnior, poucos testes bem escolhidos e um README claro diferenciam o portfólio. Eles mostram preocupação com manutenção e colaboração.
Esperar sentir que está “pronto”
A preparação e as candidaturas podem acontecer em paralelo. Inscreva-se quando já tiver fundamentos e um projeto apresentável; use os processos para descobrir lacunas concretas.
Checklist Kotlin júnior
Antes de intensificar as candidaturas, verifique se você consegue:
- explicar
val,var, nullable types e Elvis operator; - transformar coleções com
map,filteregroupBy; - modelar estados com
data classe sealed types; - usar coroutines sem bloquear a thread desnecessariamente;
- criar branch, commit e pull request;
- concluir uma funcionalidade na trilha Android ou backend;
- persistir e recuperar dados;
- escrever testes para uma regra importante;
- executar o projeto seguindo o próprio README;
- explicar decisões, limitações e próximos passos;
- identificar vagas coerentes com o nível júnior;
- manter uma rotina de candidaturas e revisão.
Perguntas frequentes
Kotlin júnior precisa saber Java?
Não precisa dominar Java antes de começar, mas deve conseguir ler código Java básico. Muitos projetos Kotlin convivem com bibliotecas, módulos e equipes Java. A interoperabilidade é parte importante do ecossistema JVM.
É melhor começar por Android ou backend Kotlin?
Comece pela área em que você consegue construir e concluir projetos. Android oferece resultado visual e muitas aplicações Kotlin; backend é adequado para quem gosta de APIs, dados e integrações. Pesquise as vagas da sua região e escolha uma trilha por vez.
Preciso de faculdade para trabalhar com Kotlin?
Nem todas as vagas exigem graduação, mas faculdade é especialmente relevante para estágios e alguns programas de grandes empresas. Sem ela, portfólio, experiência prática, networking e comunicação precisam compensar a ausência do filtro acadêmico.
Quantos projetos devo ter no portfólio?
Dois projetos concluídos, documentados e testáveis já permitem uma boa conversa de entrevista. A qualidade, a autoria real e sua capacidade de explicar o código importam mais que a quantidade de repositórios.
Quanto ganha um desenvolvedor Kotlin júnior?
A remuneração depende de cidade, regime, especialização e empresa. Consulte o levantamento de salário para desenvolvedor Kotlin júnior em 2026 para ver faixas CLT, PJ e remotas separadamente.
Próximo passo
Se você quer trabalhar como Kotlin júnior, escolha hoje uma trilha e um projeto que caiba em quatro a oito semanas. Defina três funcionalidades essenciais, crie o repositório, escreva um README inicial e faça a primeira entrega antes de adicionar tecnologias extras.
Depois, acompanhe vagas reais e transforme requisitos recorrentes em prioridades de estudo. Android pede Compose, estado e integração com APIs; backend pede HTTP, SQL, framework e testes. Em ambos os casos, fundamentos de Kotlin, Git, comunicação e capacidade de concluir trabalho continuam sendo a base.
A primeira vaga não exige perfeição. Exige evidência de que você aprende, implementa, testa, comunica e melhora. Use o guia completo para aprender Kotlin, escolha o roadmap Android ou o roadmap backend e transforme estudo em software publicado.