Under minimal supervision, performs software development activities including software requirements, architecture, design, implementation, integration.
- Participates as an active member on a development team. This includes participating in requirements review, design reviews, code reviews, test case reviews, and team meetings.
- Participates as an active member on a project development team. This includes requirements change control, defect management, risk analysis, and release management.
- Creates/Maintains software requirement/functional specifications.
- Creates/Maintains software architecture documentation.
- Creates/Maintains software (component) design documentation.
- Creates/Maintains software source code that adheres to design documentation.
- Performs unit testing and/or code reviews as per project policy.
- Performs integration testing to ensure software functions with application and with electrical/mechanical devices.
- Evaluates, investigates, and implements fixes to assigned software defects.
- Evaluates, investigates, and implements assigned software change proposals.
- Provides level of effort for assigned software activities.
- Tracks personal estimates over time in order to improve accuracy.
- Follows project and corporate plans, standards, and procedures to perform development.
- Performs other related duties as assigned
Skills & Capabilities:
- Strong C++ programming language and STL, Object Oriented Design, and Software Design patterns
- Strong in Python and Python ecosystem, including Numpy and Spicy
- Software design, and development experience with real-time multi-process/threaded applications
- Software development experience under/for Linux and Windows Operating Systems
- Working experience with embedded software systems
- Written and Oral Communications
- Ability to Follow Plans
- Detail-Oriented Ability to administer engineering tools; configuration, requirements, and defect management.
- Ability to operate instrumentation and to handle many software components
Minimum Knowledge & Experience Required:
- 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
- Proficiency with a personal computer and software packages.
- Proficient in computer codes (Assembly, C, C++, Java, C#, etc.) found in the development.