The Senior Software Engineer supports software sustainment of existing products and software design for new projects. Projects may range from proof-of-concept prototyping to full production products and are primarily government-contracted programs, including applications involving lithium-based battery systems.
This position is responsible for developing embedded software for Battery Management Systems (BMS), including analysis and development of software and system requirements, design and coding, and final validation of completed software solutions. The Senior Software Engineer will also assist the hardware design team with electronics development and testing, support the development of test procedures and tools, and interface directly with customers to support delivered products.
This position requires the ability to read and follow instructions from manuals and established procedures and operates in a temperature-controlled environment.
Essential Functions:
- Read and comprehend instructions and follow established procedures.
- Design and code embedded software for various battery management systems.
- Develop and maintain software requirements, design, and validation documentation.
- Develop testing procedures to support BMS electronics testing and battery pack end-of-line (EOL) testing.
- Support PC-based tools (e.g., Visual Studio, LabVIEW) used to service and test battery packs.
- Interface with Hardware and Systems teams in the development of new battery systems.
- Support customer products in the field by developing software solutions, including CAN software updates and resolving software issues.
- Assist in end-of-line (EOL) testing of battery packs to ensure proper performance prior to shipment.
- Perform work in a manner that prevents errors and omissions.
- Provide advisory support and assistance to the department manager as needed.
- Meet team targets and key performance indicators (KPIs).
- Participate in activities that support the management functions of the team.
- Follow all safety guidelines and operate in a safe manner.
- Maintain physical presence on the job, including weekends and holidays as required.
- Perform other duties as assigned by management.
- Ensure compliance with OSHA and company safety requirements - Refer to department specific competency matrix
Management Responsibilities: None
Minimum (Required) Qualifications:
Education and Experience
- Bachelor’s degree in Electrical Engineering, Computer Science, or Computer Engineering.
- Minimum of 7 years of software engineering experience, with a focus on embedded control systems using C/C++.
- Minimum of 2 years of experience working with battery systems.
Knowledge, Skills, and Abilities
- Familiarity with lithium-ion battery protection schemes.
- Familiarity with personnel protection systems and safety systems.
- Familiarity with OCV, SOC, and SOH calculation methods.
- Experience with low- and high-level driver development for 16- and 32-bit microprocessors.
- Proficiency in reading schematics.
- Experience with real-time operating systems (RTOS).
- Demonstrated ability to develop software algorithms for complex control systems.
- Experience developing software requirements, design, and validation documentation.
- Experience with product lifecycle management (PLM) and version control systems.
- Experience with CAN-based communication tools; experience with Vector tools is a plus.
- Knowledge of Ethernet, J1939, and UDS protocols.
- Familiarity with MISRA-C is a plus.
- Familiarity with SVN is a plus.
- Experience with MATLAB/Simulink is a plus.
- Experience with lithium-ion battery products.
- Experience using CANalyzer.
Disclaimer:
This job description is not designed to cover or contain a comprehensive listing of activities, duties or responsibilities that are required of the employee for this job. Duties, responsibilities and activities may change at any time with or without notice.