Embedded Software Developer C++The main function of this position is to apply the principles of computer science and mathematical analysis to the design, development, testing, and evaluation of the embedded software and systems that make computers work. A typical embedded software engineer researches, designs, develops and tests operating systems-level software, compilers, and network distribution software for medical, industrial, military, communications, aerospace, business, scientific and general computing applications.
Responsibilities- Design, develop, and implement embedded software solutions in C++ for embedded devices and systems, supporting the full product lifecycle from requirements definition through production deployment and ongoing product support.
- Develop and maintain firmware and software architectures for real-time embedded applications, ensuring compliance with performance, reliability, and quality requirements.
- Analyze, debug, and optimize software performance to improve system efficiency, stability, scalability, and resource utilization across embedded platforms.
- Collaborate with cross-functional engineering teams to define software requirements, develop technical specifications, and integrate software with hardware components and communication interfaces.
- Design, implement, and maintain logical and physical database structures, data management solutions, and associated software interfaces to support application functionality and system performance.
- Perform software verification, validation, troubleshooting, and root-cause analysis to identify and resolve defects throughout the development process.
- Create and maintain technical documentation, including software design descriptions, test procedures, interface specifications, and user documentation.
- Evaluate project requirements, assess technical feasibility, and provide development effort, timeline, and cost estimates to support project planning and execution.
- Participate in code reviews and continuous improvement initiatives to ensure adherence to software development best practices, coding standards, and quality processes.
- Support product launch activities and provide ongoing enhancements, maintenance, and technical support for commercialized embedded software products.
Requirements- BS in Software, Computer, Electrical, or other relevant Engineering degree.
- Experience with C or C++ development.
- Strong verbal and written communication skills.
- Self-motivated, quick learner, with an any-problem-can-be-solved attitude.
- Good organizational and time management skills.
- Ability to identify needed actions and act to resolve issues.
- Ability to communicate technical information effectively.
- Ability to thrive in a team environment.
- Must have a valid Driver's License.
Desired Attributes- Strong verbal and written communication skills with the ability to effectively collaborate across engineering, manufacturing, and cross-functional teams.
- Proven analytical, troubleshooting, and problem-solving abilities with a customer-focused approach to identifying and resolving technical issues.
- Ability to read and interpret electrical schematics, circuit diagrams, component datasheets, and hardware interface documentation.
- Understanding of the complete Software Development Lifecycle (SDLC), including requirements gathering, system analysis, software design, development, testing, deployment, and maintenance.
- Experience debugging embedded software and hardware issues, performing root-cause analysis, and implementing corrective actions to improve system reliability.
- Knowledge of computer hardware architectures, microcontrollers, embedded systems, real-time operating systems (RTOS), and peripheral interfaces.
- Strong programming experience in C and/or C++, including object-oriented design principles, data structures, memory management, and embedded software development best practices.
- Familiarity with embedded development tools, IDEs, debuggers, version control systems (Git), and software configuration management processes.
- Experience developing, maintaining, or interacting with databases and software applications utilizing technologies such as SQL, Visual Basic, or similar programming languages and development environments.
- Ability to create and maintain software design documentation, test plans, technical specifications, and validation reports.
- Knowledge of communication protocols such as CAN, UART, SPI, I2C, Ethernet, or similar embedded networking technologies is preferred.
- Experience with software testing, verification, validation, and continuous improvement methodologies in embedded product development environments.
Visa sponsorship is NOT available for this position.
Pay Range: $75,000-$115,000 - Commensurate with experienceCompetitive Benefits- Health and Dental Insurance
- Health Savings Account
- TelaDoc: Virtual Health Care
- Vision Insurance
- Company Paid / Supplemental Life Insurance
- Company Paid Long-Term Disability
- Supplemental Short-Term Disability
- Retirement Savings Account (Traditional 401k & Roth 401k)
- Flexible Spending Plan Dependent Care
- Bonus Plan (Exempt Employees Only)
- Paid Time Off (PTO)
- Paid Holidays
- Bereavement Leave
- Employee Assistance Programs (EAP)
- Education Assistance