Principal Embedded SW Engineer
Principal Software Engineer
Responsibilities of Principal Software Engineer
Lead Software team to architect, design and implement platform software:
• Ensure that the software requirement and architecture are adequate for software engineers to implement their software.
• Ensure that the design is robust, meets requirements and architecture and documentation is complete and accurate.
• Ensure that the code is robust, complete, meets design, is properly unit tested and conforms to the coding standard.
• Ensure that the developers are appropriately contributing to the Software Risk management efforts.
• Facilitate technical discussions amongst the software team(s) and ensure that decisions are made in a timely manner and documented.
• Mentor software engineers on software development in a medical environment.
Requirements of Principal Software Engineer :
• A minimum of BSc. in Computer Science, Computer Engineering or equivalent. MSc. in Computer Science or Computer Engineering strongly preferred.
• Minimum of 7-10 years of software development experience, from concept to production.
• Expert knowledge in software analysis/architecture, technical requirements, and design & development.
• Practical programming experience developing software for a commercial product, ideally involving significant capital and medical equipment.
• Experience leading a software team to design and develop sophisticated software. Experience working with other technical leads in a complex environment with multiple concurrent projects is a strong plus.
• Hands-on Experience with FDA regulated (62304) Software Development required. Expert knowledge of FDA regulations strongly preferred. Track record with multiple deployment platforms, from high-end microprocessors running full-featured operating systems, down to bare-metal embedded code deployed on lightweight microcontrollers
• Expert knowledge of distributed systems, interprocessor/interconnect schemes and protocols, and network programming (IP, TCP, UDP, etc).
• Expert-level knowledge of one or more real time operating systems (multiple is a plus) and operating system features in general. We are using QNX and Linux
• Experience implementing such systems is a strong plus.
• Hands-on knowledge of C++ is required. Must be well-versed in object-oriented design.
• GUI Experience is a plus (particularly with QT)
• Controls and/or robotic systems a strong plus