freehire launches on Product Hunt on 26 August.

Follow →

Sr. Software Development Engineer C++

Summary

Develops Windows desktop software in C++/MFC to control chromatography instruments, integrating hardware via serial/TCP/IP and ensuring reliable data acquisition for analytical workflows.

About the Role

We are seeking an experienced Software R&D Engineer to join our team and drive the development of next-generation chromatography instrument software. In this role, you will be instrumental in building robust, high-performance software systems that power our analytical instruments, ensuring seamless integration, reliable communication, and a superior user experience.

Key Responsibilities

  • Chromatography Instrument Software Integration
    Lead the design and implementation of software modules for new chromatography instruments, ensuring seamless integration of hardware components, data acquisition systems, and analytical workflows.
  • Instrument Communication Protocols
    Develop, implement, and maintain communication protocols (Serial, TCP/IP, etc.) to enable reliable data exchange between chromatography instruments and host software systems.
  • MFC Software Development & Maintenance
    Design, develop, and maintain Windows desktop applications using Microsoft Foundation Classes (MFC) and C++, ensuring long-term stability and performance of legacy and new software products.
  • Software Architecture Design
    Participate in software architecture discussions and decisions; contribute to the design of scalable, modular, and maintainable software architectures for complex instrument control systems.
  • Cross-Functional Collaboration
    Work closely with hardware engineers, firmware developers, QA teams, and product managers to deliver end-to-end software solutions that meet rigorous quality and regulatory standards.
  • Code Quality & Documentation
    Write clean, well-documented, and testable code; conduct code reviews; and maintain comprehensive technical documentation.
  • Problem Solving & Debugging
    Troubleshoot complex software and system-level issues, perform root cause analysis, and implement effective solutions in a timely manner.

Requirements

  • 5+ years of professional C++ development experience with a strong command of modern and legacy C++ standards.
  • Hands-on experience with MFC (Microsoft Foundation Classes) application development on Windows; familiarity with MFC UI frameworks, message handling, and document/view architecture is highly preferred.
  • Solid understanding of instrument communication protocols (e.g., RS-232, RS-485, TCP/IP, USB, Modbus, SCPI) and real-time data acquisition.
  • Experience in software architecture design and building modular, maintainable systems for hardware-intensive applications.
  • Proficiency with Visual Studio development environment and Windows SDK.
  • Strong debugging and performance optimization skills in complex, multi-threaded environments.
  • Familiarity with software development lifecycle (SDLC) and version control systems (e.g., Git, SVN).
  • Bachelor's degree or higher in Computer Science, Software Engineering, Electrical Engineering, or a related technical field.
  • Good written and verbal communication skills in English; ability to collaborate effectively in a global or cross-functional team.

Preferred Qualifications

  • Prior experience in analytical instrument software (chromatography, mass spectrometry, spectroscopy, or similar scientific instruments).
  • Knowledge of GMP, FDA 21 CFR Part 11, or other regulatory compliance standards in the pharmaceutical or life sciences industry.
  • Experience with .NET / C# interop, COM, or migration from MFC to modern frameworks.
  • Familiarity with embedded systems, firmware interfaces, or low-level hardware drivers.
  • Understanding of multi-threading, concurrency, and real-time processing in scientific data acquisition.

See also

Tailor your CV for this role?

We couldn't check your fit for this role — add a CV to your profile to see it next time.

A new version of freehire is available