The purpose of the senior Software Engineer is to create, maintain and release high quality software to schedule, in accordance with Company standards.
Key Responsibilities:
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.
Work alongside other technical activities with hardware and software engineers to deliver specific project goals derived from future product requirements.
Development and implementation of application logic, peripheral drivers, protocols, human-machine interfaces and documentation of the same.
Delivery of software within agreed timescales and to budget.
Design and deliver robust code.
Demonstration of competence in using C is essential as is embedded programming experience of both low level and high level code.
Outline of 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 and Experience required:
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.
C++ experience in an embedded environment.
Object Oriented Design and Programming experience.
Familiarity with desktop application, GUI/event-based design.