About The Role
Support the development, testing, integration, and maintenance of a customised C++ middleware solution and its associated software interfaces. The role provides hands-on implementation capability within a supervised engineering environment, with opportunities to develop expertise in C++, system integration, communications protocols, testing, and software configuration management.
Responsibilities
- Develop and maintain C++ software modules under the guidance of the Senior Software Engineer / Technical Lead.
- Implement middleware functions, software adapters, protocol handlers, message parsers, data-conversion logic, configuration functions, and diagnostic features.
- Support the integration of software interfaces between the middleware solution and customer, third-party, or internal systems.
- Write clean, maintainable, and well-documented C++ code in accordance with project coding standards and software-development processes.
- Develop unit tests and support integration, system, and acceptance testing activities.
- Investigate software defects, analyse logs and diagnostic data, reproduce reported issues, and support corrective actions.
- Prepare and maintain technical artefacts such as source-code documentation, test records, configuration files, software release notes, and installation instructions.
- Participate in code reviews and incorporate feedback from the Senior Software Engineer and project team.
- Use Git and approved configuration-management processes to manage source code, branches, baselines, and software releases.
- Support build, deployment, and test-environment setup activities, including Linux-based development and integration environments.
- Assist with customer demonstrations, factory acceptance testing, site integration, commissioning, and troubleshooting when required.
- Participate in technical discussions with system engineers and other disciplines to understand interface requirements, expected data flows, and integration constraints.
- Maintain awareness of software quality, cybersecurity, and configuration-control requirements relevant to the project.
Requirements
- Degree or diploma in Computer Science, Computer Engineering, Electrical/Electronic Engineering, or a related discipline.
- 2 to 3 years of relevant software-development experience.
- Good foundation in C++ programming, including object-oriented design, memory management, debugging, and standard data structures.
- Basic understanding of software-development lifecycle practices, including requirements, implementation, testing, defect tracking, and version control.
- Familiarity with Git or another source-control system.
- Familiarity with Linux or willingness to develop competence in a Linux-based software-development environment.
- Ability to read technical specifications, follow structured development tasks, and document work clearly.
- Strong analytical, problem-solving, and troubleshooting skills.
- Good teamwork and communication skills
Preferred Qualifications And Experience
- Experience in C++, Linux, embedded systems, networking, middleware, or systems integration.
- Familiarity with TCP/IP networking, sockets, REST APIs, serial communications, or basic client-server architectures.
- Exposure to JSON, XML, YAML, CSV, or other structured data formats.
- Exposure to CMake, Makefiles, automated tests, CI/CD, Docker, or scripting using Python or Bash.
- Familiarity with unit-test frameworks for C++.
- Interest in communications systems, industrial automation, maritime systems, defence systems, IoT, robotics, or real-time software environments.