É necessário ter proficiência em Apple e total domínio da linguagem Swift, ser familiarizado com temas complexos e ter capacidade analítica para propor refactorings totais e complexos.
Também é necessário um profundo conhecimento em padrões de projeto (principalmente VIPER) e suas variações, bem como familiaridade com o conceito de modularização.
Conhecimento sobre Threads e SwiftUI
Conhecimento de outros padrões de arquitetura (MVVM, MVP, entre outros)
Conhecimento sobre padrões de projeto (Facade, Adapter, Factory, Singleton, Builder, Abstract Factory, entre outros)
Estar conectado às atualizações da linguagem e entender como aplicá-las da melhor maneira dentro do time.
Habilidade de identificar e realizar melhorias consistentes no código, como, por exemplo:
melhorias de arquitetura
aplicação de padrões
experiência de desenvolvimento
experiência do usuário (UX)
Ter conhecimento de outras linguagens de apoio, como linguagens de automação para CI (Ruby, Python, entre outras)
Entender sobre o workflow de integração do Bitrise
Trazer apresentações para o time interno ou externo sobre temas do universo Apple
Desenvolvedor(a) Sênior iOS
Requisitos
Experiência de 5 a 8+ anos em desenvolvimento iOS
Domínio avançado de Swift e UIKit (ViewCode e AutoLayout)
Conhecimento profundo em arquiteturas como VIPER, MVVM e modularização
Experiência em desenvolvimento para iOS e tvOS
Experiência com APIs REST e GraphQL
Conhecimento em persistência de dados
Experiência sólida com testes unitários, manuais e instrumentais
Conhecimento em snapshot testing
Gestão de dependências com Cocoapods e SPM
Conhecimento em XcodeGen
Versionamento utilizando Git e GitFlow
Comunicação assertiva e experiência colaborando com QA, UX, Design e stakeholders
Vivência com mentoria e desenvolvimento de profissionais juniores
Hard Skills
Swift e Arquitetura
É esperado domínio completo do ecossistema Apple e da linguagem Swift, incluindo capacidade analítica para atuar em refatorações complexas e evolução arquitetural do projeto.
Também é necessário:
Conhecimento aprofundado em VIPER e suas variações
Conhecimento em MVVM, MVP e VIP
Familiaridade com modularização
Aplicação de Design Patterns:Factory
Singleton
Adapter
Builder
Facade
Abstract Factory
Diferenciais
Conhecimento em Threads e SwiftUI
Atualização constante sobre novidades do ecossistema Apple
Capacidade de propor melhorias contínuas em arquitetura, padrões e experiência do usuário
UIKit / SwiftUI
Domínio avançado de UIKit
Construção de interfaces utilizando:Storyboards
XIBs
AutoLayout
ViewCode
SwiftUI
Desenvolvimento de interfaces escaláveis
Experiência com Design System
Otimização de hierarquia de views e performance
APIs e Networking
Consumo e manutenção de APIs REST e GraphQL
Conhecimento em:Headers
Interceptors
Responses
Fragments
Unions
Parsing de JSON/XML
Programação assíncrona:GCD
DispatchQueue
OperationQueue
Async/Await
Integração Contínua
Experiência com CI/CD
Conhecimento em Bitrise
Criação e manutenção de pipelines
Utilização de feature flags
Refatoração incremental de sistemas legados
Ferramentas
Domínio avançado de Xcode
Conhecimento em:SPM
Cocoapods
XcodeGen
Instruments
Firebase Crashlytics
Firebase Analytics
Git e GitFlow avançado:edição de commits
cherry-pick
rebase
movimentação entre branches
Clean Code e Qualidade
Forte preocupação com Clean Code
Identificação rápida de code smells
Experiência com grandes refactorings
Escrita de testes unitários eficientes
Snapshot testing
Cultura contínua de qualidade e testes
Code Review técnico e construtivo
Performance e Memória
Conhecimento em otimização de memória
Domínio de ARC:lazy properties
computed properties
weak / strong / unowned references
Utilização de Instruments para análise de performance
Soft Skills
Comunicação e Colaboração
Comunicação assertiva
Escuta ativa
Boa relação interpessoal
Facilidade para colaboração entre times
Mentoria
Desenvolvimento de profissionais juniores
Compartilhamento de conhecimento
Pair Programming
Apoio em onboarding técnico
Ownership e Proatividade
Senso de dono sobre produto e entregas
Capacidade de identificar melhorias técnicas e de processo
Busca contínua por evolução técnica e qualidade
Visão de Produto
Entendimento do impacto das funcionalidades no negócio
Capacidade de propor melhorias para produto e experiência do usuário
Diferenciais
Experiência com liderança técnica
Conhecimento em Ruby ou Python para automações
Experiência em apresentações técnicas internas e externas
Experiência com Design System em larga escala
Conhecimento avançado em monitoramento e observabilidade
Como será o dia a dia
Participar de dailies, refinamentos e plannings
Desenvolver funcionalidades para iOS e tvOS
Corrigir bugs e evoluir a arquitetura do projeto
Trabalhar próximo de QA, UX, Design e stakeholders
Realizar Code Reviews
Executar testes unitários e manuais
Criar documentações técnicas
Realizar releases e acompanhar métricas do aplicativo
Estudar continuamente novas tecnologias e boas práticas