POSITION SUMMARY:
Analyzes, designs, develops, and debugs software applications running in a variety of systems, hardware, and products. Interfaces with clients to assist in the gathering and documenting of software requirements, and develops software based on the derived requirements and use cases. Develops rapid prototype software and firmware in order to control and evaluate electrical and mechanical prototype builds. Performs root-cause failure analysis; debugs and enhances existing software and firmware applications. Supports personnel in preparation for product verification, field testing, and new product transition to manufacturing.
ESSENTIAL FUNCTIONS (Primary Responsibilities):
These may include, but are not limited to:
· Integrates technical requirements within program constraints to create high quality software/firmware solutions.
· Interfaces and coordinates with other engineering disciplines – EE, ME, Systems.
· Develops system architectures and architectural roadmaps.
· Develops software requirements.
- Gathers, defines, and documents product and user interface requirements and objectives.
- Performs feasibility studies.
- Performs design reviews in accordance with project and company standards.
- Investigates and evaluates appropriate software technologies, both open source and private domain, to achieve product objectives.
- Deploys appropriate software development methods and techniques starting with the analysis of requirements and the creation of SRS, creating architecture and design followed by technical execution of writing, reviewing, verifying, and validating software.
- Develops rapid prototype software and firmware to test representative prototypes.
- Develops highly reliable software and firmware that is suitable for production by employing design reviews, code reviews, pair programming, product verification and validation.
- Creates reliable, elegant system architecture and designs. Solves complex problems in a manner that meets program needs (technical, schedule, budget, reliability, etc.)
- Assists in developing production test and validation requirements.
- Assists in the transition of product designs from R&D into Manufacturing.
- Works with the client to develop and verify software and firmware updates for delivery to production and the installed base.
- Outlines and generates high quality technical status updates and reports suitable for client.
- Coordinates and leads internal and client-facing technical meetings.
- Mentors other software engineers.
- Performs other duties as assigned.
The functions/responsibilities outlined in this Job Description have an impact to the QMS and product quality.
EDUCATION, EXPERIENCE, SKILLS AND ABILITIES REQUIRED:
Experience, Knowledge, Job Complexity, Supervision:
Essential Knowledge, Skills & Abilities:
- Experience developing SW for medical, diagnostic, and/or pharmaceutical applications (IEC 62304, GAMP5).
- Excellent interpersonal skills for collaboration and teamwork (internally and with clients).
- Excellent communication and presentation skills (written and oral).
- Strong understanding of the requirements capture, analysis, and documentation processes with subsequent architecture development. Has demonstrated ability to drive each step to appropriate closure while observing critical technical, program, and business constraints.
- Strong understanding of all software development process methods (i.e. Waterfall, Agile, Extreme, Code reviews, Reuse/Leverage, unit test). Has demonstrated ability to adapt such methods to the needs of each project to yield most effective and optimal results.
- Excellent grasp of basic and advanced software development, coding principles, depth and/or breadth in languages, with outstanding productivity in critical languages and development effectiveness (as measured by metrics such as defects, escapes, and unit test coverage etc).
- Clear command of how to connect software to proper verification methods such as unit testing, ad-hoc, system testing, static analysis, and determining the appropriate levels of regression testing.
- Strong Knowledge and effective application of a diverse set of software technologies such as but not limited to: OOD – Object Oriented Design; C, C++; Communication / connectivity protocols – USB, TCP/IP, Wireless; RTOS, Embedded Linux; Open Source tools.
- Knowledge of Qt or other embedded UI frameworks; Use of MVVM patterns for UI software development to separate UI logic from business logic.
- Familiarity with C#, Python, Java; .NET, WPF; Web technology.
· Knowledge and use of a variety of Software Tools such as IDEs (e.g. Visual Studio and STM32CubeIDE), build platforms, and debug methods. Technically strong enough to pick up a variety of tools and rapidly become an effective developer in any new area.
· Excellent grasp of purpose, use, and deployment of configuration management as it relates to the development and release of production software as well as the role and purpose of configuration management in an R&D environment.
· Ability to mentor other software engineers.
· Excellent attention to detail.
BASIC OFFICE SKILLS:
Equipment: PC, scanners, facsimile machine, voice mail and e-mail systems, and common office machines or ability to be trained.
Software Knowledge: Windows, MS Office (Word, Excel, Access, PowerPoint)
EFFORT REQUIRED:
Physical Activities: On a continuous basis, sit at desk for a long period of time; write or use a keyboard to communicate through written and oral means. Intermittently answer telephone. Some walking and lifting up to 20 lbs. may be required. The noise level in the work environment is usually moderate. The physical demands described above are representative of those that must be met by an employee to successfully perform the essential functions of this job. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions.
TRAVEL:
This position may require some travel (domestic and international).