Job Description
Remote is seeking multiple Software Engineers to join the team in ASD. The embedded Software Engineers will have experience overseeing software development projects, writing optimised code, and provide technical leadership to a team of engineers. They are responsible for the quality and functionality of the software produced by their team.
Role Description
Job Duties and Responsibilities may include:
- Design, develop, integrate and maintain complex software/firmware for embedded systems using a variety of software languages (e.g. C/C++, Python, Bash), frameworks and platforms, to achieve a well-engineered result. This includes Linux software packages, Embedded Linux operating systems and microcontroller RTOS’s.
- Translate logical designs into physical designs and integrate software employing an Agile Software Development Methodology.
- Monitor and maintain systems and infrastructure, and provide assistance to troubleshoot and resolve issues.
- Develop and execute unit, integration and system tests.
- Implement and maintain continuous integration systems and processes, involving automated build and test pipelines with hardware-in-the-loop).
- Utilise electronic testing equipment such as oscilloscopes, logic analysers and spectrum analysers for complex fault finding and debugging of embedded platforms.
- Assist in the development of technical procedures and documentation, including detailed design documentation, in accordance with ASD policies and procedures.
- Effectively prioritise, allocate tasks, participate in and contribute to design reviews, stakeholder meetings and agile processes. Conduct reviews of other team members’ work.
- Work as a member of an integrated team comprising technical and non-technical personnel. Provide guidance and assist other team members where required.
Technical Skills:
Candidates are required to have one/more of the following:
- Demonstrated experience developing firmware with languages/frameworks/platforms for ARM-based processors, including C/C++, Python, Bash, and microcontroller-based RTOS’s.
- Demonstrated experience developing, integrating and maintaining Embedded Linux operating systems, with a strong working knowledge of the Linux kernel internals, common distributions, and build automation tools.
- Demonstrated experience developing, integrating and making use of GitLab CI, Ansible and Docker automation tools.
- Experience using electronic test equipment (such as oscilloscopes, logic analysers, spectrum analysers) for complex fault finding and debugging of embedded platforms.
Essential criteria
- PROG 4 - Programming/software development: Level 4 (SFIA) Designs, codes, verifies, tests, documents, amends and refactors complex programs/scripts and integration software services. Contributes to the selection of the software development methods, tools and techniques. Applies agreed standards and tools to achieve well-engineered outcomes. Participates in reviews of own work and leads reviews of colleagues' work.
- SINT 4 - Systems integration and build: Level 4 (SFIA) Provides technical expertise to enable the configuration of system components and equipment for systems testing. Collaborates with technical teams to develop and agree system integration plans and report on progress. Defines complex/new integration builds. Ensures that integration test environments are correctly configured. Designs, performs and reports results of tests of the integration build. Identifies and documents system integration components for recording in the configuration management system. Recommends and implements improvements to processes and tools.
- RESD 4 - Real-time/embedded systems development: Level 4 (SFIA) Designs, builds and integrates complex real-time/embedded components and sub-systems. Designs physical layouts that reflect the connection between system components to test and optimise performance. Builds system prototypes and simulations to aid development and enable debugging, testing and troubleshooting of embedded software. Applies a range of approaches to the validation, verification and testing of real-time components and sub-systems. Is fully familiar with a range of specialist tools.
- TEST 3 - Testing: Level 3 (SFIA) Designs test cases and test scripts under own direction, mapping back to pre-determined criteria, recording and reporting test outcomes. Participates in requirement, design and specification reviews, and uses this information to design test plans and test conditions. Applies agreed standards to specify and perform manual and automated testing. Automates testing tasks and builds test coverage through existing or new infrastructure. Analyses and reports on test activities, results, issues and risks.