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 distributed build systems engineers to join our efforts. You'll be developing novel distributed architectures and products for accelerating software build and test cycles. If you enjoy working on build systems and 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
- Positive and respectful attitude in a diverse environment.
- Strong interest in build systems and cloud services.
- Ability to efficiently design and develop new technologies in a changing environment.
- Excellent collaborative skills, with strong written and verbal communication.
Description
You'll work on solving build system problems by leveraging a strong distributed backend. 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 will 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 the following areas will help you come up to speed fastest on our project:
- Existing distributed build systems.
- Familiar with application and service monitoring tools and techniques.
- Involvement with incident management and response.
- Familiarity with some large infrastructure systems like Kubernetes.
- Experience with high performance strongly typed languages such as Swift, Rust, C++, Scala, or others.
- Familiar with virtualization technology.
In your role as an engineer on our team:
- You’ll spend a majority of your time working on build systems engineering, tooling, and contributing to operational standards used across the organization.
- You’ll collaborate with your teammates to help refine problem requirements and work with teams to implement long lasting solutions.
- You’ll engage with other teams to help identify issues and establish long term relationships that include knowledge sharing.
- You’ll provide valuable feedback loops to engineering teams backed by application metrics and log data.
- You’ll drive areas of service scalability (resiliency, redundancy, performance) by collaborating in planning meetings.
- You’ll use modern continuous delivery development practices.
- You’ll develop expertise and be given ownership over components critical to Apple's success.
- You’ll contribute to engineering a high-performance system through algorithm design, optimization, and performance testing.
- You’ll design new ways to scale Apple's build systems to ever increasing problem sizes.
- You’ll prioritize and schedule issues, estimate scope of work, and investigate new issue reports in your areas of responsibility.
- You’ll analyze and improve the operability of our server software.
- You’ll provide and be given technical guidance, software architectural review, and mentorship.
- You’ll have access to the engineers who create Apple's full technology, tools, and operating systems stack.
Here you’ll find that:
- We’re a worldwide team responsible for various properties in Apple's Software Engineering organization.
- We strongly value the security and privacy of our users.
- We collaborate extensively with other teams inside Apple.
- We prioritize developing automation and infrastructure to ease our own testing and development.
- We practice a blameless approach to operations and outages, and work together to define safety mechanisms and processes.
- We have a wide range of experience, from engineers who’ve just joined to those who’ve thrived at Apple their whole careers.
- We provide a peaceful work environment where you can choose when to socialize and when to close your office door and focus.
- We have an encouraging and growth-focused workplace culture.
- We value integrity and respect for others, and take the safety and comfort of our employees seriously.
- We encourage you to use accrued vacation time and maintain a healthy work-life balance.
- We offer excellent benefits.
Distributed BuildというApple規模の環境ならではのポジション。 macOSやiOSなどのビルド環境はリリースのマイルストーンに直結するため、高い信頼性とパフォーマンスが求められる。 また、リリース間近のビルドは急速に増えるためスケーラビリティも重要だし、Appleの秘密保持方針に則り、ビルドシステムのセキュリティも重要な要素となるだろう。
The Apple Cloud Infrastructure team is building the next generation of Observability platform. Our system provides metrics and analytics for Apple products and service, providing the information they need to operate and grow their business for our customers. Our team is composed of highly skilled programmers designing and building a large, distributed suite of observability services that help Apple teams gain insight into their systems. If the thought of working with petabytes of data interests you, this is the place to be. Our system must scale globally, stay highly available, and "just work”, while supporting some of the biggest services in world. That's a tall order, and we're looking to add more talented and passionate engineers who love challenges. If you'd love to join this amazing team, we'd love to hear from you.
Key Qualifications
- High aptitude in Mathematics
- Analytical skills and experience with numerical methods and analysis
- Deep understanding of operating systems and operating system internals.
- Systems level experience of the Linux operating system - user mode and kernel mode
- Experience with filesystem internals
- Experience with distributed programming at scale
- Object oriented design and programming
- Great communication and writing skills
- 10+ years of industry experience
- Programming Languages:
- Must have: C / C++, or Java, or Bash.
- Great to have: C# or Python
- Nice to have: Javascript, Go or Rust
Description
This position is a full-time coding role. The ideal candidate is mathematical and highly analytical. A longtime systems-level coding practitioner with deep understanding of operating systems and systems application programming. Networking and distributed programming is a must, as our systems are distributed, highly performant, and excessively scalable. Designing and developing system applications that are fault-tolerant is required to achieve 99.99% uptime.
Responsibilities: You must have the courage and experience to be frank and ambitious, but humble enough to listen and learn. Creativity and a passion for designing new ways to solve our complex computing problems.
We want your thoughts on how we can move faster, be more creative, and deliver tools and ideas to empower developers around the world. We expect you to challenge the status quo, to care about the details, the end user, and how it all comes together.
We are looking for enthusiastic developers to join as a member of this collaborative and friendly team. This person will have an individual responsibility and influence over the direction and backend of many critical Apple internet services. You should be someone with ideas and passion for software delivered as a service to maximize reuse, efficiency, and simplicity. Your work will impact millions of Apple users and is necessary to the success of some of the most visible current and future features.
Education & Experience
BS/MS/PhD in Computer Science or Mathematics or equivalent years of experience.
分散システムのObservabilityプラットフォームを構築するポジション。 数学的なアプローチが求められるというのは、大規模なデータ処理や分散システムの設計において、数学的なモデルが重要な意味を持つからだろうか。難易度が高いだけに、その分やりがいも大きいだろう。