Senior Robot Software Engineer
About Trener
Trener is building the software foundation for a new generation of industrial robotics. We combine advanced AI, intuitive programming, and pre-trained skill models to make robots easier to deploy, operate, and adapt to real-world industrial work. With teams in San Jose and Trondheim, we build software that connects cloud infrastructure, developer platforms, and deployed robotic systems.
About the Role
Our robots run on core software written in modern C++ on ROS 2. It executes robot jobs, coordinates the robot with other hardware in the robot cell, and has to keep running reliably on the factory floor. You will be a senior engineer on that core. You will design and build features, improve the structure of the codebase, help raise the bar for our engineering culture, so that what we ship works the first time at a customer site.
This is not a narrow robotics role. Much of the work is general C++ engineering: architecture, concurrency, performance, build systems, and tests. You will work closely with a staff engineer who leads the architecture of the core, and with the robotics, AI, and frontend engineers who build on it. You will also be able to test on real hardware in our Trondheim robot lab.
This is a senior individual contributor role based on-site in Trondheim, reporting to the Chief Product Officer.
What You Will Own
Core robot software: designing, building, and maintaining features in the C++ core that executes robot jobs and behaviors.
Architecture and code health: design for flexibility, clear interfaces between components and execution.
Reliability: finding and fixing the root causes of failures, and making sure the system behaves predictably when something goes wrong.
Testing: unit, integration, and simulation tests that catch regressions before they reach a robot.
Build and tooling: the C++ build, dependency management, static analysis, and the CI checks that keep the codebase healthy.
Engineering standards: reviewing code, sharing C++ expertise, and helping set the standards the team works to.
Requirements
Modern C++ in production: 5+ years writing and maintaining production C++ (C++17 or later), with a solid grasp of memory management, concurrency, and performance.
Software design: You have designed components and interfaces that others build on, and you have evolved an existing codebase without breaking it.
Testing as part of the work: You write tested code by default, and you have built or improved the test suite of a non-trivial system.
C++ toolchain on Linux: CMake, compilers, debuggers, profilers, static analyzers and sanitizers.
Clear written communication in English: Technical decisions here are discussed, documented, and reviewed in writing, often across time zones.
Experience That Will Help You Succeed
ROS 2: nodes, lifecycle management, executors, and DDS-based communication.
Robotics software, industrial automation, or other software that controls physical machines.
Concurrent and distributed systems: many processes communicating, handling partial failures, and debugging across process boundaries.
Real-time or deterministic systems: timing constraints, latency, and predictable behavior under load.
A track record of measurably improving the reliability of a production system.
Behavior trees, state machines, or other models for executing tasks.
Python for tooling and tests.
Containerized development and deployment with Docker.
What We Offer
The opportunity to shape the core software that runs robots in real factories. A senior technical role with direct influence over the architecture and engineering standards of our robot software, reporting to the Chief Product Officer.
A growing international engineering organization with teams in the United States and Norway.
Required Skills
Required Languages
🇬🇧 English