Software Developer

Santa Clara Valley (Cupertino), California, United States


Posted: Jun 3, 2019
Role Number: 200002227
Do you have a passion for invention and self-challenge? Do you thrive with pushing the limits of what’s considered feasible? As part of our Battery Engineering group, you’ll help craft creative battery solutions that deliver more energy in smaller spaces than ever before. You’ll work across disciplines to transform improved hardware elements into a single, integrated design. Join us to help us innovate new battery technologies that continually outperform the previous iterations. By collaborating with other product development groups across Apple, you’ll push the industry boundaries of what batteries can do and improve the product experience for our customers across the world. Our Engineering Team is responsible for architecting, specifying and realizing advanced development environments and testing tools. You will be a key technical contributor and will utilize your in-depth software and scripting engineering skills to conceive, specify and realize state of the art test and development suites to enable the next generation systems.

Key Qualifications

  • Typically requires at least 8+ years of hands-on software design engineering experience. Individuals with more experience may assume additional responsibilities.
  • In-depth software design engineering experience including development and validation.
  • Understanding of embedded microcontroller organization including peripheral register mapped accessories/functions.
  • Solid understanding of communication buses like Ethernet, I2C, USB, UART, single wire communication and communication sniffers and related hardware.
  • Experience working with engineering test instruments like DVMs, power supplies, electronic loads, function generators, oscilloscopes, logic and spectral analyzers, data acquisition systems and data loggers.
  • Experience with software design engineering in any of these areas is considered a plus: Macintosh environment, embedded programming of microcontroller and FPGA’s, digital filters and statistical software analysis, software control systems and advanced math.
  • Advanced experience with developing continuous integration systems (preferably Jenkins)
  • Advanced experience with source code management systems, branching strategies and best practices
  • Experience with Unix, Mac OS platforms.
  • Experience with programming and scripting languages like: C, C++, Objective-C, Swift, Python, Shell, Makefile. (Experience with web-based tool development is a plus.)
  • Experience with software revision control tools such as Git.


• Brainstorm, architect and develop software design concepts. • Utilize your creative side in developing software solutions while applying engineering principles of computer science, programming, scripting and software test and validation. • Generate innovative designs taking into consideration system specification, proven architectural and programming guidelines and coding standards. • Craft software solutions to automate various types of electrical instrumentation including data acquisition, instrumentation control, data gathering, storage, analysis and visualization. • Craft software solutions as standalone applications (Mac OS) automate processes and/or interact with external EE hardware. • Develop and manage software and FW lifecycle processes, including process standardization and automation. • Performing software builds. Maintaining and integrating Build & Integration automation tools • Automation development including parallel and distributed builds, build optimizations • Validate software and verify it meets expected performance and stability. • Conduct technical design reviews with peers and stakeholders to ensure software functionality, usability, traceability and maintainability. • Work closely with internal multifunctional engineering teams. • Work with and manage consultants and third-party vendors, to gather and generate requirements, propose system architectures and develop software systems and interfaces.

Education & Experience

Required: BSCS or BSEE Degree Preferred: MSCS and MSEE Degree

Additional Requirements