Sobre esta vaga de iOS Software Engineer Sênior na iFood
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
- É 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.
Ingredientes que buscamos
- Experiência com Cardstack e vivência com Migrações.
- Proficiência em Swift, com domínio das versões mais recentes da linguagem.
- Familiaridade com Objective-C.Uso de Xcode e ferramentas de debugging avançado.
- Conhecimento em CocoaPods, Swift Package Manager e outros gerenciadores de dependência.
- Experiência 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.
- Conhecimento e aplicação dos princípios SOLID no dia a dia.
- 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.
- 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
MainActorpara isolar chamadas relacionadas à UI. - Entendimento dos benefícios e cuidados ao misturar GCD e Swift Concurrency.
- Entendimento de heap e stack, e impacto de
structvsclassna performance. - Experiência com profiling de performance e ferramentas como Instruments.
- Capacidade de debugar problemas complexos de performance em apps em produção.
- 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.
- 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.
- Experiência sólida com consumo de APIs REST, tratamento de erros, modelos de dados.
- Conhecimento em Remote Configs, Feature Toggles / Flags.
- Vivência com ferramentas de Analytics (Firebase Analytics, Amplitude, Mixpanel, etc), A/B tests e monitoramento de métricas.
- Uso de ferramentas de crash reporting como Crashlytics, Sentry, Bugsnag.
- Boas práticas de Clean Code e design patterns.
- Uso de ferramentas de análise estática como SwiftLint.
- Cultura de Code Review, feedback técnico e melhoria contínua.
- Mentalidade de produto: entende e contribui com o impacto da tecnologia no negócio.
- Proatividade e ownership: cuida do código como se fosse seu.
- Comunicação clara com times de produto, design e backend.
- Participação em mentorias, code dojos, e partilhas de conhecimento.
- Capacidade de liderar ou colaborar em decisões arquiteturais..
Para realçar o Sabor
- Experiência com 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.