
Principal Software Engineer
- Maidenhead, Berkshire
- Permanent
- Full-time
A professional at this grade applies technical / professional knowledge, making independent judgements based on practice and significant previous experience to support decision making. Often seen as a referral point or more senior team member to escalate more complex problems. Roles will act independently with minimal guidance, and may act as project managers/formal mentors for junior staff.ScopeProvide 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.Responsible for / 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 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.
- Mentors and coaches less experienced engineers; shares knowledge willingly and constructively.
- Reviews and signs off significant technical documents; frequently chairs technical reviews for significant deliverables.
- May have between 0 and 4 direct reports.
- Explains 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.
- 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).
- Essential:
- 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:
- 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
- Annual Bonus
- Private Medical Cover
- 25 days’ holiday with the option to buy an extra 5
- Pension Contribution
- 4 x Life Assurance Cover
- Flexible working hours with a 1pm finish on a Friday
- Flexible benefits including cycle to work scheme, will writing and more
- Monthly Security Clearance Allowance - Subject to you holding the required security clearance