Description: Embedded Software Engineers collaborate with systems, hardware, architecture, and other teams to design system-level software solutions and obtain information on performance requirements and interfaces.
Role Overview:
- Strong development experience with C/C++ and strong programming skills
- Hands-on development experience on Linux Embedded, Ubuntu, CentOS, and Debian platform software stacks
- Hands-on development experience with the Linux kernel, performance tuning, and board support packages
- Demonstrated hands-on architectural knowledge of end-to-end software flow for a typical embedded SoC
- Ability to navigate touchpoints in different stages of the software stack, examine technical issues
- Working knowledge and experience with second-stage bootloaders such as U-Boot, systemd-boot, and UEFI
- Strong deductive problem-solving skills, with effective verbal and written communication for cross-team collaboration
- Hands-on experience with the full software development life cycle including design, implementation, deployment, and support
- Practical enablement of industrial solutions with virtualization using KVM or other hypervisors is beneficial
- Strong networking concepts and systems programming experience is beneficial
- Real-time use-case enablement with performance tuning for real-time applications on Guest or Host OS is beneficial
Minimum Qualifications:
- Bachelor's degree in Engineering, Information Systems, Computer Science, or related field and 6+ years of Software Engineering or related work experience.
Preferred Qualifications:
- 6+ years of experience with programming languages such as C, C++, Java, Python, etc.
- 8+ years of designing and leading real-time embedded and industrial solutions with hands-on experience
- Strong understanding of board support packages, hypervisors, RTOS, and OS concepts and fundamentals
- Strong understanding of Linux kernel and internals
- Knowledge of SoC systems and related concepts, including bring-up
- Strong aptitude, fast learner, self-motivated, and willing to work across a broad range of technology areas
Principal Duties and Responsibilities:
- Lead end-to-end software architecture, definition, and execution of IoT products running Linux Embedded and Ubuntu on Automotive SoCs
- Perform bring-up and develop proof-of-concept IoT solutions
- Work across diverse technology areas to develop cutting-edge features
- Ensure product deliverables are completed on time and meet expectations for functionality, stability, power, and performance.
- Engage with development partners to understand technical requirements, perform high-level feasibility analysis, and collaborate with technology teams to deliver solutions
Key Role Responsibilities & Expectations
- Strong hands-on programming role, with the majority of time spent writing and testing code.
- Candidate must be a self-starter who can work independently without waiting for detailed instructions.
- Expected to take ownership of development tasks, including:
- Writing code
- Testing and debugging
- Supporting system-level development
- Approximately 80–90% of the work will involve coding.
- The role is focused purely on embedded software development, with no cloud-related responsibilities.
- Automotive domain experience is preferred but not mandatory.
Core Technical Requirements (Top Skills)
- Strong programming experience in C and C++.
- Solid experience working in Linux environments.
- Experience with Boot / bootloader / low-level system initialization.
- Minimum 5–8 years of strong hands-on coding experience required.
- Must have experience working on embedded systems development.