Position: Embedded Software Engineer
Location: Sunnyvale, CA
Duration: 12+ Months Contract
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