About this role
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.
