Senior Software Engineer, iOS/macOS
Paris, Paris Region, France
Software and Services
The iCloud Drive team works at the intersection of software and services. We design and implement the frameworks and daemons syncing documents for hundreds of millions of users every day, and providing these documents through applications and system services on iOS and macOS. We expose a public API adopted by all the major actors in this field: Dropbox, Box, Microsoft, Google, Adobe, etc. This API allows them to integrate into the system, in the iOS Files app in particular, and we work closely with these partners to provide the best document-centric experience. You will help drive features and quality in a fast pace, high impact environment. The position entails responsibility for the quality of the user experience, the reliability of the system, the integrity of our usersʼ documents, and the privacy of our users. The challenge in this position is to deliver features while not compromising on any of these requirements.
- Strong programming skills and experience in C, Objective-C or Swift
- History of shipping software on tight schedules
- Experience with resource-constraint development, database performance work, parallelism, event-based programming, inter-process communication
- Strong interest in investing into debugging and diagnostics tools and infrastructure
- Experience working with ops teams monitoring a service, and contributing to investigations
We work on the client-side of the iCloud services (iCloud Drive, CloudKit, File Providers), building daemons and frameworks running on iOS and macOS, doing everything from protocol design with the server team, collaborating with the file system and network stacks in our daemons, and designing APIs for developers. The challenges include scalability, reliability, power and performance, critical at this scale (both in the number of users and in the volume of data per user) and for the integration of these cloud services with the OS. The job requires (or teaches) both low level (C/Objective C, libdispatch, file systems, POSIX APIs) and system level skills (synchronization protocols, framework design, IPCs, multi-process performance work, system-wide resource sharing.) Reliability is crucial, and weʼre looking for engineers with a passion for building complex systems that will seamlessly recover in the event of errors.
Education & Experience
- MS CS/CE or equivalent experience.
- - Familiarity with sync, backup, diff and merge algorithms, database replication, file system replication, messaging protocols, real-time collaboration, CRDTs or operational transformation (one of the above).
- - Excellent technical writing skills.
- - Autonomy, creativity and accountability.