Engenheiro(a) de Software Rust
Brazil, BR
Buscamos um(a) Engenheiro(a) de Software com sólida experiência em Rust para atuar no desenvolvimento e evolução de sistemas de alta performance, seguros e confiáveis. Procuramos um profissional com experiência prática utilizando Rust em ambientes produtivos, boa base de engenharia de software e capacidade para atuar com autonomia técnica na construção de soluções robustas e escaláveis.
Responsabilidades e atribuições:
-
Desenvolver, testar, manter e evoluir serviços e componentes utilizando Rust;
-
Construir soluções com foco em alta performance, segurança de memória, estabilidade e confiabilidade;
-
Participar do design técnico e da arquitetura de novas funcionalidades;
-
Avaliar alternativas técnicas e discutir trade-offs junto ao time de engenharia;
-
Desenvolver código Rust idiomático, bem estruturado, documentado e testável;
-
Criar e manter testes unitários e de integração;
-
Realizar code reviews, contribuindo para a qualidade, padronização e evolução do código;
-
Investigar e solucionar problemas relacionados à performance, concorrência, memória e utilização de recursos;
-
Trabalhar com programação assíncrona e processamento concorrente;
-
Colaborar com times de Produto, QA, Infraestrutura e demais áreas técnicas na entrega de soluções ponta a ponta;
-
Participar de processos de integração e entrega contínua (CI/CD);
-
Contribuir para a definição e evolução de padrões, ferramentas e boas práticas de engenharia do time.
Requisitos e qualificações:
-
Experiência de 3 a 5 anos com desenvolvimento de software;
-
Experiência mínima de 1 a 2 anos desenvolvendo soluções em Rust em ambiente produtivo;
-
Domínio dos principais conceitos da linguagem Rust, incluindo ownership, borrowing, lifetimes, traits e sistema de tipos;
-
Experiência com o ecossistema Rust, incluindo Cargo, crates.io e gerenciamento de dependências;
-
Conhecimento em programação assíncrona com async/await, Tokio e/ou async-std;
-
Boa compreensão de concorrência, gerenciamento de memória e utilização eficiente de recursos;
-
Experiência com testes automatizados, incluindo testes unitários e de integração;
-
Conhecimento de estruturas de dados e algoritmos;
-
Experiência com Git e fluxos colaborativos de desenvolvimento e versionamento;
-
Conhecimento de práticas e pipelines de CI/CD;
-
Conhecimentos em GitLab CI/CD;
-
Familiaridade com ambientes Linux e utilização de linha de comando;
-
Inglês técnico para leitura e interpretação de documentação.
Diferenciais:
-
Experiência com Docker e Kubernetes;
-
Conhecimentos em Java;
-
Experiência com aplicações distribuídas, microsserviços ou sistemas de alta performance;
-
Vivência com otimização e troubleshooting de performance;
-
Experiência com aplicações que demandem alto nível de concorrência e confiabilidade;
-
Conhecimentos em arquitetura e design de software;
-
Vivência com metodologias ágeis e ambientes de engenharia com práticas maduras de desenvolvimento;
-
Conhecimentos em agilidade empresarial, de processos e estrutural.