Senior C++ Software Engineer
Job description
About the role
At Agile Robots, we are dedicated to transforming advanced research into effective solutions for industrial automation. In this position, you will become a vital member of the Platform Team, where your primary focus will be on developing the foundational infrastructure that drives our robotic systems. Your work will emphasize both reliability and performance, ensuring that our technology meets the highest standards.
Key facts
What you'll do
- Design, develop, and maintain C++ components that are integral to our robotics infrastructure, ensuring seamless operation.
- Oversee the management of Linux-based system software, which includes runtime services, configuration settings, logging mechanisms, and diagnostic tools.
- Create and implement interfaces that connect various robot applications with hardware services and containerized environments.
- Architect data pipelines that are optimized for low latency and deterministic performance, crucial for real-time robotic applications.
- Improve system reliability by enhancing error handling processes, increasing observability, and implementing rigorous testing protocols.
- Refine the software architecture to promote modular design and facilitate long-term maintainability of the codebase.
- Set and uphold technical standards and development workflows to ensure high-quality outputs from the team.
- Mentor junior team members by conducting code reviews and collaborating on design discussions, fostering a culture of learning and improvement.
- Diagnose and resolve integration challenges that arise across software, hardware, and network interfaces, ensuring smooth operation of robotic systems.
Requirements
- A minimum of 7 years of professional experience in software engineering, with a strong emphasis on C++.
- Expertise in modern C++ standards, particularly C++17 or C++20, demonstrating a solid understanding of contemporary programming practices.
- Comprehensive knowledge of Linux system programming, including inter-process communication (IPC), threading, socket programming, and file system management.
- Proven experience in applying architectural principles such as SOLID and separation of concerns to create robust software solutions.
- Advanced debugging skills, utilizing tools like GDB, Valgrind, sanitizers, perf, strace, ltrace, and tcpdump for effective troubleshooting.
- Strong background in concurrent and multi-threaded programming, essential for developing responsive applications.
- Familiarity with networking protocols such as TCP/IP and UDP, which are critical for communication in robotic systems.
- Experience with automated testing methodologies for unit, integration, and hardware-level testing scenarios to ensure software quality.
- Proficient in using Git within continuous integration (CI) development environments to manage code effectively.
- Excellent verbal and written communication skills in English, enabling clear collaboration with team members and stakeholders.
Nice to have
- A background in robotics, machine control, or embedded systems, which would enhance your understanding of our products.
- Knowledge of industrial communication protocols such as EtherCAT, CAN, Modbus, OPC UA, or Profinet, which are often used in automation systems.
- Familiarity with real-time Linux, kernel scheduling, or interrupt request (IRQ) handling to optimize system performance.
- Experience with IPC mechanisms like shared memory or message queues, which are vital for efficient data exchange between processes.
- Understanding of system updates, boot processes, and operating system image management to maintain system integrity.
- Experience with containerization technologies, which can streamline deployment and scalability.
- Proficiency in build systems and package management tools such as CMake, Conan, or Debian packaging to facilitate software development.
- Scripting skills in Python for automation tasks or tooling development, enhancing productivity.
- Experience in creating internal SDKs or platform libraries that can be utilized across various projects.
Skills & tools
- C++, C++17, C++20
- Linux System Programming
- Git
- Debugging Tools: GDB, Valgrind, Sanitizers, perf, strace, ltrace, tcpdump
- Build Systems: CMake, Conan
Practical notes
Agile Robots is a global organization with a workforce exceeding 2,300 employees and a production facility located in Kaufbeuren, Germany. We are committed to fostering an inclusive workplace and encourage applications from individuals of all backgrounds, regardless of gender, nationality, ethnicity, religion, age, or disability. Join us in shaping the future of industrial automation!