Bachelor’s degree or equivalent practical experience.
5 years of experience with software development in one or more programming languages, and with data structures/algorithms.
3 years of experience testing, maintaining, or launching software products, and 1 year of experience with software design and architecture.
3 years of experience working with embedded operating systems.
Experience in triaging, debugging, and resolving system issues across software, hardware, and SoC, including designing debug strategies.
Nice to Haves
Master's degree or PhD in Computer Science or related technical field.
1 year of experience in a technical leadership role.
Solid background in embedded systems, including bootloaders, bare metal development (ARM/RISC-V), and experience with hardware specifications and peripherals (e.g., Synopsys DWC).
Familiarity with system-level software (e.g., upstream Linux), hardware interfaces (e.g., USB), debugging tools (JTAG), and developing accessible technologies.
Expertise in software development in C and Rust, including pre- and post-silicon development and SOC bring-up.
What You'll Be Doing
Write and test code, particularly in Rust and C for USB bootloaders, as well as bare metal programming for ARM M0/RISC-V.
Review peer code for best practices, triage and resolve product/system issues, and design debug strategies.
Understand USB data controllers, USB protocols, and bring-up process for new devices.
Participate in design reviews, decide on technologies, and contribute to product development from prototyping to mass production.
Contribute to documentation, design test cases for continuous integration, and adapt content based on feedback.
Perks and Benefits
Proud to be an equal opportunity and affirmative action employer.
Building a workforce representative of the users served.
Creating a culture of belonging and providing equal employment opportunities.
Offering accommodation for applicants with needs.
English proficiency requirement for global collaboration.