
Software Engineer II – Microcontrollers
- Hartford, WI
- Permanent
- Full-time
Seeking a motivated and detail-oriented Software Engineer II – Microcontrollers to join a collaborative engineering team developing embedded control systems for vehicle applications such as emergency response, construction, and defense. In this role, you will support the development of embedded software modules by applying sound engineering practices, adhering to regulatory and industry standards, and working closely with subject matter experts and cross-functional teams.
You will take ownership of software tasks through the full development lifecycle, including requirements interpretation, code development, test execution, and documentation. This role is ideal for an engineer with 2–5 years of experience who is passionate about embedded systems and eager to grow in a fast-paced, agile environment.Key Responsibilities
- Collaborate within an agile team environment to develop, test, and maintain embedded software for microcontroller-based systems.
- Participate in the interpretation and implementation of clear project requirements from internal stakeholders, customers, and regulatory standards.
- Contribute to the development and maintenance of software lifecycle documentation, including requirements, design specs, source code, test plans, and test reports.
- Perform unit, manual, and automated tests to validate software performance and compliance.
- Identify, track, and resolve software issues and defects.
- Assist in root-cause analysis and corrective action processes related to product performance and production issues.
- Coordinate with electrical design teams on hardware-software integration and support new hardware bring-up.
- Collaborate with outsourced vendors and partners on development efforts.
- Provide hands-on technical support to customers when needed.
- Contribute to other software engineering tasks and improvement initiatives as assigned.
Education:
- Bachelor's degree in Electrical Engineering, Computer Engineering, or a related field.
- 2 to 5 years of relevant software engineering experience.
- Proficient in C programming for embedded systems.
- Strong understanding of programming fundamentals and embedded system design practices.
- Experience working with electronic schematics, datasheets, and hardware interfaces.
- Comfortable using standard lab equipment such as power supplies, oscilloscopes, logic analyzers, and digital multimeters.
- Familiarity with software version control systems.
- Basic understanding of debugging tools and techniques.
- Strong written and verbal communication skills.
- Ability to work collaboratively in cross-functional, matrixed teams.
- Comfortable in an agile development environment.
- Ability to create clear and concise documentation such as test plans, user guides, and release notes.
- Willingness to travel occasionally (typically under 5%).
Additional Technical Skills:
- Proficiency in scripting languages such as Python or Bash.
- Familiarity with C++.
- Experience using Git or other distributed version control systems.
- Experience with open-source software projects or libraries.
- Knowledge of real-time operating systems (e.g., FreeRTOS).
- Understanding of Scrum or other agile development methodologies.
- Familiarity with software quality practices including design reviews, automated builds, and continuous integration.
- Experience with unit testing and test-driven development.
- Knowledge of embedded driver development (PWM, Client, etc.).
- Familiarity with bootloaders, flash reprogramming, and low-level system initialization.
- Understanding of communication protocols such as CAN, LIN, and Ethernet.
- Skilled in both software and hardware debugging.
- Able to read and review electrical schematics for software-hardware integration.
- Capable of performing pull requests and code reviews in a collaborative environment.
- Comfortable troubleshooting hardware/software issues using test instruments and diagnostic tools.