Live roles / iFood
Compatibility brief · Discovered by NoBoards 1h ago

iOS Software Engineer Sênior

iFood · São Paulo
Sponsorship not statedMode not stated

Nosso Modo de Fazer no Time:

Transforme sua carreira com o iFood! Somos uma empresa brasileira de tecnologia referência na América Latina. Por meio de soluções inovadoras, conectamos milhares de restaurantes a milhões de consumidores diariamente com uma média de 100 milhões de pedidos mensais. Além do delivery de comida, também somos Mercado, Farmácia e Pet. Temos também o iFood Pago, nossa Fintech, que engloba o iFood Benefícios, o vale alimentação e refeição do iFood e o próprio iFood Pago, o banco do restaurante. Junte-se a nós e faça parte de uma equipe que está sempre à frente com tecnologia de ponta e inovação constante.

Seu Cardápio Diário

Buscamos um(a) Desenvolvedor(a) iOS Sênior para atuar em produtos bancários e de pagamentos do iFood Pago, com domínio da plataforma iOS e capacidade de entrega ponta a ponta. Você colaborará com produto, design, segurança e demais times de engenharia, com atuação mínima em BFFs (Backend for Frontend) para viabilizar as integrações do app.

É desejável que a pessoa tenha boa desenvoltura para tomada de decisões do dia a dia, além de um conhecimento técnico amplo e uma preocupação com qualidade, boas práticas e esteja sempre buscando formas diferentes e inovadoras de se resolver problemas.

Você fará parte de um time que constrói produtos financeiros em escala, onde segurança, performance e confiabilidade não são opcionais — são o produto.

Ingredientes que Buscamos

Linguagem e Fundamentos

  • Proficiência em Swift, com domínio das versões mais recentes da linguagem.
  • Familiaridade com Objective-C para interoperabilidade e manutenção de código legado.
  • Conhecimento e aplicação dos princípios SOLID no dia a dia.
  • Entendimento de heap e stack, e impacto de struct vs class na performance.
  • Boas práticas de Clean Code e design patterns.

Arquitetura e UI

  • Experiência com design patterns de UI: VIP, MVC, MVVM, MVVM-C e VIPER.
  • Capacidade de escolher a melhor arquitetura conforme o problema, considerando trade-offs, escalabilidade, testabilidade e manutenção.
  • Domínio em componentização e modularização do código para projetos de larga escala.
  • Domínio em Auto Layout, View Code (UIKit) e experiência com SwiftUI.
  • Capacidade de construir interfaces responsivas, performáticas e acessíveis.
  • Compreensão profunda do ciclo de vida do UIKit e otimizações de performance visual.

Concorrência e Performance

  • Conhecimento sólido sobre GCD (Grand Central Dispatch), DispatchGroup, DispatchQueue, concorrência e problemas de thread safety.
  • Preferencialmente familiar com o novo modelo do Swift Concurrency (async/await).
  • Gerenciamento de múltiplas chamadas assíncronas simultâneas com async let, TaskGroup, etc.
  • Uso correto do MainActor para isolar chamadas relacionadas à UI.
  • Entendimento dos benefícios e cuidados ao misturar GCD e Swift Concurrency.
  • Experiência com profiling de performance e ferramentas como Instruments.
  • Capacidade de debugar problemas complexos de performance em apps em produção.

Testes e Qualidade

  • Escrita de testes unitários, testes de UI e snapshot testing.
  • Conhecimento de estratégias como TDD e BDD.
  • Sabe evitar testes frágeis (flaky tests) e criar componentes testáveis e reutilizáveis.
  • Uso de ferramentas de análise estática como SwiftLint.
  • Cultura de Code Review, feedback técnico e melhoria contínua.

CI/CD e Distribuição

  • Prática com Integração Contínua (CI) e Distribuição Contínua (CD).
  • Conhecimento em Fastlane, GitLab CI, ou similares.
  • Experiência com automação de builds, deploys e análise de código.
  • Conhecimento em CocoaPods, Swift Package Manager e outros gerenciadores de dependência.

APIs, Dados e Observabilidade

  • Experiência sólida com consumo de APIs REST, tratamento de erros, modelos de dados.
  • Conhecimento em consumo de GraphQL.
  • Conhecimento em Remote Configs, Feature Toggles / Flags.
  • Vivência com ferramentas de Analytics (Firebase Analytics, Amplitude, Mixpanel), A/B tests e monitoramento de métricas.
  • Uso de ferramentas de crash reporting como Crashlytics, Sentry, Bugsnag.
  • Uso de ferramentas de observabilidade como Datadog e Firebase.

Segurança (Contexto Fintech)

  • Aplicar criptografia (Keychain, Secure Enclave) na proteção de dados sensíveis.
  • Conhecimento de OWASP MASVS e LGPD, integrando segurança em todas as etapas do ciclo.

BFF e Integração com Back-end

  • Conhecimento mínimo de back-end para atuar em BFFs: modelar e ajustar endpoints e agregações que atendem o app, colaborando com times de back-end.
  • Modelar e otimizar persistência local (Core Data/SwiftData) e cache, incluindo noções no BFF.

Produto, Liderança e Cultura

  • Mentalidade de produto: entende e contribui com o impacto da tecnologia no negócio.
  • Visão de Produto: traduzir necessidades reais em soluções técnicas e medir o sucesso do que é entregue.
  • Orientação a Dados: decidir com base em métricas e monitorar cada feature contra seus objetivos.
  • Decomposição de Problemas: quebrar problemas complexos em tarefas de alto impacto, aplicando a regra 80/20.
  • Proatividade e ownership: cuida do código como se fosse seu.
  • Comunicação Técnica: expressar ideias técnicas com clareza (RFCs, ADRs, diagramas, apresentações), adaptando a mensagem ao público.
  • Liderança técnica: capacidade de liderar ou colaborar em decisões arquiteturais, influenciar o time e mentorar desenvolvedores.
  • Operação: monitorar, alertar e responder rapidamente a problemas em produção, com post-mortems e mecanismos de rollout (feature flags, phased releases).
  • Comunicação clara com times de produto, design e backend.
  • Participação em mentorias, code dojos e partilhas de conhecimento.

Para Realçar o Sabor

  • Experiência prévia em fintech, bancos ou pagamentos.
  • Segurança de aplicações móveis (AppSec, OWASP MASVS).
  • Experiência com IA e machine learning.
  • Conhecimento de infraestrutura: cloud, containers e infraestrutura como código para apoiar o ambiente do app.
  • Ferramentas avançadas de modularização como Bazel ou Buck.
  • Conhecimento em programação orientada a protocolos (POP), incluindo Associated Types, Type Erasure e uso avançado de Generics.
  • Domínio de boas práticas de estruturação de projetos grandes e manutenção em grandes bases de código.
  • Contribuições open source, talks, artigos ou participação ativa na comunidade iOS.