Senior Software Engineer - New Product Development

Tennant CompanyGolden Valley, MN
$97,500 - $150,600Onsite

About The Position

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. The Senior Software Engineer contributes to system-level software design while also owning complex features or subsystems end-to-end. This role partners closely with Systems, Electrical, Mechanical, Test, and Product teams to translate requirements into scalable, reliable solutions and begins to influence technical direction, best practices, and architectural decisions. Success in this role is measured by software quality, system integration effectiveness, technical contributions to architecture, and the ability to guide and elevate team execution.

Requirements

  • 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.

Nice To Haves

  • 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.

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.
  • Contribute to software running on machine controllers and companion processing units.
  • Provide hands-on support for board bring‑up and hardware/software integration, driver configuration and targeted development, and 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) and 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.
  • 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).
  • Actively contribute to software architecture discussions, offering recommendations that improve scalability, modularity, and reuse.
  • Participate in and help lead design reviews, ensuring alignment with system-level requirements and architectural intent.
  • Begin to drive consistency in design approaches across projects and teams.
  • Build high-quality software with strong emphasis on maintainability, testability, and robustness.
  • 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.
  • Execute software development within the New Product Development (NPD) lifecycle.
  • Participate in Agile or iterative development processes while helping improve team execution efficiency.
  • Use and support best practices with tools such as configuration management (Bitbucket or similar), defect tracking and task management (Jira), and requirements management (Visure or similar).
  • Contribute to process improvements, including development workflows, documentation, and traceability.
  • 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.

Benefits

  • Multiple medical plan options
  • 401(k) with a 100% match up to 6%
  • Paid vacation time
  • 8 paid company holidays
  • 3 personal holidays
  • Dental and vision coverage
  • Wellness rewards
  • Robust family support programs
  • Company-paid disability and life insurance
  • Full Employee Assistance Program
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service