Roku
Engenheiro(a) Sênior de Software Embarcado, Pixel Core USB
QUALIFICAÇÕES MÍNIMAS
- Bacharelado ou experiência prática equivalente.
- 5 anos de experiência com desenvolvimento de software em uma ou mais linguagens de programação (por exemplo, C).
- 3 anos de experiência trabalhando com sistemas operacionais embarcados.
- 3 anos de experiência testando, mantendo ou lançando produtos de software e 1 ano de experiência com design e arquitetura de software.
QUALIFICAÇÕES DESEJÁVEIS
- Mestrado ou Doutorado em Ciência da Computação ou área técnica relacionada.
- Experiência contribuindo para o stack USB de código aberto linux.
- Experiência com desenvolvimento de sistemas embarcados baseado em Linux.
- Experiência em leitura de especificações de hardware para inferir capacidades de hardware.
- Experiência com o stack DesignWare Controller (DWC).
SOBRE A VAGA
Os engenheiros de software da Google desenvolvem as tecnologias de próxima geração que mudam a forma como bilhões de usuários se conectam, exploram e interagem com informações e uns com os outros. Nossos produtos precisam lidar com informações em escala massiva e se estendem muito além da pesquisa na web. Estamos procurando engenheiros que tragam novas ideias de todas as áreas, incluindo recuperação de informação, computação distribuída, design de sistemas em larga escala, redes e armazenamento de dados, segurança, inteligência artificial, processamento de linguagem natural, design de UI e mobile; a lista continua e cresce a cada dia. Como engenheiro de software, você trabalhará em um projeto específico e crítico para as necessidades da Google com oportunidades de mudar de equipe e projeto à medida que você e nosso negócio acelerado crescem e evoluem. Precisamos que nossos engenheiros sejam versáteis, demonstrem qualidades de liderança e estejam entusiasmados para assumir novos problemas em todo o full-stack enquanto continuamos a impulsionar a tecnologia.
A missão da nossa equipe é construir a próxima geração de conectividade e carregamento USB (Universal Serial Bus) para Pixels e permitir que os usuários finais utilizem carregadores e acessórios de primeira e terceira partes da Google, conectividade USB-C com PCs host, garantindo a saúde e a confiabilidade da porta USB-C. Nossa equipe é dona do stack de software necessário para fornecer uma experiência perfeita ao usar portas USB Type-C em telefones e tablets Pixel. Esta é uma oportunidade única de experimentar o desenvolvimento de software de sistema full stack Android.
Nesta função, você direcionará o código em diferentes partes do stack Android, desde o kernel Linux, HAL, servidor do sistema Android até a manipulação de hardware no bootloader e influenciando diretamente a arquitetura do silício. Você trabalhará e colaborará em áreas e em todas as fases de desenvolvimento, desde revisões de esquemáticos até a experiência do usuário.
A equipe de Plataformas e Dispositivos abrange os diversos softwares de plataforma de computação da Google em ambientes (desktop, mobile, aplicativos), bem como nossos dispositivos e serviços de primeira parte que combinam o melhor da IA, software e hardware da Google. Equipes nesta área pesquisam, projetam e desenvolvem novas tecnologias para tornar a interação de nossos usuários com a computação mais rápida e contínua, construindo experiências inovadoras para nossos usuários em todo o mundo.
O pagamento individual é determinado por fatores que incluem habilidades relacionadas ao trabalho, experiência e educação ou treinamento relevantes.
EUA: $174000 - $252000 (USD) + bônus alvo de 15% + ações + benefícios
].
RESPONSABILIDADES
- Desenvolver drivers de kernel linux do zero para habilitar novos controladores USB e controladores Type-C usados no roadmap de produtos Pixel.
- Identificar e trabalhar em diferentes Áreas de Produto para desenvolver recursos USB significativos voltados para o usuário, a fim de melhorar a experiência do produto.
- Identificar problemas sistêmicos para USB e mesclar soluções no upstream Linux que sejam mais fáceis de manter por várias gerações nos SoCs Tensor.
- Investigar arquiteturas de software USB escaláveis e influenciar a arquitetura do SoC quando necessário. Otimizar o caso de uso USB para desempenho e outras métricas de saúde do sistema.
- Abstrair interfaces de hardware para o userspace Android, definir e entregar as camadas de software de sistema necessárias (Hardware Abstraction Layer (HAL), framework Android).
