Engenheiro(a) de Software Rust

Indra GroupBrazilOn-siteFull-timeJunior, 1–2 yearsListed 3 hours ago

Apply now

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.