Atender junto com a CI&T um cliente do mercado de Mídia;
Escrever código limpo, de fácil manutenção, utilizando as melhores práticas de desenvolvimento de software;
Projetar soluções usando frameworks apropriados;
Identificar oportunidades de melhoria;
Trabalhar de forma colaborativa com outros membros da equipe, incluindo desenvolvedores, designers e stakeholders, para garantir o sucesso dos projetos;
Fazer revisões de código;
Garantir um ambiente de desenvolvimento estável e produtivo;
Exercer liderança técnica como referência no time, influenciando e orientando desenvolvedores mais júniores;
Disponibilizar-se para realizar onboarding e ambientação de novos desenvolvedores;
Orientar e guiar o pareamento, trazendo discussões técnicas ricas e propondo melhorias de código;
Desenvolver um senso de propriedade sobre o que está sendo construído;
Abertura para aprender como usar ferramentas amplamente adotadas na pilha de tecnologia;
Participar ativamente na resolução de problemas complexos, identificando oportunidades de melhoria e propondo soluções inovadoras;
Entender o contexto de negócio do cliente, o funcionamento de uma empresa de mídia, o impacto das features desenvolvidas e a relação com os usuários;
Visualizar e comunicar oportunidades de melhoria para o negócio e para a jornada de outras pessoas;
Buscar o equilíbrio entre questões técnicas e de entrega, sabendo quando aprofundar em uma investigação ou pedir ajuda;
Você precisa ter prática com:
Proficiência em Java e total domínio da linguagem Kotlin, com capacidade analítica para propor refactorings complexos;
Profundo conhecimento em repositories e use cases;
Conhecimento em padrões de projeto (principalmente MVVM) e suas variações;
Domínio dos aspectos do Android SDK de forma aprofundada, incluindo gerência de atualização de bibliotecas, otimização de hierarquia de views e configuração de regras em arquivo ProGuard;
Maestria na utilização da IDE Android Studio, com profundo conhecimento de atalhos, recursos e ferramentas de depuração de layout, rede e recursos;
Experiência na criação de interfaces/componentes escaláveis em projetos de larga escala;
Experiência com programação reativa (RxJava, LiveData, Flow);
Conhecimento avançado de Lifecycle;
Experiência com injeção de dependência e Android Architecture Components;
Gerenciamento de dependências (Gradle, Maven);
Necessário ter domínio na implementação/manutenção de queries em GraphQL, incluindo conceitos aprofundados como agrupamento em fragments, operações em queries (union, etc), utilização de playground para testes e visão analítica para refatorar queries;
Conhecimento avançado em técnicas de versionamento, resolução de conflitos, merges e rebases, rollback de commits e tags;
Experiencia com técnicas de CI/CD para automação de pipeline, criação/manutenção de fluxos e conhecimento em ferramentas como Bitrise;
Experiência com implementação de banco de dados SQLite e manipulação de dados, bem como domínio em criação de cache e técnicas de resiliência para persistência de dados;
Experiência com técnicas de monitoramento de tráfego de dados/rede;
Domínio de TDD e aplicação de testes unitários, testes instrumentados, automatizados de interface e fluxo de navegação;
Experiência com BDD (Behavior-Driven Development);
Conhecimento em conceitos avançados de segurança, incluindo segurança de dados, encriptação, certificados, autenticação biométrica/facial e JWT;
Experiência em técnicas de monitoramento e otimização de performance de apps, especialmente em dispositivos AndroidTV, com eficiência energética e uso eficiente de memória;
Domínio de ferramentas/técnicas de monitoração de recursos como Android Profiler e Traceview;
Experiência com Custom Views;
Experiência na criação de layouts performáticos com diferentes ViewGroups;
Conhecimento em acessibilidade;
Experiência com Firebase, Google Analytics e Crashlytics;
Desejável:
Experiência com a comunidade Android e produção de conteúdo relevante, como artigos, documentações, talks, apresentações ou palestras sobre temas do universo Android;
Experiência com gerenciamento de conflitos em atualizações de bibliotecas de times parceiros;
Domínio de Jetpack Compose;
Conhecimento em ferramentas de análise de dados de tráfego de rede (network inspector, charles proxy, etc.);
Capacidade de guiar o pareamento e trazer discussões ricas, propondo melhorias no código;
Projetos "forkeados" e/ou PRs submetidos em repositórios expressivos da comunidade;
Conhecimento em metodologias ágeis (Scrum, Kanban e outros);