Software Engineer, Apple Software Updates
Job Description
Summary
Apple is where individual imaginations gather together, committing to the values that lead to great work. Every new product we build, service we create, or Apple Store experience we deliver is the result of us making each other’s ideas stronger. That happens because every one of us shares a belief that we can make something wonderful and share it with the world, changing lives for the better. It’s the diversity of our people and their thinking that inspires the innovation that runs through everything we do. When we bring everybody in, we can do the best work of our lives. Here, you’ll do more than join something — you’ll add something.
Over one billion people update their Apple devices every year, and they do so with the absolute certainty that it will succeed and boot them into the new OS. The Apple Software Update team provides that certainty. And when we do get the exceedingly rare failure, the Apple Software Update team has the expertise, understanding, and drive to dig in and definitively identify and resolve the issue, be it a rare crash, a flipped bit, or something more insidious.
In this role, you\'ll be working on the Software Update process for most of Apple\'s devices. This is a broad role with opportunities to work across many levels of the OS, from the UI layer all the way down to the kernel and firmware. Your responsibilities will include ensuring the updates work on new hardware, enhancing the robustness and security of the process, and imagining and delivering new features.
Over one billion people update their Apple devices every year, and they do so with the absolute certainty that it will succeed and boot them into the new OS. The Apple Software Update team provides that certainty. And when we do get the exceedingly rare failure, the Apple Software Update team has the expertise, understanding, and drive to dig in and definitively identify and resolve the issue, be it a rare crash, a flipped bit, or something more insidious.
In this role, you\'ll be working on the Software Update process for most of Apple\'s devices. This is a broad role with opportunities to work across many levels of the OS, from the UI layer all the way down to the kernel and firmware. Your responsibilities will include ensuring the updates work on new hardware, enhancing the robustness and security of the process, and imagining and delivering new features.
Description
The Apple Software Update team is looking for a junior engineer with a combination of strong programming and design skills and who loves working on complex systems. You should believe in making things as simple as possible but no simpler, and you should enjoy working across all levels of the stack, from debugging kernel interfaces and writing device drivers all the way up to tinkering with user interface elements.
Core Responsibilities Include:
Help deliver new Software Update features, including improving speed, reliability, and robustness.
Collaborate with the Security, APFS, and Kernel teams to come up with more future-proof software update mechanisms.
Write and debug software across all product lines and OSes.
Help bring up new platforms, including consulting on the design of firmware updaters, the software update process, and OS boot mechanisms.
Core Responsibilities Include:
Help deliver new Software Update features, including improving speed, reliability, and robustness.
Collaborate with the Security, APFS, and Kernel teams to come up with more future-proof software update mechanisms.
Write and debug software across all product lines and OSes.
Help bring up new platforms, including consulting on the design of firmware updaters, the software update process, and OS boot mechanisms.
Minimum Qualifications
- Objective-C, Swift, C++, or C knowledge
- Bachelors degree in CS/CE/EE or 2-3 years relevant work experience
Preferred Qualifications
- Strong defensive programming skills
- Familiarity with LLDB
- Familiarity with compiling and building complex systems.
- Familiarity with macOS/iOS internals (launchd, boot mechanisms, etc.)