Algorithms Software Engineer
Santa Clara Valley (Cupertino) , California , United States
Posted: Sep 28, 2021
Role Number: 200293117
Apple's Human Interface Devices (HID) group is responsible for developing innovative ways to interact with Apple products. We work across product lines, delivering technologies like Multitouch Sensing, ApplePencil, AppleWatch Digital Crown, and other future Apple sensing and interaction technologies. The HID Algorithms team is an eclectic group with backgrounds in computer science, signal processing, machine learning, control theory, human factors, and more. We're looking for a skilled software engineer to help build the infrastructure and solution patterns for implementing our sensor data processing algorithms - the algorithms that underlie the interactive technologies our customers rely on everyday. In this role, you'll design and build scalable, high-quality shared libraries for the future of Apple's human interface devices!
- Solid experience developing in object-oriented C++ and Python as part of a software development lifecycle, and employing common OO design patterns
- Understands and advocates principles of scalable API design, documentation, and support for shared code libraries, API's, SDK's, and/or packages
- Familiar with compilation flows and compile flags for building static and dynamic libraries with tools like Make, xcodebuild, or similar
- Experience developing for real-time and/or resource-constrained environments (e.g., embedded systems)
- Knows what it takes to efficiently implement math routines in low-level C/C++ such as signal / image processing algorithms or numerical solvers. You will be comfortable guiding colleagues to implement such routines while balancing speed, memory efficiency, and readability
- Able to communicate clearly and collaborate with cross-functional teams
- Excellent problem-solving and root cause analysis skills
This is a key position at a focal point for HW/SW/UI integration. You will learn and work across multiple layers of the stack, from firmware to distributed data processing, and design innovative infrastructure for scalable, testable, production-quality algorithms. You will help our team build algorithm pipelines to translate sensor data into user intent, design new interactions, and validate their effectiveness for a large population. The ideal engineer is comfortable working in a dynamic and creative team charged with crafting the way we will interact with next-generation Apple products. You are self-motivated, an excellent problem solver, and a fast learner. You are quick to forge relationships and comfortable with change and ambiguity. You have strong technical leadership skills and enjoy collaborating with others toward the creation of commercial-grade software. You will bring software expertise to a highly interdisciplinary team, working with engineers of many talents to tackle challenging problems.
Education & Experience
BS/MS in Computer Science, Computer Engineering, or related field; 3+ years of experience in a related role.
- In addition to C/C++ and Python, expertise in Objective-C or Swift
- Experience building macOS, iOS, or watchOS frameworks and apps and customizing build settings in Xcode
- Experience with multithreading and concurrent programming
- Experience working with Continuous Integration (CI) tools and workflows
- User interface design or graphics programming