The Ultra Engineering function manages a portfolio of specialist capabilities, generating highly differentiated solutions and products by applying electronic, mechanical, and software technologies in demanding and critical environments to meet customer needs. The Software Engineering function in Ultra supports the software development lifecycle consisting of requirements analysis, design, implementation, test and verification in order to deliver software components into projects and products and supports the deployment and maintenance of software components.
Scope
Provide technical leadership and define, architect, design, develop, document and test embedded and/or application software as part of a software engineering team of 5‑20 engineers, within the Cyber UK Business Unit, delivering multiple concurrent research, development and production programmes ranging from tens of £k to several £m. Line management of up to 5 software engineers.
Key Responsibilities
- Architect, specify requirements, design, implement and test embedded and/or application software in accordance with the project software development process to ensure high quality and timely software deliverables.
- Apply object‑oriented design techniques to enable code re‑use and integration with testing frameworks.
- Review and understand system design artefacts to enable the derivation of software requirements and architecture that meet the high‑level system requirements.
- Design, document, review and maintain the software design using modelling tools such as RSA and EA, ensuring the model can be used for accurate code generation as required.
- Develop and maintain knowledge of best practice development processes, language standards and tools, e.g. TDD/BDD, Continuous Integration, DevSecOps, static and run‑time analysis tools, C++ standards and secure software development.
- Estimate time and effort required for software activities and deliver to these time and effort estimates to ensure cost and schedule adherence.
- Contribute to the Software Community of Practice by proposing improvements in tools, processes and techniques that support quality and innovation and make the software development more efficient and effective.
- Actively contribute to and/or lead defined aspects of the project to achieve optimal balance between requirements, schedule and cost.
- Generate and review technical proposals, and provide accurate estimates for the associated effort, costs and risks, for bids and proposals, leading to contract awards.
- Mentor and coach less experienced engineers; share knowledge willingly and constructively.
- Review and sign off significant technical documents; frequently chair technical reviews for significant deliverables.
- May have between 0 and 4 direct reports.
- Explain technically complex concepts clearly to less technical/involved parties.
- Manage security of information as defined in the Security manual to ensure compliance with Government regulations.
- SFIA Programming / software development: Level 2‑4.
- SFIA Programming / software development: Level 5.
- Takes technical responsibility across all stages and iterations of software development.
- Plans and drives software construction activities.
- Adopts and adapts appropriate software development methods, tools and techniques.
- Measures and monitors applications of project/team standards for software construction, including software security.
- Contributes to the development of organisational policies, standards, and guidelines for software development.
Role Requirements
- Willing and able to obtain, and maintain, SC security clearance.
- Willing and able to obtain, and maintain, DV security clearance (following attainment of SC clearance).
- Degree in an engineering, mathematical or science‑based subject or equivalent experience.
- Significant experience of at least one of the following:
- Embedded product development (including bare‑metal and RTOSes such as ThreadX, QNX or Linux).
- Embedded Linux application, kernel and/or driver development.
- C and C++.
- Significant experience of best practice software development processes/lifecycles.
- Experience of Object‑Oriented Design and Design Patterns such as SOLID.
- Experience of software testing and design for test.
Desirable Skills
- Master's degree in an engineering, mathematical or science‑based subject or equivalent experience.
- Rust.
- Javascript, node.js, react.js.
- Communications protocols – e.g. TCP/IP.
- Experience of using version control, continuous integration and automated test tools and frameworks.
- Exposure to defensive coding techniques and standards such as MISRA.
- Advanced knowledge of software engineering practices, methodologies, processes, techniques and technology trends.
- Experience of DOORS, RSA, Enterprise Architect, UML and SysML.
Benefits
- Participation in an Annual Bonus Scheme.
- Private Medical Cover.
- 25 days' holiday (plus Bank Holidays) with the option to buy an extra 5 days.
- Pension Contribution.
- 4 × Life Assurance Cover.
- Flexible working hours with the opportunity for a 1 pm finish on a Friday.
- Flexible benefits including a cycle to work scheme, will writing and more.
- Security Clearance Allowance – where relevant and subject to you holding the required security clearance.