Junior → Mid RN Leveling
Uma matriz de competências no formato de cookbook para habilidades específicas de mobile em equipes com Expo SDK 57 - defina o que é júnior, o que um pleno gerencia e como fechar lacunas com evidências.
Busque em todas as páginas da documentação
Uma matriz de competências no formato de cookbook para habilidades específicas de mobile em equipes com Expo SDK 57 - defina o que é júnior, o que um pleno gerencia e como fechar lacunas com evidências.
Cartão de nivelamento de referência rápida - copie para a escada de engenharia ou rubrica de desempenho.
Júnior RN (L3) - "entrega com suporte"
✓ Telas do Expo Router + navegação com Link
✓ Testes RNTL para o caminho feliz (happy path)
✓ Checks de PR verdes; corrige suas próprias falhas de lint/tsc
✓ Executa o app em simulador + um dispositivo físico
✓ Pede revisão antes de tocar em configuração nativa
Pleno RN (L4) - "gerencia fatias verticais"
✓ Funcionalidade de ponta a ponta: rota → API → teste → build de preview
✓ Padrões do TanStack Query; sem busca duplicada no store global
✓ Depura Metro, redboxes do Hermes e CI instável
✓ Dispara build de preview EAS; lê perfis do eas.json
✓ Cria 1–3 passos de smoke test do Maestro ou equivalente E2E
✓ Participa de rotação de on-call / release com checklist
Quando usar isso:
Avalie A (autônomo), G (guiado), N (ainda não) por trimestre. Barra de pleno = A em todas as linhas de pleno, G+ na maioria das linhas de júnior.
| Competência | Júnior (L3) | Pleno (L4) | Evidência |
|---|---|---|---|
| Expo Router | G - adiciona telas em grupos existentes | A - grupos de rotas, modais, parâmetros tipados | PRs mesclados tocando em app/ |
| UI React / RN | G - listas, formulários, estados de carregamento | A - listas com atenção à performance, teclado, papéis de a11y | Notas do revisor; queries RNTL por papel |
| TypeScript | G - tipos de props, corrige erros tsc | A - estreita uniões em limites de rota | Zero supressões tsc em arquivos de sua responsabilidade |
| Testes | G - um teste de componente por PR | A - testes de hooks + integração com MSW | Cobertura de CI na pasta de funcionalidade de sua responsabilidade |
| Rede | G - chama hooks de API existentes | A - projeta chaves de Query, UX de erro, política de retentativa | Padrões do TanStack Query em Mobile |
| Casos de borda de navegação | N - surpresas na pilha de volta | G - deep links, redirecionamentos de autenticação | Matriz de teste manual documentada no PR |
| Nativo / EAS | N - usa o cliente de desenvolvimento fornecido | G - dispara build de preview, lê logs | Captura de tela do painel EAS no PR |
| Permissões | N - copia padrão existente | G - fluxos de câmera/localização com caminho de negação | Capturas de tela de diálogos do SO nas notas de QA |
| Offline / NetInfo | N - ciente | G - estados de UI vazios/offline | Teste unitário com NetInfo mockado |
| Performance | N - evita re-renderizações óbvias | G - FlashList, limites de memo | Profiler antes/depois em lista quente |
| Alfabetização em CI/CD | G - corrige falhas de checks de PR | A - conhece lanes de preview vs release | Quiz Noções Básicas de CI/CD Mobile aprovado |
| Higiene de release | N | G - consciência de runtimeVersion, sem segredos no bundle | Assinatura de checklist em RC |
| Depuração | G - cache do Metro, redbox básico | A - traces simbolizados, logs de dispositivo | Participação em postmortem |
| Comunicação | G - standup diário, pergunta cedo | A - estima fatias, sinaliza risco nativo no planejamento | Qualidade da divisão de tickets |
Um foco de competência por sprint - não "aprender tudo".
## Plano de nivelamento de <Engenheiro> - T3
| Sprint | Foco | Sinal de sucesso |
| --- | --- | --- |
| 1 | Router + rotas finas | 2 telas via re-exportação de funcionalidade |
| 2 | RNTL por papel/rótulo | 80% da nova UI tem teste |
| 3 | Leituras de TanStack Query | Remover uma duplicação de busca do Zustand |
| 4 | UX de erro + carregamento | ErrorView padrão na funcionalidade de sua responsabilidade |
| 5 | Build de preview EAS | `eas build --profile preview` solo |
| 6 | QA em dispositivo físico | Linha da matriz de dispositivos no template de PR |
| 7 | Deep link ou redirecionamento de autenticação | Um fluxo de `Redirect` / guarda de fluxo de sua responsabilidade |
| 8 | Fatia de smoke test do Maestro | Fluxo YAML de 3 passos no job opcional de CI |
| 9 | Performance de lista | Migrar um ScrollView → FlashList |
| 10 | Estado vazio offline | Teste mock de NetInfo + UI |
| 11 | Sombra de release | Colega no checklist de RC |
| 12 | Revisão do pacote de pleno | Matriz toda A/G nas linhas de pleno || Nível | Tickets apropriados | Evitar até o pleno |
|---|---|---|
| Júnior | UI de nova linha, cópia, ícone, hook isolado, correções de teste | Atualização de SDK, novo plugin de configuração, submissão de store |
| Pleno | Fatia de nova funcionalidade, integração de API, reestruturação de navegação | Atualização principal de SDK solo sem engenheiro sênior |
| Sênior+ | Módulos entre aplicativos, pontes nativas, arquitetura de CI | - |
Exemplo de ticket júnior:
"Adicionar badge de status do pedido à OrderRow - usa o hook useOrder existente"
Exemplo de ticket pleno:
"Adicionar fluxo de cancelamento de pedido - nova rota, mutação, estados de erro, build de preview"| Habilidade Web | Mapeia para mobile | Lacuna a fechar |
|---|---|---|
| Hooks React | Mesmo modelo mental | Primitivas RN (View, Pressable) |
| Layout CSS | Flexbox similar | Sem cascade - StyleSheet / NativeWind |
| React Router | Rotas de arquivo do Expo Router | router.push imperativo, pilha de volta mobile |
| Navegadores DevTools | React DevTools | Flipper / React Native DevTools, logs de simulador |
fetch + SWR | TanStack Query | Offline, background do app, refresh de token |
| Jest + RTL | RNTL | jest-expo, mocks de módulos nativos |
| Deploy para Vercel | EAS Build + lojas | Assinatura de código, rollout faseado |
A promoção para pleno deve citar artefatos, não adjetivos:
## Evidências de promoção para pleno - <nome>
### Entrega
- 3 fatias de funcionalidade gerenciadas de ponta a ponta (links dos PRs)
- 1 ciclo de QA impulsionado por build de preview liderado
### Qualidade
- Testes RNTL em funcionalidades de sua responsabilidade - <contagem> testes adicionados
- Zero bugs P1 rastreados até estado de carregamento/erro ausente no código de sua responsabilidade
### Artesanato Mobile
- Smoke test do Maestro: <link ou arquivo de fluxo>
- Matriz de dispositivos concluída na RC <versão>
### Colaboração
- Onboardou 1 contratação em tour pelo codebase
- Colega no checklist de release em <data>
### Bordas de crescimento (honesto)
- Ainda G em: inicialização a frio de push notification
- Plano: parear com <sênior> no T4| Sinal | Por que falha |
|---|---|
| "Conhece React há 5 anos" | Experiência Web ≠ alfabetização em release nativa |
| "Mesclou 100 PRs" | Contagem sem escopo - correções de digitação ≠ propriedade de funcionalidade |
| "Trabalha até tarde" | Horas ≠ autonomia em EAS ou matriz de dispositivos |
| "Opiniões fortes sobre Redux" | Debates de arquitetura sem evidência de entrega |
Use em reuniões de nivelamento:
| Lacuna | Recurso neste site de docs |
|---|---|
| Router | Noções Básicas do Expo Router |
| EAS | Noções Básicas do EAS Build |
| Testes | Noções Básicas de Testes Mobile |
| CI | Noções Básicas de CI/CD Mobile |
| Estrutura | Estrutura de Pastas para Funcionalidades |
| Performance | Noções Básicas de Performance |
A velocidade da UI pode ser de pleno; nativo/EAS/permissões provavelmente júnior. Divida as linhas da matriz - não pule a alfabetização de dispositivos e releases.
Proporção comum: 2 plenos : 1 sênior : 1–2 juniores para um squad de produto de 4–5. Ajuste quando a carga de release for alta.
Use a matriz para limites de escopo, não para promoção. Contratados podem ter "escopo pleno" sem o título L4.
Não - a barra de pleno ainda exige literacia em builds de preview. Use o cliente de desenvolvimento compartilhado da organização se o acesso pessoal ao EAS for limitado.
Versões da Stack: Esta página foi escrita para React 19.2.3, React Native 0.86.0 e Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026