Software Engineer
Description
We are looking for software engineers to join our small team with big responsibilities. The role involves a tremendous amount of individual responsibility and influence over the direction of the core service.
We believe in small agile teams and their ability to deliver high-quality, high-impact software. We share code ownership and knowledge through the Agile technique of pair-programming. Our codebase is written entirely in modern Rust using the latest technologies and coding practices.
We rely on sustainable coding through focus on readable, maintainable, and performant code. As such, we lean heavily on Rust and its great tooling to fearlessly develop highly efficient distributed systems code. We use multiple levels of testing to ensure we have low-level performance (such as tests to validate the number of allocations and bytes used) as well as correctness (such as tests with fault injection, and race condition simulation). Combined with the powerful borrow checker and strong type system of Rust, we can develop complex systems with confidence.
Description
We are building a new distributed multi-tiered data orchestration service to support critical Artificial Intelligence/Machine Learning systems and services with direct business and customer value.
We are looking for an experienced developer to join our collaborative and friendly team. Someone with a desire to learn. With a passion for clean, maintainable code. Someone that enjoys the duality of working on high level concepts as well as optimizing low-level performance.
All members of the team are responsible for the complete life-cycle of features. This includes identifying areas of improvement, proposing changes, driving implementation, and supporting it in production.
Responsibilities
Design, develop, and deploy large-scale data fabrics on cloud-based infrastructures such as Amazon Web Services (AWS) and Google Cloud Platform (GCP).
Build and maintain highly reliable, distributed systems using programming languages like Rust and C++.
Collaborate with cross-functional teams to determine data storage needs for large-scale training and inference.
Implement and manage containerization and orchestration technologies, including Docker and Kubernetes.
Architect large-scale, complex applications with strong runtime performance characteristics, including low latency, fault tolerance, and high availability.
Contribute to the full lifecycle of system design, ensuring scalability, reliability, and maintainability.
Minimum qualifications
Experience designing, implementing, and supporting highly scalable applications and web services
Experience working with Rust (e.g., asynchronous (async/await), sharing models (Sync/Send), etc.)
Experience with concurrent programming (e.g., locking, memory synchronization, atomic operations, etc.)
Experience with distributed system concepts (e.g., distributed consensus, replication, failure detection, etc.)
Bachelor's or Master's degree in Computer Science (or related field) or equivalent software development experience
Preferred qualifications
Experience with blob storage solutions
Experience with distributed key-value databases
Experience with Kubernetes and containers
Experience with Linux system internals
Experience with storage systems and internals
Experience with back-end web technologies