Under minimal supervision, performs software development activities including software requirements, architecture, design, implementation, and integration.
- Software architecture and design
- Requirements gathering, and creation and maintaining of software specifications
- Design and development of operating software for medical devices with special focus on process control and fluidic operations, algorithms and sequences, pattern detection and recognition, and image processing.
- Software maintenance support for existing products
- Development and maintenance of specialized real-time software written in proprietary scripting programming language
- Collaborate with Analytical, Systems and EE teams to create complete and cohesive solutions
- Agile software development
Budget managed (if applicable) N/A
Internal Networking/Key relationships
- To be determined based on department needs
Skills & Capabilities:
- Knowledge and experience in spectroscopy, camera systems, chemistry, electrochemistry, fluidic process, and scientific algorithms and applications is highly desirable.
- Experience in software architecture, design and development for embedded systems is highly desirable
- Expertise in software engineering methodologies such as object-oriented design, software patterns, and functional programming.
- Strong in C++ programming language and STL, and Object Oriented Design
- Deep knowledge of Python and its ecosystem, including writing and/or leveraging C extensions and Cython/Boost to solve performance bottlenecks
- Strong math skills, including experience with off-the-shelf packages such as NumPy and SciPy.
- Software architecture, design, and development experience with real-time multi-process/threaded applications
- Working experience with design control processes, design control tools, and software build systems and configuration management tools
- Working experience with writing software specifications from requirements to functional and design specifications, including UML diagrams
- Proficient in software development under/for Linux Operating Systems
- Good understanding of the computer hardware
- Very good verbal and written technical communication and presentation skills
Minimum knowledge & Experience required for the position:
- Bachelor’s Degree plus a minimum 8 years of related experience or Master’s Degree plus a minimum 4 years of related experience or waiver based on experience. Degree should be in a technical discipline such as Chemistry, Math, Physics, Engineering, or Computer Science
- Degree should be in a technical discipline such as Chemistry, Math, Physics, Engineering, or Computer Science Proficiency with a personal computer and software packages.
- Proficient in computer codes (Assembly, C, C++, Java, C#, etc.) found in the development.
International Mobility: Required: no
- <5% of time