SPG iOS Software Engineer - Platform Foundation / Low Level Software
Santa Clara Valley (Cupertino), California, United States
Software and Services
Come join Apple’s Special Projects Group (SPG), where we are creating new and innovative experiences for human interaction with autonomous technology! As a Software Engineer, you will be prototyping and developing apps and frameworks on Apple internal iOS platforms to build ground breaking UX and UI. We work in a fast-paced environment, where your curiosity and creativity will have an opportunity to shine. You'll have an opportunity to be part of every stage of development — collaborating cross-functionally with user interface designers, mechanical, electrical, and controls engineers from concept phase to deployment. We are looking for an on-device full-stack engineer who is passionate about software quality and user experience.
- Proficient in Swift and/or Objective-C.
- Familiarity with common iOS frameworks.
- Experience creating powerful and concise APIs and broad knowledge of layered software architecture.
- Strong understanding of algorithms, data structures, object-oriented programming and design with keen eye to best practices and design patterns.
- Experience with performance – profiling, identifying, and implementing optimization strategies.
- Deep understanding of memory management, multi-threaded programming, and synchronization.
- Effective communicator, excellent interpersonal skills, and ability to work well with all levels of engineers and people in other fields.
- Experience with software engineering, design, problem solving, and debugging.
- Motivated self-starter and great teammate who thrives working in a dynamic environment and learning new technologies.
This position requires a proactive engineer with strong technical and interpersonal skills to handle responsibilities including: Design, architect and implement new frameworks and daemons, primarily in Swift/Objective-C. Implement features that involve communication over network layers with other hardware components and various cloud back-ends. Understand product requirements, engage with team members and customers to define solutions, and estimate the scope of work required. Deliver solutions that can keep up with a rapidly evolving product. Develop software that works in safety-critical environments, and build test and verification pipelines that ensure reliability and resiliency. Write comprehensive unit tests and work closely with software integration teams for the software you deliver. Shell and Python scripting (e.g. for test tools development). Participate in architecture and code reviews, and hiring interviews.
Education & Experience
BS in Computer Science or equivalent experience
- While the following skills aren’t required, knowledge of one or more of these areas would be valuable:
- Knowledge & experience with C.
- Knowledge of networking with TCP/IP, UDP and TLS and investigating problems with WireShark.
- Experience diagnosing and resolving multithreading and memory corruption issues.
- Experience with memory performance debugging tools and strategies.
- Experience working with embedded systems and knowledge of hardware architecture.
- Experience with writing developer documentation.