Overview Waters Corporation is seeking a Software Developer to join our Software Team in Geneva, Switzerland. This position offers a unique opportunity to work closely with real robotic systems, developing software that bridges low-level hardware control with high-level web services. The ideal candidate is an out-of-the-box thinker with deep expertise in C++ and Linux programming, eager to tackle complex challenges in a fast-paced, creative environment. This role involves working at the intersection of firmware, networking, and software, contributing to the next generation of automated laboratory solutions.
Responsibilities Design, develop, and optimize low-level software interfacing with both hardware components and cloud/web services.
Implement multi-threaded C++ applications running close to the Linux kernel to ensure real-time performance.
Develop and debug software for hardware communication using CAN bus, serial communication, and TCP/IP sockets.
Work with gRPC, Bluetooth LTE, and networking protocols to expand device connectivity.
Perform advanced debugging and profiling using tools like gdb and Valgrind.
Write and maintain Bash scripts for automation tasks.
Collaborate with a cross-functional team to design scalable, high-performance software for robotic systems.
Work daily with vim and git, maintaining efficient version control and development practices.
Read, write, and maintain documentation, ensuring clarity and completeness for future development and troubleshooting.
Qualifications Extensive experience with C++11, C, and Bash scripting in Linux environments; strong understanding of the importance of well-documented code and the discipline to maintain it.
Strong knowledge of multi-threaded programming and system-level software development.
Experience developing software that interfaces with hardware components.
Strong debugging and profiling skills with gdb, Valgrind, and other analysis tools.
Familiarity with Boost, OpenCV, and gRPC.
Comfortable working in a resource-constrained embedded environment.
Capability to follow and adhere to code-style guidelines, ensuring consistency and readability across the codebase.
Expertise in Linux networking (experience with netcat, nmap, nmcli required) is a plus.
#J-18808-Ljbffr