Job Summary: Conceptualise, designs, codes, debugs and performs development activities in accordance with designated standards. Shares technical expertise and provides training and guidance to other team members. Essential Job Duties and Responsibilities: Using the current programming language and technologies provide creative, thorough, and practical solutions to a wide range of technical problems. Share technical expertise within the department and other departments. Analyse and contribute to system and subsystem requirements specifications and design definitions. Design, develop and unit test software programs using C++ in a Linux and/or Windows development environment. Complete high- and low-level detailed software design specifications, storyboards and interface specifications. Provide support of products through conception to product delivery including problem solving, defect maintenance and support to customer services (which may require out of hours support in certain circumstances). Prepare reports, manuals, procedures, and status reports. Provide training and guidance to other team members. Minimum Job Requirements: Education and Qualifications Essential: Bachelor of Science degree in computer science, electrical engineering, or related field or equivalent professional experience or combination of both. Desirable: Master's Degree in computer science or related discipline or equivalent qualification/work experience. Skills, Knowledge and Experience Essential: Experience with Windows and Linux Operating Systems. Experience with scripting languages PERL, BASH, PYTHON. Experience in Software Engineering with a proven track record of specification, design, and development. An effective problem solver with the ability to understand and resolve complex issues. Experience of Object-Oriented Design (e.g. UML) and implementation, along with Design patterns. C++ and/or C# Experience of applying test-Driven Development, SOLID principles and Clean Code Ability to contribute to the development of the architecture for applications. Demonstrable experience of defining test plans and test data requirements. Desirable: Experience working in a similar industry. Scrum or Kanban experience. GIT experience. Jenkins or equivalent CI build server experience. Experience of maintaining and improving coding standards