The UMV team is focused on building the next generation of dynamic mobile robots. As a Senior Software Engineer, you will help us continue to architect and develop a world-class software infrastructure that supports our machines and controls development.
Requirements
- Deep expertise in systems design and software architecture for complex, real-time systems.
- Strong software development skills in modern C++ or Python.
- Strong background in Linux-based platforms and development environments.
- Proficiency with modern software engineering tools and practices at scale including git, issue tracking, and CI/CD pipelines.
- Excellent troubleshooting and debugging skills, particularly in complex, real-time controls applications.
- Proven experience in technical leadership, including mentoring and guiding engineering teams.
- Proficiency working with real-time controls systems, perception, navigation, data processing, logging, visualization, and physics simulation.
Responsibilities
- Lead the design and architecture of robotics software systems, especially where real-time controls performance is essential.
- Take a hands-on approach to technical leadership, mentoring other engineers, and fostering a culture of collaboration, innovation, and continuous improvement within the team.
- Promote and maintain best practices for code quality, reliability, modularity, scalability, and performance.
- Be proactive in tackling continuous integration and deployment issues.
- Collaborate with researchers to translate advanced controls algorithms and experimental systems into reliable, production-ready software.
- Work with other teams across the Institute to help us define and evolve our long-term software strategy.
- Evaluate new tools, frameworks, and methodologies and drive their adoption where appropriate.
Other
- 10+ years of professional experience in software engineering delivering high-quality, production-level software.
- BS or MS in Computer Science or a related field.
- Excellent communication, collaboration and documentation skills
- Experience developing and debugging software on physical hardware systems.
- Familiarity with ROS/ROS2 and hardware/software integration, gRPC, LCM, or other inter-process communication middleware.