Principal Software Engineer

About the Role

Our client is an innovative organisation developing advanced AI-driven robotics solutions for logistics, fulfilment and industrial automation. Its technology enables robotic systems to automate complex physical tasks in demanding, real-world environments.

We are seeking a Principal Software Engineer specialising in Robotic Manipulation to provide technical leadership in the design, development and deployment of advanced robotic capabilities.

In this role, you will shape software architecture, establish technical direction and develop robust software that enables robots to interact intelligently with their environments and execute complex tasks reliably.

You will lead technical work across motion planning, robotic kinematics, control strategies, motion execution, multi-arm coordination, environment representation, simulation and hardware integration.

This is a hands-on principal-level position suited to an experienced engineer who combines deep robotics expertise with strong software engineering fundamentals, architectural judgement and the ability to lead complex, cross-functional engineering initiatives from concept through production deployment.

Key Responsibilities

  • Define and evolve software architecture, technical strategy and long-term roadmaps for robotic manipulation systems.

  • Design, develop, deploy and support advanced manipulation software operating in production environments.

  • Develop high-performance solutions for motion planning, robotic kinematics, control strategies, motion execution, multi-arm coordination and environment representation.

  • Lead complex engineering initiatives from requirements gathering and architectural design through implementation, validation, deployment and ongoing operational support.

  • Architect simulation environments, automated testing frameworks and hardware-in-the-loop workflows to validate system performance, safety and reliability.

  • Diagnose and resolve complex issues involving robotics software, hardware, controls, sensors, distributed systems and integrated system behaviour.

  • Collaborate with multidisciplinary teams spanning hardware, controls, perception, systems engineering, product development, testing and software engineering.

  • Lead architecture discussions, technical design reviews, code reviews and engineering planning, documenting key decisions and trade-offs.

  • Establish and promote high standards for software quality, performance, testing, observability, reliability, maintainability and deployment.

  • Mentor engineers at different levels, helping develop technical capability and sound engineering judgement across the team.

  • Communicate technical direction, priorities, dependencies, risks and progress clearly to engineering leadership and cross-functional stakeholders.

Essential Requirements

  • Bachelor's degree in Robotics, Computer Science or a related discipline, with at least 10 years of professional software development experience; alternatively, a master's degree with at least 8 years of relevant experience.

  • Expert-level Python development skills and strong proficiency in C++.

  • Deep understanding of parallel and distributed systems, asynchronous programming and concurrency.

  • Significant experience designing and implementing production-grade software and algorithms for robotic manipulation, including motion planning, motion execution, kinematics, control strategies, multi-arm coordination and/or environment representation.

  • Experience designing RESTful APIs, gRPC services and clients, and reliable communication interfaces for distributed robotic systems.

  • Strong knowledge of software architecture, system design principles and established design patterns, with experience evolving complex software systems over time.

  • Demonstrated ability to establish technical direction and deliver robust, maintainable and thoroughly tested software against demanding technical and operational requirements.

  • Proven ability to take ambiguous technical challenges from initial investigation through architecture, implementation, deployment and ongoing support.

  • Extensive experience with Git-based workflows, code reviews, issue tracking tools such as Jira, and automated testing, including unit, integration, simulation and hardware-in-the-loop testing.

  • Excellent communication and collaboration skills, with the ability to influence multidisciplinary teams and mentor engineers across experience levels.

Desirable Experience

  • Master's or doctoral degree in Robotics, Computer Science or a related technical discipline.

  • 12+ years of professional software development experience, including substantial technical leadership in robotics or manipulation systems.

  • Advanced experience with ROS or ROS 2, including architecture, integration, performance optimisation and production deployment.

  • Experience developing and integrating drivers and software interfaces for robotic hardware, particularly robotic arms.

  • Experience designing robotics simulation environments, testing frameworks and validation strategies for complex manipulation capabilities.

  • Strong experience developing, debugging and supporting production software in Linux environments, particularly Ubuntu.

  • Experience with Python's asyncio library or comparable asynchronous programming frameworks.

  • Experience designing data models and backend services using NoSQL databases such as MongoDB.

  • A track record of taking robotics capabilities from research or prototype stages into reliable, production-ready deployments in real-world customer environments.

The Opportunity

This is an opportunity to take ownership of technically challenging robotics systems, influence architectural decisions and help deliver advanced robotic manipulation capabilities into production.

The successful candidate will combine hands-on engineering expertise with principal-level technical leadership, driving reliability, performance and innovation across complex robotic systems