Key Responsibilities
- Working closely with the Software Architect and senior engineers to refine and implement scalable software architecture
- Developing key software components, ensuring maintainability and performance, and contributing to architectural reviews
- Taking ownership of software modules, driving development from concept to deployment
- Adding features to existing and new code bases, using C in embedded Linux environments
- Collaborating with test engineers to define verification strategies and ensure thorough test coverage
- Analysing complex test results and implementing corrective actions with minimal supervision
- Working with hardware designers on software-hardware integration, interpreting hardware schematics and managing communication protocols (I2C, UART, SPI, USB)
- Troubleshooting and resolving hardware-software interaction issues efficiently
- Working with cross-functional teams, including production, to diagnose and resolve software issues
- Producing project artefacts and product design documentation to meet the software development process, regulatory compliance and organisational requirements
The ideal candidate would have
- Familiarity with Git for source code management and collaboration
- Experience with continuous integration tools and scripting languages to automate tasks and improve development workflows
- Understanding of networking protocols and security mechanisms, including data storage and preventing vulnerabilities
The ideal candidate must have
- A degree in Computer Science, Electronics or a related field (or equivalent experience)
- 3+ years of C programming experience in an embedded environment, with familiarity with ARM microcontrollers, coding standards and best practices
- 3+ years of Linux-based systems development, including some experience of the Linux boot process, DTB and kernel drivers
- Ability to write user space applications using POSIX APIs, integrate open-source libraries into existing programs and use development tools for system administration and debugging
- 3+ years of experience working with hardware protocols (I2C, UART, SPI, USB) and the ability to read simple hardware schematics
- Knowledge of Yocto, with the ability to modify it to support new platform designs and versions
- Clear verbal and written communication, especially when discussing technical issues or documenting findings
- An analytical, methodical approach with strong attention to detail, and a proactive attitude to learning and contributing to team goals
IR35 Status:
Not specified
Remote Status:
Not specified
Seniority Level:
Mid-Level