Junior Software Engineer (C++ Middleware & Interfaces)
Must-have:GitQA/TestSecuritySeniorLead
About the role
Support the development, testing, integration and maintenance of a customised C++ middleware solution and its associated software interfaces. Work within a supervised engineering environment, developing 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 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.
- Investigate software defects, analyse logs and diagnostic data, reproduce reported issues and support corrective actions.
- Prepare and maintain 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, including Linux development and integration environments.
- Assist with customer demonstrations, factory acceptance testing, site integration, commissioning and troubleshooting when required.
- Participate in technical discussions to understand interface requirements, expected data flows and integration constraints.
- Maintain awareness of software quality, cybersecurity and configuration control requirements.
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 the software development lifecycle, 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 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.