Logo
INOVIO Pharmaceuticals, Inc.

Senior Software Engineer (Temporary to Hire)

INOVIO Pharmaceuticals, Inc., San Diego, California, United States, 92189

Save Job

Senior Software Engineer (Temporary to Hire) Join to apply for the Senior Software Engineer (Temporary to Hire) role at INOVIO Pharmaceuticals, Inc.

Base pay range: $111,946.00/yr - $155,721.00/yr

Job Summary The Temporary Senior Software Engineer develops and enhances Electroporation Device firmware and associated tools. This role involves designing, developing, and implementing automation systems to boost efficiency, productivity, and quality in manufacturing operations. Key responsibilities include preparing and updating requirements, software designs, test plans, and risk analyses, as well as providing ongoing product support. The ideal candidate will have expertise in embedded firmware development, strong proficiency in C/C++, experience with real-time operating systems (RTOS), and skill in developing PC-based applications using C#. They should also possess experience in embedded software and hardware, debugging techniques, and customer support, ensuring seamless operation and quick resolution of technical issues.

Essential job functions and duties

Design and develop embedded software for "bare metal" and real-time operating systems across multiple boards and MCUs.

Design and develop board bring-up code, device driver code, boot loaders, firmware update software, software for interfacing with sensors and peripherals, and application software.

Design, document, code, test, and debug embedded device controllers for Electroporation Devices.

Design and develop PC-based applications to support diagnostics, device testing, production testing, and manufacturing automation.

Conduct unit testing, integration testing, system debugging, and code reviews to ensure software reliability.

Diagnose and troubleshoot hardware and software issues in real-time field environments.

Integrate software components, third-party libraries, and APIs into existing or new systems.

Perform software validation, functional testing, and system-level debugging to ensure compatibility across environments.

Ensure compliance with safety regulations, industry standards, and company policies.

Optimize code for performance, power efficiency, and memory utilization.

Support project planning efforts, including task definition and work effort.

Collaborate with electrical, mechanical, and quality engineers to ensure seamless integration.

Analyze, resolve, and track defects and improvements to closure.

Develop and improve software development processes and procedures.

Support product deployment and configuration, ensuring compliance with technical requirements.

Utilize version control systems (Git, SVN) and CI/CD pipelines for software development.

Assist production teams in resolving technical issues and improving system efficiency.

Provide engineering support for other departments as needed.

Perform additional engineering duties as assigned.

Bachelor’s degree in Engineering or Computer Science.

3+ years of experience in embedded systems development with C++ skills, multi-threading, multi-processor interfacing, and hardware-software integration.

Experience working with microcontrollers (Cortex M based) running both RTOS (e.g., RTX, ThreadX, FreeRTOS, Micrium OS) and bare-metal software.

Experience in board bringing up and developing device drivers for bus interfaces and peripherals: SPI, I2C, UART, ADC, DAC, I2S, USB, LCD.

Hands-on Experience with low-level programming, embedded UI development, hardware-software integration, and debugging tools (JTAG, GDB, logic analyzers, other test equipment, oscilloscopes).

2+ years of experience in PC-based application development using C# and database interfaces.

Familiarity with setting up various toolchains, building systems, and debugging environments.

Experience with software engineering processes and tools, including Git-based configuration management and issue-tracking systems.

Proficiency in software development processes with the ability to read circuit designs, electrical schematics, and datasheets.

Strong problem-solving skills and debugging skills, attention to detail, and the ability to work effectively both independently and collaboratively.

Strong communication and interpersonal skills.

A Positive attitude and strong team player mindset.

Qualifications

Bachelor’s degree in Engineering or Computer Science.

3+ years of experience in embedded systems development with C++ skills, multi-threading, multi-processor interfacing, and hardware-software integration.

Experience working with microcontrollers (Cortex M based) running both RTOS (e.g., RTX, ThreadX, FreeRTOS, Micrium OS) and bare-metal software.

Experience in board bringing up and developing device drivers for bus interfaces and peripherals: SPI, I2C, UART, ADC, DAC, I2S, USB, LCD.

Hands-on Experience with low-level programming, embedded UI development, hardware-software integration, and debugging tools (JTAG, GDB, logic analyzers, other test equipment, oscilloscopes).

2+ years of experience in PC-based application development using C# and database interfaces.

Familiarity with setting up various toolchains, building systems, and debugging environments.

Experience with software engineering processes and tools, including Git-based configuration management and issue-tracking systems.

Proficiency in software development processes with the ability to read circuit designs, electrical schematics, and datasheets.

Strong problem-solving skills and debugging skills, attention to detail, and the ability to work effectively both independently and collaboratively.

Strong communication and interpersonal skills.

A Positive attitude and strong team player mindset.

#J-18808-Ljbffr