This role is for a Senior or Lead Embedded Software Engineer to work as part of the product development team responsible for the design, development and test of software for our laser systems. We are looking for a professional Embedded Software Engineer who is capable of contributing to the long-term development of our scalable system platform in addition to the full lifecycle development of individual laser products. This is a great opportunity to work on a broad range of technologies spanning real-time operating systems, embedded computing modules and automated software testing. Responsibilities will include: Software related project management Develop reliable and clean C code, to be used in high-quality laser systems and computing modules. Maintain and expand existing libraries with a view to rapid deployment. Produce technical documentation as required. Planning and estimation of development tasks. Coordinate the integration of software with hardware and optics. Support legacy software on existing products. Essential Skills Demonstrable software engineering experience, preferably in an industrial environment. Strong C programming skills and knowledge of using an Object Orientated style approach in the development of C code. Ability to develop scalable systems modules and low-level drivers and integrate them into a large code base. Strong experience in Real-Time Operating Systems, pre-emptive multitasking and event-driven programming. Experience in low-level Microcontroller interfaces, including UART, Ethernet, CAN Bus, I2C, SPI, ADC and DAC. Ability to read electronic schematic diagrams and component datasheets. Hands-on experience in embedded software and hardware integration, verification and testing. Debugging firmware at the board level on prototypes is essential. Programming skills in either Linux or Windows CE Use of Version Control Systems and build tools (e.g. Git, Azure DevOps and Jenkins). Ability to respond to technical inquiries from other departments and customers in a clear, accurate, and professional manner (both written and in person). Able to work in a team environment Lead and Mentor junior team members Graduate in Computer Science, Electronic Engineering or another relevant degree. Preferred Additional Skills Closed-loop drive control methods and techniques for industrial applications. Familiarity with ARM Cortex-M processor architecture, CMSIS and associated tools. Experience with Toradex based embedded computing modules Test-driven development (TDD) experience Python programming language for test scripting C# and Visual Studio/ Visual Studio Code Knowledge of the New Product Introduction (NPI) process and elements of project planning Programming knowledge of FPGAs using Verilog. Experience in the software development cycle for medical devices