Develop, update, and maintain NIRIS software modules in accordance with agreed requirements, priorities, technical direction, and project planning.
Develop and update Java software components supporting the continued evolution and sustainment of the NIRIS software baseline.
Support the full software development lifecycle of NIRIS, including analysis, design, implementation, integration, testing, defect resolution, and documentation.
Develop and conduct unit testing and automated testing of software components to support software quality, maintainability, and regression testing.
Support integration and verification activities to ensure that developed or updated software components operate correctly within the wider NIRIS system.
Analyse, investigate, and resolve software defects, technical issues, and implementation gaps identified during development, testing, integration, or operational support activities.
Develop, update, and maintain software documentation, including technical documentation, design information, test-related documentation, and other project deliverables as required.
Contribute to virtual and in-person meetings, reviews, planning sessions, technical discussions, and coordination activities with NCIA stakeholders and project team members.
Ensure that all developed, updated, and maintained software components and associated deliverables comply with applicable NCIA development standards, quality requirements, configuration management practices, and agreed project procedures.
Update and expand the produced software components and documentation as necessary to accommodate new, revised, or emerging requirements throughout the duration of the engagement.
Requirements
At least 5 years of professional experience in software development, with a focus on full-stack systems.
Proven ability to communicate effectively in English, both orally and in writing, in a clear, structured, and professional manner.
Demonstrated experience in working within Agile/Scrum environments, including participation in sprint planning, execution, and review activities.
At least 3 years of professional experience in Java-based software development, including experience with modern frameworks and backend service development.
At least 2 years of experience working with web technologies, including TypeScript and/or Angular-based front-end development.
At least 2 years of experience working with software integration, including RESTful services, messaging systems, or data exchange interfaces.
At least 2 years of experience working with near real-time or data-intensive systems, including data processing, filtering, and dissemination.
At least 1 year of professional experience working with containerization technologies (e.g. Docker), including building, packaging, and deploying Linux-based containers.
At least 3 years of experience with DevOps and CI/CD practices, including use of tools such as GitLab, automated pipelines, and artifact repositories.
Demonstrable experience in software testing practices, including unit testing, integration testing, and, where applicable, automated testing.
Experience in defining acceptance criteria, test scenarios, or validation approaches for software deliverables.
Demonstrable knowledge or experience in interoperability and data exchange standards, particularly within defence or similar domains (knowledge of Tactical Data Links is highly desirable).
Experience working with distributed systems and multi-component architectures, including integration of multiple data sources.
Familiarity with secure software development practices and working within controlled or regulated environments.