Junior Firmware Engineer
The job description
Tech stack. C programming fundamentals, microcontroller basics (GPIO, timers), UART debugging, Git workflows, basic lab equipment (multimeters, oscilloscopes), datasheet reading, code review participation, unit testing
About the role
You will start your firmware career on a team shipping real physical devices, learning embedded engineering from people who have debugged everything you are about to encounter for the first time. Junior firmware engineers here do genuine, valuable work from the first month: peripheral drivers, bug fixes, test automation, and board bring-up support, all with close mentorship and careful code review. You will be expected to ask questions constantly, read large amounts of existing production code, and develop professional habits early: testing on real hardware, writing clearly, and owning your mistakes completely. Engineers who learn fast, stay curious about the hardware beneath their code, and care about craft advance quickly on this team.
What you will achieve
- Ship your first production firmware contributions within the first two months, progressing from well-scoped driver fixes to independently owned small features
- Build strong embedded fundamentals rapidly: clean C code, careful register manipulation, thoughtful debugging technique, and pull requests that reviewers trust
- Contribute meaningfully to team velocity through test automation additions, HIL test coverage, documentation improvements, and lab tooling fixes
- Develop genuine hardware awareness by participating in board bring-ups, reading schematics alongside code, and understanding how firmware affects physical behavior
- Earn increasing scope and responsibility by demonstrating reliability: hitting commitments consistently, asking for help early, and following through completely
What you will bring
Must-haves
- 0 to 2 years of professional experience; strong internships, co-ops, or personal projects with microcontrollers and real hardware all count fully
- Solid C programming fundamentals: pointers, memory layout, bitwise operations, and demonstrated comfort reading other people's embedded code
- Basic microcontroller knowledge: GPIO configuration, timers, interrupt concepts, and UART communication, from coursework or hands-on projects
- Ability to read component datasheets and extract the specific information needed to configure a peripheral correctly
- Hands-on inclination toward physical hardware: breadboarding experience, basic soldering skills, or clear enthusiasm for working with real devices
- Strong communication habits: asking precise questions, writing readable code with useful comments, and giving honest, timely status updates
- BS in Electrical Engineering, Computer Engineering, or a closely related field
Nice-to-haves
- Personal projects built with STM32, ESP32, Arduino, or similar platforms: designed, debugged, and documented by you
- Familiarity with I2C and SPI communication protocols from coursework, projects, or prior internships
- Experience with a real-time operating system such as FreeRTOS or bare-metal scheduling from school or hobby work
- Contributions to open-source embedded projects or active, helpful participation in embedded community forums
Apple
Tesla
Qualcomm
Intel
Western Digital
Seagate