Senior Software Engineer (Rust, Web Services) - Apple Services Engineering
London, England, United Kingdom
Software and Services
We are looking for senior 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.
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.)
Key Qualifications
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