Software Engineer, Surrey.
The purpose of the 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 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