Rafael Oliveira: Mobile First, Full-Stack Sempre

Rafael Oliveira • Tech Lead Mobile @ iFood

Eu entrei na área por acaso. Queria fazer games, acabei fazendo apps mobile. Hoje sou Tech Lead Mobile no iFood, onde lidero um time que mantém apps usados por milhões de brasileiros todo dia.

São 8 anos entre Android nativo, iOS, React Native, Flutter... e sempre tendo que entender de backend porque, sejamos honestos: mobile dev que não sabe nada de API é mobile dev pela metade.

O livro que me fez virar "de verdade"

Clean Code. Sim, eu sei que é clichê.

Mas cara, quando eu comecei em mobile eu escrevia código HORRÍVEL. Activities com 2000 linhas, tudo acoplado, zero testes. Aquele clássico código que funciona mas você tem medo de mexer.

Clean Code me fez entender que código não é só "pra máquina rodar". É pra humanos lerem. Inclusive você mesmo daqui 3 meses quando não lembrar mais o que tava pensando.

Depois dele, comecei a refatorar tudo. MVVM, Clean Architecture, injeção de dependência... O app não ficou mais rápido, mas ficou infinitamente mais fácil de manter.

Android: além do básico

Effective Java do Joshua Bloch. Obrigatório se você mexe com Android/Kotlin.

"Mas Rafa, Kotlin não é Java!" - Eu sei. Mas Kotlin roda na JVM e herda muita coisa de Java. Entender imutabilidade, equals/hashCode, generics... isso te faz um dev Android muito melhor.

Tem um capítulo sobre builders que mudou como eu crio objetos complexos. E outro sobre concurrency que me salvou de uns bugs bizarros com threads.

É denso, mas se você quer ir além de copiar código do Stack Overflow, lê esse livro.

React Native: a ponte entre mundos

Eu passei anos em Android nativo. Quando migrei pra React Native, precisava entender JavaScript de verdade.

You Don't Know JS: Scope & Closures me salvou.

O Kyle Simpson não ensina JavaScript como "aquela linguagem de copiar e colar". Ele vai FUNDO. Como funcionam closures? O que é hoisting de verdade? Como o scope realmente funciona?

Depois de ler, eu finalmente entendi por que meu código bugava. E parei de ter medo de this.

A série inteira (6 livros) vale a pena, mas se você só conseguir ler um, começa por esse.

Design Patterns: não reinvente a roda

Design Patterns da Gang of Four. O clássico dos clássicos.

"Mas Rafa, 1994? Sério?" - SIM. Patterns são atemporais.

Singleton, Observer, Factory, Strategy... você USA isso todo dia em mobile e talvez nem saiba. Quando você entende os patterns, você para de reinventar a roda mal feita.

Tem gente que acha que esse livro é só teoria. Mentira. Eu uso Factory pra criar views complexas. Observer tá em TODO event listener. Strategy em toda condicional complexa.

Não precisa decorar todos os 23 patterns. Mas conhecer os principais te faz um dev MUITO melhor.

Sistema Design pra mobile? Sim!

System Design Interview não é só pra backend.

Como você desenharia o feed do Instagram? E o Uber? E notificações push em escala?

Mobile dev precisa entender: caching, offline-first, sync, retry policies, circuit breakers... Essas paradas são CRUCIAIS pra apps que funcionam na vida real.

O livro ensina a pensar em escala. Como você lida com milhões de usuários? E quando a API cai? E quando o usuário tá no metrô sem internet?

Isso mudou como eu desenho features.

Refactoring: melhorando sem quebrar

Refactoring do Martin Fowler. Referência absoluta.

Código legado é inevitável. A questão não é SE você vai ter que refatorar, é QUANDO. E COMO fazer isso sem quebrar tudo.

O Fowler ensina técnicas pra melhorar código de forma incremental e segura. Extract Method, Replace Conditional with Polymorphism, Introduce Parameter Object...

Parece chato no nome mas na prática é libertador. Você pega aquele método gigante e transforma em algo legível, testável, mantível.

Se você trabalha com código que já existe (spoiler: todo mundo trabalha), esse livro é essencial.

Microservices: o backend que mobile precisa entender

Building Microservices me ajudou a entender o outro lado.

Como mobile dev, você CONSOME APIs. Mas se você não entende como elas são feitas, você vai sofrer.

Por que essa API é tão lenta? Por que tenho que fazer 10 requests pra carregar uma tela? Por que não tem cache? Por que o timeout é tão curto?

Quando você entende microservices, você consegue ter conversas melhores com o time de backend. E às vezes até propor soluções (BFF, GraphQL, etc).

Não precisa virar backend dev. Mas entender o básico de arquitetura de APIs te faz um mobile dev muito mais completo.

Kubernetes: sim, mobile dev precisa saber

"Rafa, eu faço app, não DevOps!" - Eu também. Mas...

Kubernetes in Action me ajudou a entender onde meu código roda.

Por que meu app às vezes demora 30s pra fazer login? Por que às vezes falha? Por que a versão nova da API não tá funcionando?

Quando você entende pods, services, deployments, health checks... você entende por que as coisas quebram. E pode ajudar a debugar.

Não precisa virar especialista em K8s. Mas saber o básico te dá superpoderes nas reuniões de incident.

Docker: ambientes que funcionam

Docker Deep Dive do Nigel Poulton.

Quantas vezes você já falou "mas na minha máquina funciona"?

Docker resolve isso. E mobile dev DEVERIA usar mais Docker pra ambientes de backend local.

O livro ensina desde o básico (containers vs VMs) até coisas avançadas (networking, volumes, compose). Depois de ler, consegui rodar toda a stack do iFood na minha máquina sem instalar nada.

Isso me deixou muito mais produtivo. E independente de internet (que cai, sempre).

Meus 3 essenciais

Se só dá pra ler 3:

  1. Clean Code - base de tudo
  2. System Design Interview - pensamento em escala
  3. You Don't Know JS: Scope & Closures - JavaScript de verdade

Esses três te dão fundamentos sólidos independente de você fazer Android, iOS, React Native ou Flutter.

Livros que eu NÃO recomendo

Aqueles livros de "Aprenda X em 21 dias". Mentira. Você não aprende.

Livros muito específicos de framework também envelhecem rápido. "React Native Avançado 2023" já tá desatualizado em 2024.

Prefira livros sobre conceitos que sobre ferramentas. Ferramentas mudam, conceitos ficam.

O que estou lendo agora

Designing Data-Intensive Applications. Quero entender melhor databases porque mobile moderno precisa lidar com muito dado local (SQLite, Realm, etc).

E quero reler The Pragmatic Programmer - sempre tem coisa nova pra tirar.

Conselho pra quem tá começando

Mobile é foda. É front-end + back-end + DevOps tudo junto. Você precisa entender UI, networking, databases, threads, memória, bateria...

Mas não tenta aprender tudo de uma vez. Pega um livro de fundamentos (tipo Clean Code), aplica no seu dia a dia, depois parte pro próximo.

E mais importante: CONSTRUA COISAS. Livro sem prática é só teoria vazia.


A real é que mobile development tá cada vez mais complexo. Não é só fazer tela bonita - é sobre performance, offline-first, segurança, acessibilidade, analytics...

Mas também tá cada vez mais interessante. Você toca em tudo: front, back, infra, design, produto.

Livros te dão a base. A prática te dá as cicatrizes. Você precisa dos dois.

Vamo que vamo! 📱🚀

Receba novas entrevistas

Toda vez que publicarmos uma nova entrevista, você recebe no seu email. Sem spam, prometido.

Você pode cancelar sua inscrição a qualquer momento. Seus dados estão seguros e não serão compartilhados.