• Bachelor’s degree in Computer Science, Computer Engineering, Electrical
Engineering, Software Engineering, or a related technical field.
• Experience working with microcontrollers, bare-metal systems, an RTOS, or
similarly constrained real-time platforms.
• Experience designing embedded software components, interfaces, state machines,
and task structures, with a strong understanding of interrupts, scheduling,
concurrency, data ownership, timing constraints, and resource limitations.
• Working knowledge of common embedded communication interfaces such as SPI,
I2C, UART, CAN, Ethernet, or RS-485, sufficient to define hardware-facing interfaces
and support system integration.
• Strong debugging skills across component and system boundaries using logs,
traces, source-level debuggers, or other appropriate tools.
• Experience developing testable embedded software and supporting unit,
integration, simulation, or hardware-in-the-loop testing.
• Ability to translate ambiguous requirements into clear technical designs and
communicate effectively across electrical, controls, software, systems, safety, and