Software Engineer - Exploratory Design Group

Santa Clara Valley (Cupertino), California, United States
Software and Services


Posted: Jan 1, 2019
Role Number: 200000899
Imagine what you could do here. At Apple, new ideas have a way of becoming extraordinary products, services, and customer experiences very quickly. Bring passion and dedication to your job and there's no telling what you could accomplish. Dynamic, smart people and inspiring, innovative technologies are the norm here. The people who work here have reinvented entire industries with all Apple Hardware products. The same passion for innovation that goes into our products also applies to our practices strengthening our commitment to leave the world better than we found it. Join us to help deliver the next groundbreaking Apple product. Do you love working on challenges that no one has solved yet? As a member of our dynamic group, you will have the unrivaled and rewarding opportunity to craft upcoming products that will delight and inspire millions of Apple’s customers every single day. In this role you will work with a cross-functional engineering team to define and implement custom software tools to facilitate instrument automation, control, and data acquisition across many systems. You will be expected to reduce high level feature requests into tightly-integrated tools for internal deployment on macOS and Linux systems.

Key Qualifications

  • You will have 3+ years experience developing applications and scripts for device control and data acquisition.
  • Experience writing software tools for a variety of devices, buses/interfaces, and protocols.
  • Experience developing macOS and iOS applications for data visualization and instrument control.
  • Experience using third-party frameworks, APIs, and DLLs.
  • Excellent command of Python and the C programming language.
  • Experience with embedded Firmware development is a definite plus.
  • Experience with SQL databases a huge plus.
  • Experience writing code in other programming and scripting languages
  • Experience interfacing with LabView, Matlab, and similar environments.
  • Familiarity with various bus protocols and interfaces (e.g., SPI, I2C, USB, Ethernet/TCP/IP/UDP, UART/RS-232, MIPI, DDR2, LVDS) is a plus.
  • Experience optimizing Python and Matlab algorithms for high data throughput.
  • Familiarity interfacing with large distributed systems is a definite plus.
  • Applicant must work well in a team environment.
  • Enthusiasm for Computer Science and related topics.


As a Software Engineer, you will have the following responsibilities: - Work with cross-functional engineering team to understand the team needs for automation, control, and data acquisition across a wide variety of devices. - Define a common tools architecture and APIs to make automation, control, and data collection uniform across all supported hardware, instruments, and devices. - Writing device drivers to support third-party hardware in our test environment. - Develop simple GUIs to interface to the device/instruments. - Manage internal data collection and storage infrastructure.

Education & Experience

Minimum BS in EE, CE, or CS required.

Additional Requirements