Key Role Overview
We are seeking a skilled Software Developer to join our dynamic team in Geneva, Switzerland. This role offers a unique opportunity to work closely with real robotic systems, developing software that bridges low-level hardware control with high-level web services.
Main Responsibilities
1. Design and develop low-level software interfaces with hardware components and cloud/web services.
2. Implement multi-threaded C++ applications running close to the Linux kernel for real-time performance.
3. Develop and debug software for hardware communication using CAN bus, serial communication, and TCP/IP sockets.
4. Work with gRPC, Bluetooth LTE, and networking protocols to expand device connectivity.
5. Perform advanced debugging and profiling using tools like gdb and Valgrind.
6. Write and maintain Bash scripts for automation tasks.
7. Collaborate with a cross-functional team to design scalable, high-performance software for robotic systems.
8. Maintain efficient version control and development practices with daily use of vim and git.
9. Read, write, and maintain documentation for clarity and completeness.
Required Qualifications
1. Extensive experience with C++11, C, and Bash scripting in Linux environments; strong understanding of well-documented code and its maintenance.
2. Strong knowledge of multi-threaded programming and system-level software development.
3. Experience developing software that interfaces with hardware components.
4. Strong debugging and profiling skills with gdb, Valgrind, and other analysis tools.
5. Familiarity with Boost, OpenCV, and gRPC.
6. Comfortable working in a resource-constrained embedded environment.
7. Ability to follow code-style guidelines for consistency and readability.
8. Expertise in Linux networking is an advantage.