Junior Software Engineer (C++ Middleware & Interfaces)
Description
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.