Sr. Embedded Software Engineer
Role details
Job location
Tech stack
Job description
This role focuses on designing and delivering robust, efficient, and scalable embedded software for microcontroller-based control systems used in residential and power products. The Embedded Software Engineer works closely with hardware, software, and product teams to develop embedded solutions running on real-time and embedded operating systems, contributing throughout the full development lifecycle from architecture and implementation to testing and sustaining engineering. This position combines hands-on embedded development, technical leadership, and mentorship within a cloud-connected IoT environment., + Design, develop, and maintain embedded software for microcontroller-based systems using C and C++ on platforms such as QNX, RTX, ZephyrOS, and similar operating systems.
-
Collaborate with cross-functional teams, including hardware, software, and product stakeholders, to define software requirements and system architecture.
-
Own and develop elements of embedded software using layered architectures and embedded operating systems, ensuring scalability and maintainability.
-
Plan and oversee unit testing, integration testing, regression testing, and system validation to ensure software reliability, performance, and testability.
-
Develop networking implementations and application code for wireless processors supporting Wi-Fi, Bluetooth, and ISM bands within embedded systems.
-
Implement and support industry-standard communication protocols such as RS-485 (Modbus), SAE J1939 CAN, Ethernet, and USB within embedded applications.
-
Conduct code reviews, follow release processes, and contribute to continuous improvement of development workflows and engineering practices.
-
Support hardware troubleshooting and board bring-up during product development and testing, working closely with hardware and circuit design teams.
-
Document software design, architecture, interfaces, and implementation details to ensure clarity, traceability, and ease of maintenance.
-
Use industry-standard software diagnostic tools, including emulators, debuggers, and oscilloscopes, to debug and verify controller software at the unit level.
-
Develop custom diagnostic software when needed to validate specialized features or functions in embedded controllers.
-
Technically lead the breakdown of software scopes of work, and help develop project timelines and budgets for embedded software deliverables.
-
Mentor less experienced team members in core embedded software development practices, coding standards, and debugging techniques.
-
Participate in and support release processes, including walking through workflow and process steps to ensure high-quality software delivery.
-
Contribute to both sustaining engineering activities and new product development initiatives within an IoT and cloud-connected environment.
Requirements
-
Bachelor of Science degree in Electrical and Computer Engineering or Computer Engineering required.
-
6+ years of work experience in embedded software development.
-
Strong embedded systems knowledge and experience working closely with hardware and circuits in a co-design environment.
-
Experience developing embedded software using layered architectures and embedded operating systems, including RTOS platforms.
-
Proficiency in C and C++ programming languages, including syntax, generally accepted code structure, and object-oriented programming.
-
Hands-on experience with industry-standard communication protocols such as RS-485 (Modbus), SAE J1939 CAN, Ethernet, and USB.
-
Experience designing software for test, including unit testing, regression testing, board bring-up, and end-of-line production testing.
-
Experience with embedded C and C++ for microcontroller-based systems, including CAN-based communication.
-
Ability to design, implement, and maintain embedded software for QNX, RTX, ZephyrOS, or similar operating systems.
-
Familiarity with release processes, code reviews, and structured development workflows.
Additional Skills & Qualifications
-
Master's degree in Electrical and Computer Engineering, Computer Engineering, or a related field is preferred.
-
Familiarity with CAN analysis tools such as Vector CANalyzer, CANape, and CANoe.
-
Familiarity with debuggers and emulators for ARM-based processors.
-
Familiarity with wireless certification requirements for Wi-Fi, Bluetooth, and ISM bands, and experience navigating the certification process.
-
Experience with wireless and networking features in embedded systems is a plus.
-
Familiarity with MATLAB/Simulink model-based code development and integration.
-
Experience working with cloud-connected and IoT systems.
-
Strong communication skills with the ability to convey complex technical concepts to diverse audiences.
-
High level of motivation with the ability to collaborate effectively in a team environment and work independently to achieve results.
-
Preference for candidates with primary programming experience in C, with C++ as an additional strength.
Benefits & conditions
This is a Permanent position based out of Milwaukee, WI.
Pay and Benefits
The pay range for this position is $98900.00 - $125600.00/yr.
Comprehensive coverage includes medical, dental, and vision plans, plus life insurance and retirement options to support your long-term well-being.
Workplace Type