Senior Software Engineer, Surrey. The purpose of the Senior Software Engineer is to create, maintain and release high quality software to schedule and lead a small Team in accordance with Company standards. Responsibilities The purpose of the Senior Software Engineer is the design, coding, debugging, testing and maintenance of software for embedded applications encompassing both low-level microprocessor code as well as higher level software designs running within an embedded operating system environment This will be undertaken alongside other technical activities while working with hardware and software engineers to deliver specific project goals derived from future product requirements Responsibilities will include the development and implementation of application logic, peripheral drivers, protocols, human-machine interfaces and documentation of the same A key element of the role will be the delivery of software within agreed timescales and to budget The right candidate will be capable of designing and delivering robust code. Demonstration of competence in using C is essential as is embedded programming experience of both low level and high level code The candidate will be responsible for leading a small team. Competencies: Experience of developing software through entire lifecycle. Ability to work independently without need for close supervision. Ability to analyse process or tools to propose improvements where applicable. Qualifications & Experience: Essential: Team working ability and drive to deliver on time C experience in an embedded environment Experience of embedded processors and real-time operating systems Experience of interfacing with hardware devices and peripherals Solid understanding of software development life-cycles and processes Experience of requirement analysis, software design and software architecture Experience with source control tools such as SubVersion and Git Behavioural: self-starting, adaptable, problem solving Degree. Desirable: C++ experience in an embedded environment Object Oriented Design and Programming experience Familiarity with desktop application, GUI/event-based design Knowledge of issue-tracking tools, such as Jira. Knowledge of releasing software to Production