Job Description
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.