Senior Software Engineer - New Product Development
Tennant Company · Golden Valley, MN · 1 wk ago
Engineering$98k–$151k/yrFull-time
About the role
We are seeking a Senior Software Engineer to join the Tennant Company (TNC) Robotics Product Development organization. This role combines strong hands-on software development with emerging technical leadership responsibilities, supporting the design, integration, and delivery of embedded and connected software systems for robotic cleaning platforms.
Responsibilities
- Design, develop, test, and maintain embedded software using C/C++ on Linux and/or Real-Time Operating Systems (RTOS).
- Own delivery of complex features or subsystems, ensuring performance, reliability, and maintainability.
- Provide hands-on support for: Board bring-up and hardware/software integration, Driver configuration and targeted development, Debugging hardware/software interface issues, Ensure software integrates cleanly with electrical, controls, and mechanical subsystems.
- Develop and support software for connected and distributed systems, including: Controller-to-controller communication (CAN, CANOpen), Ethernet and USB-based interfaces, Contribute to the design and implementation of IoT-enabled features, including data exchange, telemetry, and system monitoring.
- Apply and promote best practices for secure, reliable communication and data handling.
Qualifications
- Define and refine functional requirements, system behaviors, and performance targets for features and subsystems.
- Develop clear and structured design artifacts (flowcharts, architecture diagrams, interface specifications).
- Participate in and help lead design reviews, ensuring alignment with system-level requirements and architectural intent.
- Lead debugging efforts, performing fault isolation and root cause analysis across system boundaries.
- Support and guide unit, integration, and system-level testing activities.
- Promote adherence to coding standards, review practices, and quality metrics.
- Collaborate closely with Systems, Hardware, Test, Manufacturing, and external partners to resolve system-level challenges.
- Provide technical guidance and informal mentorship to junior engineers.
- Help drive alignment across teams on software interfaces, integration strategies, and technical decisions.
- Clearly communicate technical status, risks, and recommendations to stakeholders.
- Support product launches and help resolve issues during integration, validation, and early production.
Required Education & Experience
- Bachelor of Science in Electrical, Software or Computer Engineering.
- Minimum 6–9 years of professional software engineering experience, including embedded or systems-level development.
- Strong hands-on experience with C/C++ in Linux and/or RTOS environments.
- Experience working with requirements management, configuration management, and defect tracking tools.
- Demonstrated ability to debug hardware/software and system-level issues.
- Proven experience working effectively on cross-functional engineering teams.
Preferred Experience
- In robotics, autonomous systems, or complex electro-mechanical products.
- Exposure to IoT and connected systems architectures.
- Experience with scripting or higher-level languages such as Python or C#.
- Familiarity with communication protocols such as CAN / CANOpen.
- Experience with unit, integration, and system-level testing frameworks.
- Demonstrated growth into technical leadership or subsystem ownership roles.
Benefits
A comprehensive benefits package including multiple medical plan options, 401(k) with a 100% match up to 6%, paid vacation time, 8 paid company holidays and 3 personal holidays, dental and vision coverage, wellness rewards, robust family support programs, company-paid disability and life insurance, and a full Employee Assistance Program.