Be the Embedded Software Engineer
The Embedded Software Engineer will work with the design and manufacturing groups to develop robust, sustainable products that meet customer expectations and are cost effective to manufacture.
Duties and responsibilities:
- Perform software design based on input from clinical users, characteristics of the existing software base, consultation with other engineering staff, and system functional requirements
- Perform software implementation, following coding guidelines and taking into account system characteristics to produce optimal performance, reliability, and maintainability
- Conduct software evaluation and testing of own software, software from other engineering staff, and third-party software
- Provide a test plan for use by other engineering staff, quality assurance and support departments in validating a new implementation
- Provide technical documentation for the design, implementation and testing of the software
- Attend design review meetings as needed to adhere to the software development procedures
- Document and repair errors related to fielded software issues
- Assist the engineering staff in clarifying requests for software changes and understand reported problems
- Strong C/C++ skills and software design for multi-threading and multi-processor application.
- Knowledge in .NET C#, Compact Framework, ASP.NET. is a huge advantage
- Strong Object Oriented design skills, especially the State Machine and event driven design.
- Strong knowledge in the embedded User Interface design and display device control such as LCD.
- Strong knowledge in hardware-software interface and network communication using sockets.
- Strong knowledge in Hard Real Time Control and inter-processor communication.
- Strong knowledge of one or more of the Operating Systems and concepts, such as WinCE, Linux, cooperative OS (CoRoutines), etc.
- Familiar with the microcontrollers and microprocessors such as ARM Application and Cortex architecture.
- Experience with developing unit tests, test automation, and familiarity with UT frameworks (ex. CPPUnit, LDRA, Coverity, Parasoft)
- Ability to plan and organise
- Ability to work with little supervision and under pressure
- Excellent interpersonal communication skills
- Experience of working in a collaborative engineering environment
- Excellent analytical and report writing skills
- Minimum Bachelor’s degree in Science or Engineering. For example: Computer Science, Physics, Electrical Engineering, Biomedical Engineering, Cognitive Science or Mathematics.
Additional Skills and Qualifications:
- Knowing one or more of the Development IDEs such as IAR, Keil, Eclipse, and/or Visual Studio
- Knowledge in JTAG debugging and error handling.
- Knowledge in Wi-Fi connectivity and security
- Knowing Python, Build Utilities, code analysis tools is plus
- Knowing Quantum State Machine, ThreadX, SMX is plus.
- Knowing XSLT, XML, HTTML, is plus
- Familiar with Configuration Management and Issue Tracking systems
- Efficient worker who leverages the latest technology and tools to improve productivity
- Design for Six Sigma knowledge would be highly advantageous
- Customer focused
- Knowledge of international standards applicable to medical devices / risk management including ISO 60601-1, ISO 14971.
- Familiarity with Agile / Scrum methodologies is desired.
- Knowledge of software life cycle processes including IEC 62304
- Experience with data acquisition, analysis, and statistical methods.
- Experience in design verification of Medical Device in a FDA-regulated environment is preferred.
- Experience over the full product life cycle is desired