Principal Software Engineer
The Engineering software systems team are focused on developing embedded software for ECP and NO delivery medical devices. They are currently searching for a Principal Software Engineer to join their team. The ideal candidate is a senior software engineer or software architect with approximately 8-10 years experience developing safety-critical distributed software for controlling electromechanical devices or similar complex software.
- Acts as software architect for one or more projects, working closely with other senior members of the software team translating software requirements into robust, adaptable software designs.
- Generates software architecture documentation and reviews/approves detailed design produced by junior members of the team.
- Works with the various engineering disciplines to translate design requirements into well-formed software requirements using software tools for requirements management.
- Conceptualizes complete solutions. Creates or coordinates the design solutions for novel or complex problems; works with verification and validation to ensure conformance to established design development processes and procedures.
- Works with programme managers to help create project schedules. Leads and facilitates architectural and design decisions to ensure on-time delivery of projects. Escalates technical issues in a timely fashion to software systems manager.
- Interacts closely with the software development team either on-site or remote and maximizes resource use in conjunction with SCRUM master.
- Provides mentoring in software development to other members of team; monitors the improvement of other software engineer(s), e.g. delegates challenging tasks to others to help them develop; provides constructive and timely feedback.
- Explores multiple alternatives. Structures studies and integrates cross-disciplinary (Software, Electrical, Mechanical) and cross-functional issues to arrive at a solution, e.g., investigates process to meet increasing regulatory requirements while maintaining serviceability & manufacturability.
Education / Experience / Skills:
- A Bachelor Degree in engineering, science, or closely related discipline is desired, or equivalent technical experience plus demonstrated competence, with a desired 8+ years of significant engineering and/or operational experience. Additional postgraduate education may contribute towards the desired years of experience.
- Detailed understanding of multiple programming languages (assembler/C/C++11/Java/.NET) to develop and evolve software systems optimally.
- Wide breadth and deep understanding of development of medical device software.
- Detailed understanding of medical software development standard (IEC 62304).
- Team leading software development using ALM tools (SysML, UML, JIRA, SCRUM, JAMA, STASH, Enterprise Architect, SciTools Understand).
- Detailed understanding of coding standards (MISRA-C, MISRA-C++, JSF C++).
- FDA 510K Submission preparation and experience.
- Ability to translate requirements into optimal designs.
- Detailed knowledge of Static and Dynamic system modelling (use cases, activity diagrams, finite state machines, sequence diagrams, class/object diagrams, component diagrams, timing diagrams, deployment diagrams).
- Safety critical algorithms and programming (watchdog, voting pattern, dual redundancy)
- Advanced understanding of data structures
- Advanced understanding of agile software development techniques such as Extreme Programming, SCRUM, and Test Driven Development.
- Microcontroller knowledge iMX6, iMX8, PIC Controllers, NXP LPC54102, NXP LPC54618.
- Real-time operating system experience such as QNX, SafeRTOS, Linux.
- Wifi/BLE/Cellular 5G knowledge
- QT/ Safe Renderer development experience
- VectorCast ATG/Unit testing