Distributed Systems Engineer

Santa Clara Valley (Cupertino), California, United States
Software and Services

Summary

Posted:
Weekly Hours: 40
Role Number: 200075384
Our team is on a mission to deliver fast, reliable builds, and foster the next wave of innovative application development by making software easier to write. We believe that making development easier and faster is an important part of unlocking creativity, innovation, and potential for developers. We are looking for a distributed systems engineer to join our efforts. You’ll be developing novel distributed architectures for accelerating software build and test cycles. If you enjoy low-level, performance-oriented work on scalable and robust distributed systems, then we have many exciting problems to work on! You would join a small, tight-knit group of engineers who build exciting new technology (and have fun while doing so). We are applying unique and innovative ideas to old problems and welcome new contributors who are excited by the opportunity to significantly impact the shape and direction of our product. We believe that every engineer brings unique skills and perspective. Far more than any specific experience or skill, we are looking for engineers who want to build great software, learn and develop their skills, and ultimately enable others to develop amazing applications.

Key Qualifications

  • Experience building and maintaining infrastructural distributed systems such as orchestration systems, distributed databases, or network proxies.
  • Experience should include a strong understanding of distributed system fundamentals like consistency and availability, networking subsystems and implementation techniques, as well as security.
  • Ability to efficiently design and develop new technologies in a changing environment.
  • Positive and respectful attitude in a diverse environment.
  • Strong interest in building great developer tools.

Description

You’ll work on creation of a distributed backend for the open source llbuild framework (http://github.com/apple/swift-llbuild). You’ll find ways to combine our unique problem domain with established distributed system techniques in order to achieve both high performance and reliability. You’ll analyze problem requirements, existing solutions, and available systems and make high-level architectural decisions about how to architect the backend, considering both short- and long-term goals. Once solutions are identified, you will work alongside our team to implement them while developing appropriate testing and operational mechanisms. You’ll be most successful here as a flexible and proactive engineer who thrives in a supportive, respectful, and balanced work environment with interesting and challenging problems to tackle. You have excellent judgement and integrity with the ability to make timely and sound decisions. You know how to drive constructive discussion of design points, learn from your team, and use your experience to advocate and teach others. We welcome all applicants, but familiarity with any of the following areas will help you come up to speed fastest on our project: • High-performance concurrent programming techniques. • Functional programming models and data structures. • Directed acyclic graphs and their role in build systems. • Content-addressable storage and related techniques (like content-defined chunking). • Existing modern distributed build systems. • Design of immutable architectures. • Dynamic graph evaluation models such as those used in llbuild (https://github.com/apple/swift-llbuild), Shake, or Bazel's Skyframe. • Distributed compute systems like MapReduce, Spark, and Beam. • Determinism and reproducibility in build systems. In your role as an engineer on the Xcode team, your primary development environment will be the Xcode IDE. You will... • Spend a majority of your time programming in Swift. • Contribute to and create an ever-expanding set of packages for sophisticated server-side Swift development. • Develop expertise and be given ownership over components critical to Apple's success. • Contribute to and develop our open source community. • Be able to directly improve your own development environment with a team who can turn your ideas into reality. • Use modern continuous delivery development practices. • Collaborate with your teammates through pull requests, in-person conversations, and online conversations. • Develop new features, fix interesting bugs, write tests, and review your teammates’ code. • Document APIs and tools along with complementary examples and tutorials. • Contribute to engineering a high-performance system through algorithm design, optimization, and performance testing. • Analyze and improve the operability of our server software. • Design new ways to scale Apple's build systems to ever increasing problem sizes. • Prioritize and schedule issues, estimate scope of work, and investigate new issue reports in your areas of responsibility. • Make product design decisions with your teammates. • Provide and be given technical guidance, software architectural review, and mentorship. • Have access to the engineers who create Apple's full technology, tools, and operating systems stack. • Have the opportunity to influence the design of the Swift language and package manager. You’ll join a small and focused team based in Cupertino, but also work closely with the larger developer tools organization colocated with us. Here you’ll find that we... • Strongly value the security and privacy of our users. • Collaborate extensively with other teams, such as the C-family and Swift compilers, networking and server infrastructure teams, and the Xcode build system team. • Prioritize developing automation and infrastructure to ease our own testing and development. • Practice a blameless approach to operations and outages, and work together to define safety mechanisms and processes. • Have a wide range of experience, from engineers who’ve just joined to those who’ve thrived at Apple their whole careers. • Provide a peaceful work environment where you can choose when to socialize and when to close your office door and focus. • Have an encouraging and growth-focused workplace culture. • Value integrity and respect for others, and take the safety and comfort of our employees seriously. • Encourage you to use accrued vacation time and maintain a healthy work-life balance. • Can work with non-US applicants to provide visa support. • Provide relocation assistance. • Offer excellent benefits. You’ll succeed in this role by designing and implementing major improvements to our developer experience, improving the quality and test coverage of our code, and supporting the growth of your team.

Education & Experience

Bachelor’s Degree in Computer Science, or related experience.

Additional Requirements

  • If possible, we’d love to see an example of your work, such as a personal project or open source contribution.