We are seeking a skilled Embedded Software Engineer to design, develop, test, and maintain embedded software solutions for embedded systems and hardware platforms. The ideal candidate will have strong C/C++ programming skills, experience with embedded software development, and the ability to troubleshoot, optimize, and deliver reliable software throughout the full software development lifecycle.
Roles and Responsibilities
- Design, develop, test, and maintain embedded software for hardware-based systems.
- Develop operating system-level software, device drivers, and embedded applications.
- Analyze system requirements and create functional software solutions.
- Read and interpret hardware schematics, component datasheets, and technical documentation.
- Collaborate with hardware, firmware, and software engineering teams to integrate embedded solutions.
- Debug, troubleshoot, and resolve software and system issues.
- Perform software testing, validation, and performance optimization.
- Participate in all phases of the Software Development Life Cycle (SDLC), including requirements analysis, design, development, testing, and deployment.
- Create and maintain technical documentation for software design and implementation.
- Ensure software quality, reliability, and compliance with engineering standards.
Required Qualifications
- Bachelor's degree in Computer Science, Computer Engineering, Electrical Engineering, or a related field.
- 3+ years of experience in embedded software or firmware development.
- Strong programming experience in C and/or C++.
- Knowledge of embedded systems architecture and hardware/software integration.
- Experience reading and interpreting hardware schematics and component datasheets.
- Understanding of the Software Development Life Cycle (SDLC) and Agile development methodologies.
- Basic knowledge of operating systems, computer hardware, and software architecture.
- Familiarity with development tools, debuggers, and version control systems.
- Experience troubleshooting embedded software and system-level issues.
- Working knowledge of databases or development tools such as SQL, Visual Basic, or similar technologies is a plus.
- Strong analytical, problem-solving, and debugging skills.
- Excellent verbal and written communication skills with the ability to work effectively in a collaborative environment.
Preferred Qualifications
- Experience with RTOS, embedded Linux, or bare-metal development.
- Familiarity with communication protocols such as UART, SPI, I2C, CAN, or Ethernet.
- Experience with embedded debugging tools, oscilloscopes, and logic analyzers.
- Knowledge of software testing, code reviews, and continuous integration practices.
- Experience developing software for industrial, medical, automotive, aerospace, or IoT devices is a plus.