Description:
Consultant Embedded Software Engineer with at least 10 years’ practical design experience. Full-time, working at our HQ in Oakington, Cambridge.
Core Skills
In this role, you’ll get to work on all stages of the design process, from initial feasibility to supporting new product introduction. You should be able to demonstrate experience in all the following areas:
- Experience in the complete software development lifecycle, from requirements capture through design, implementation and validation to software release for production
- Translation of requirements into a coherent system design
- C/C++ software design and development in an embedded environment
- Working with real-time operating systems (e.g. FreeRTOS, Zephyr)
- Scripting languages (e.g. Python, node.js)
- Development and debugging with prototype hardware and evaluation kits
- Good appreciation of hardware (e.g. MCUs, memory, sensors, modems, etc.)
- Agile/Scrum development methodologies
- Use of bug-tracking systems
Technical Experience
You should be able to show past track record in at least four of the following areas:
- Device drivers (I2C, SPI, USB) and hardware control (GPIO, UARTs, DMA)
- Embedded TCP/IP networking
- Wireless technologies (e.g. Bluetooth LE, WiFi, etc.)
- Communications protocol design
- Interfacing to cloud systems (e.g. Azure, AWS, Google)
- Database programming
- System security/encryption techniques.
- Continuous Integration/Continuous Deployment setup and use
Experience in any of these areas will be an advantage:
- Embedded control and monitoring solutions
- Wearable electronics
- Connected ‘Internet of Things’ products
- Location based systems
- Web based technologies
About you
Our strength lies with our people. We appreciate great technical skills and also value your interpersonal skills. You need to be:
- A team player
- Enthusiastic about solving often tricky engineering challenges
- Empathetic towards the challenges facing our customers
- Able to lead a team, providing technical guidance and justification for architectural decisions
- Meticulous in the way you write and document your code
- Competent at time management