Nosso Modo de Fazer no Time:
O iFood é a maior e mais inovadora empresa de tecnologia da América Latina, operando no Brasil. Somos conhecido pelo delivery, mas vamos além, temos muitas frentes de negócio como iFood Mercado, iFood Pago, nossa Fintech e muito mais. Nosso objetivo é Alimentar o Futuro do Mundo por meio de tecnologia. Trabalhar conosco significa impactar positivamente milhões de vidas, mas queremos transformar esse número em um bilhão.
O principal objetivo da área é desenvolver uma plataforma em iOS utilizando Kotlin multiplataforma, com foco na atualização do aplicativo Android e na criação de funcionalidades que atendam às necessidades de outros times de tecnologia.
Seu Cardápio Diário:
- Desenvolver uma plataforma iOS utilizando Kotlin multiplataforma, focando na atualização do aplicativo Android e na criação de novas funcionalidades.
- Entender o aplicativo do entregador e priorizar mudanças com base na visão de 15 times envolvidos.
- Colaborar ativamente com outros times para garantir a integração eficaz das funcionalidades.
- Compartilhar conhecimento com a equipe e promover um ambiente colaborativo.
- Garantir que a arquitetura do código seja bem estruturada e que futuras implementações sejam testadas e aprovadas de forma eficiente.
Ingredientes Que Buscamos:
- Experiência em Kotlin multiplataforma e habilidades em desenvolvimento de software.
- 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
MainActor para isolar chamadas relacionadas à UI.
- Entendimento dos benefícios e cuidados ao misturar GCD e Swift Concurrency.
- Entendimento de heap e stack, e impacto de
struct vs class na 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.