Software Engineer - User Experience
Santa Clara Valley (Cupertino), California, United States
Software and Services
As a Software Engineer within Apple’s Special Projects Group (SPG), you will be part of a team creating innovative experiences for human interaction with autonomous technology. You will be prototyping and developing apps, frameworks and daemons on Apple internal iOS, macOS, tvOS and watchOS platforms to build cutting-edge UX and UI. We work in a fast paced, startup-like environment and you will be part of every stage of development working cross-functionally with user interface designers, mechanical, electrical, and controls engineers from concept phase to deployment. We are looking for a full-stack engineer who is passionate about software quality and user experience.
- Proficient in Swift/Objective-C. Strong knowledge & experience with C/C++ is a plus.
- Accomplished app portfolio, showcasing creativity and highly responsive, interactive UI.
- Familiarity with common iOS, macOS, tvOS and watchOS frameworks.
- Experience collaborating with UI/UX designers and passionate about crafting software to deliver elegant user experiences.
- Experience creating powerful and concise APIs and broad knowledge of system design.
- Experience profiling engineering systems for performance and identifying optimization strategies.
- Deep understanding of memory management, multi-threaded programming and synchronization.
- Strong understanding of software architecture, algorithms, data structures, object-oriented programming and design with keen eye to best practices and design patterns.
- Excellent written and verbal communication skills.
- 5+ years experience with software engineering, design, problem solving & debugging.
- Motivated self-starter and team player with a can-do attitude and proven ability to collaborate with cross-functional teams.
Design, architect and implement new apps, 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 in a timely fashion. 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 CI, test tools development). Conduct code reviews and hiring interviews.
Education & Experience
BS, MS or PhD in Computer Science or relevant work experience
- While the following skills aren’t required, knowledge of one or more of these areas would be valuable:
- -Knowledge of 3D rendering or experience building 3D apps using SceneKit, Metal or Open GL.
- -Knowledge of networking with TCP/IP, UDP and TLS and troubleshooting with WireShark.
- -Experience diagnosing and resolving multithreading and memory corruption issues.
- -Experience working with embedded systems and knowledge of hardware architecture.
- -Experience with writing developer documentation.