Embedded System Software Engineer
Santa Clara Valley (Cupertino) , California , United States
Posted: Jan 6, 2021
Weekly Hours: 40
Role Number: 200212583
Are you stuck with an embedded system with poor design? Do you feel like you have good ideas that should have impacts far and wide? Are you convinced with the right resources you can build a platform that will change the industry? The Apple Hardware Test Engineering team is looking for a technical leader for our modular instrument platform. We will provide the resources that only exist at a company of Apple's scale. You just bring the talent.
- Proficient in C and at least one scripting languages (we use Python extensively).
- Good understandings of OO concept and the ability to communicate your design with UML efficiently.
- Experience setting up a CI/CD pipeline.
- MUST BE FLEXIBLE AND CAPABLE OF HANDLING MULTI-TASK OPERATIONS
- Must be able to perform under tight schedule
- Occasional travel is required.
- === DESIRED EXPERIENCE ===
- Embedded Linux development experience, including developing the boot loader, configuring linux kernel configuration, customizing the linux rootfs, linux kernel driver development, and linux network configuration.
- EXPERIENCE WITH FPGA A STRONG PLUS
- Experience working with remote teams in different timezones.
- We don't use C++11 extensively. But if you are good with C++, it's a strong indicator you are a good programmer.
- NETWORK PROGRAMMING. TCP/IP/SOCKETS
- Multithreading programming experience
- SECURITY PROGRAMMING
- Desktop GUI development experience. Familiar with at least one GUI programming toolkit (Qt, Swing, etc)
- Familiar with basic electrical engineering and semiconductor concepts. Able to work closely with EEs.
- Experience in the test and measurement industry preferred but not necessary
This team is developing a modular and extensible instrument platform based on the Xilinx Zynq SoC. The keyword here is platform. Anyone can design a circuit board, but it's a whole other ball game building a platform complete with hardware, software, reference designs, user guidelines, SDK ,etc that other engineers can develop on. First you need to be a strong embedded system programmer. There will be a lot of hands-on programming, but it's not enough to be a programmer. You will play a key role in the definition of the platform. To make the system a success, you need to be able to communicate with the user community to understand the requirements, design the right solution for the requirements, explain and promote the solution, and train new users. You need to be a good leader. Not only are we developing a complicated platform with software, firmware, FPGA, and hardware components, but we are developing it with programmers on both sides of the Pacific. This leader needs to help set up the optimal development and communication process that ensure good collaboration among our global team. You need to be open-minded and creative, because the platform will be used by people we haven't met, in situations we have thought of. It's a delicate balance to design for flexibility without going overboard. You need to be a good communicator. This is not a loner's job. Yes you will spend a lot of time programming, but you will also spend a lot of time collaborating and visiting our partners and users.
Education & Experience
BS/MS EE, CSE, CS