> Markdown version of [/jobs/ext/3804594-software-engineer-robotics](https://www.wearedevelopers.com/jobs/ext/3804594-software-engineer-robotics). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # Software Engineer Robotics - **Company:** Tennant Company - **Location:** Minneapolis, MN, United States - **Experience:** Experienced - **Salary:** $85,200.0 - $127,600.0 - **Contract:** Permanent contract - **Skills:** Board Bringup, Adobe InDesign, Agile Methodology, JIRA, Unit Testing, Bug Tracking Systems, C Sharp (Programming Language), C++ (Programming Language), CANopen, Configuration Management, Software Quality, Communications Protocols, Computer Engineering, Software Debugging, Linux, Distributed Systems, Electronic Data Interchange (EDI), Embedded Software, Ethernet, Monitoring of Systems, Iterative and Incremental Development, Python (Programming Language), Real-Time Operating Systems, Requirements Management, Software Engineering, Software Requirements Analysis, Verification and Validation (Software), System Software, Systems Integration, Scripting, System-level Testing, Integration Tests, Bitbucket, Software Coding - **Published:** October 17, 2026 - **Apply:** https://jobs.tennantco.com/talentcommunity/apply/1441058100/?locale=en_US ## About the Role * Bachelor of Science in Electrical, Software or Computer Engineering. * Minimum 3-5 years of professional software engineering experience, including embedded or systems-adjacent development. * Hands-on experience developing software using C/C++; familiarity with Linux and/or RTOS environments. * Experience working with requirements, configuration management, and defect tracking tools. * Demonstrated ability to debug software and support system-level troubleshooting. * Experience working effectively on cross-functional engineering teams. Preferred * Experience in robotics, autonomous systems, or complex electro-mechanical products. * Exposure to IoT or connected systems. * Experience with scripting or higher-level languages such as Python or C#. * Familiarity with communication protocols such as CAN or CANOpen. * Experience with unit testing, integration testing, or system verification. * Interest in growing technical scope and responsibility over time., * Strong hands-on software engineer with solid fundamentals and curiosity. * Comfortable working in complex systems and learning new technologies. * Quality-focused, with attention to detail and follow-through. * Collaborative team member who communicates clearly across disciplines. * Motivated to grow toward senior or lead software engineering roles. ## Description The Software Engineer works closely with Systems, Electrical, Mechanical, Test, and other Software Engineers to translate product requirements into robust, maintainable software solutions. Success in this role is measured by software quality, reliability, integration effectiveness, and the ability to deliver features on schedule while adhering to sound engineering practices., Embedded & Platform Software Development * Design, develop, test, and maintain embedded software using C/C++ on Linux and/or Real-Time Operating Systems (RTOS). * Contribute to software running on machine controllers and companion processing units. Support activities such as: * Board bring-up and hardware/software integration * Driver configuration or modification under guidance of senior engineers * Debugging software and hardware/software interface issues * Ensure software integrates cleanly with electrical, controls, and mechanical subsystems. Connected Systems & Communications * Develop and support software that interfaces with connected and distributed systems, including: * Controller-to-controller communication (CAN, CANOpen) * Ethernet and USB-based interfaces * Support implementation of IoT-enabled features under defined architectures, including data exchange and system monitoring. * Follow established practices for secure and reliable communications. Software Design & Requirements * Establish and refine functional requirements and performance targets for assigned software features or subsystems * Create and maintain software design documentation, including flowcharts, context diagrams, and interface descriptions. * Participate in design reviews, providing constructive feedback and incorporating review outcomes into designs. * Ensure software designs align with regulatory and product requirements. Quality, Testing & Debugging * Develop software with a strong focus on quality and maintainability. * Perform software debugging, fault isolation, and root cause analysis. * Participate in unit-level and system-level testing, supporting verification of software requirements. * Follow coding standards and contribute to peer reviews. Development Process & Tooling * Execute software development activities through the New Product Development (NPD) lifecycle. * Participate as a contributing team member in Agile or iterative development processes. Use established tools for: * Configuration management (Bitbucket or similar) * Defect tracking and task management (Jira) * Requirements management and collaboration (Visure or similar) * Contribute to improving software processes and documentation over time. Cross-Functional Collaboration * Work closely with Systems, Hardware, Test, Manufacturing, and external partners to resolve integration challenges. * Support new product launches and help address issues discovered during integration, testing, or early production. * Communicate technical status, risks, and recommendations clearly within the team.