Software Engineer (C++/Linux Real-Time Systems)
Job Description
The Opportunity
Are you an experienced Software Engineer with a passion for building high-performance, real-time systems?
We are looking for a proactive and technically capable engineer to join a highly skilled development team responsible for designing, developing, integrating, and verifying advanced test and data capture systems. This is a hands-on role offering the opportunity to work on technically complex projects, developing software solutions that support the testing and validation of sophisticated, mission-critical technologies.
You'll be part of a collaborative team of software and systems engineers tackling challenging engineering problems using modern development practices and cutting-edge technologies. This role offers excellent opportunities for professional growth across a broad range of products, platforms, and technologies.
What You'll Be Doing
As a Senior Software Engineer, you will play a key role in the development of real-time software solutions operating within Linux environments.
Key responsibilities include:
-
Designing and developing real-time test and data capture software using C++ on Linux.
-
Integrating high-speed SFPDP cards into multi-channel data processing environments.
-
Architecting, developing, and maintaining scalable multi-threaded applications.
-
Implementing data sequencing, synchronisation, capture, and replay functionality.
-
Collaborating with hardware teams to ensure accurate timing and seamless hardware/software integration.
-
Leading and supporting integration, verification, and testing activities at both component and system level.
-
Performing performance analysis, debugging, troubleshooting, and optimisation of real-time systems.
-
Producing technical documentation including software architecture, interface definitions, and test procedures.
What We're Looking For
Essential Skills & Experience
-
Strong commercial experience developing software in C++ within Linux environments .
-
Knowledge and practical use of C# for tooling, interfaces, or supporting applications.
-
Experience developing real-time data processing systems .
-
Strong understanding of multi-threaded and concurrent programming concepts.
-
Experience working with low-level I/O, DMA, PCIe cards, or driver-level interfaces .
-
Experience developing sequencing frameworks, workflow engines, or state-machine-based execution systems.
-
Proven track record integrating and debugging complex software and hardware systems.
-
Strong understanding of software engineering best practices, memory management, and performance optimisation.
-
Experience using version control systems such as Git and familiarity with CI/CD practices .
Desirable Experience
-
Experience working with SFPDP (Serial Front Panel Data Port) technology.
-
Knowledge of FPGA-based data acquisition systems and synchronisation techniques.
-
Experience with Hardware-in-the-Loop (HWIL) environments, automated test rigs, or system test frameworks.
-
Exposure to Real-Time Operating Systems (RTOS) or real-time Linux extensions.
-
Experience using the LabVIEW suite of tools.
Why Join Us?
-
Work on technically challenging and innovative engineering projects.
-
Join a collaborative team of experienced software and systems engineers.
-
Gain exposure to a broad range of technologies including real-time systems, data acquisition, hardware integration, and advanced testing environments.
-
Be part of a supportive and inclusive culture that values innovation, continuous learning, and technical excellence.
-
Enjoy opportunities for professional development and career progression.
If you're a self-motivated Software Engineer who enjoys solving complex technical challenges and developing high-performance software solutions, we'd love to hear from you.
Similar Jobs
Explore similar searches
Browse more roles related to Software Engineer (C++/Linux Real-Time Systems).