Lead Embedded Software Engineer - Linux Kernel
We're looking for a highly experienced and driven Lead Embedded Software Engineer to spearhead the development of our advanced Linux-based ARM industrial gateways.
In this pivotal role, you'll lead the design, implementation, and optimization of complex embedded software, ensuring exceptional performance, reliability, and security.
You'll leverage your deep expertise in embedded Linux, C++ development, industrial protocols, and hardware-software integration to drive innovation and deliver cutting-edge solutions.
As a leader, you'll also play a critical role in mentoring junior engineers and shaping our CI/CD initiatives, ensuring the continuous improvement of our software development lifecycle.
Key Responsibilities
- Software architecture and design leadership for robust and scalable embedded C++ software on ARM-based industrial gateways.
- Coding standards and best practices definition and enforcement.
- Development and maintenance oversight of Linux-based systems using Yocto Project.
- Complex multithreaded application development and implementation utilizing advanced C++ design patterns.
- CLI/SSH-based diagnostic command design and implementation for comprehensive system health monitoring and troubleshooting.
- Integration and optimization leadership for industrial communication protocols, including CAN, Modbus RTU, Modbus TCP/IP, and SNMP.
- Peripheral driver development and implementation oversight for embedded peripherals (I2C, SPI, UART).
- Seamless hardware-software interaction and low-level system integration assurance.
- CI/CD pipeline implementation and optimization leadership using tools like Jenkins, GitLab CI, and GitHub Actions.
- Agile development process leadership, including sprint planning, code reviews, and retrospectives.
- Mentoring junior engineers in CI/CD best practices.
- Linux-based system and application development leadership for ported SBCs.
- Integration drive for web servers and RESTful APIs for remote management and data exchange.
- Comprehensive testing strategies development and implementation leadership.
- Advanced debugging tools utilization (GDB, JTAG, serial debugging) and command-line services for efficient troubleshooting.
- Root cause analysis leadership of complex software defects.
Technical Skill Requirements
- Expert proficiency in Embedded C++ programming is mandatory.
- Deep understanding of ARM-based microcontrollers and Linux-based systems (Yocto) is essential.
- Proven expertise in multithreading, IPC, and advanced C++ design patterns is required.
- Extensive experience with industrial communication protocols (CAN, Modbus RTU, Modbus TCP/IP, SNMP) is a must.
- Strong expertise in embedded systems architecture and low-level system integration is critical.
- Proven leadership in implementing and optimizing CI/CD pipelines and agile development methodologies is required.
- Advanced proficiency in debugging and troubleshooting embedded systems is essential.
- Strong experience with Linux application development on ported SBCs is mandatory.
- Experience leading a team is crucial.
Education
- A Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, or a related field is required.
General Requirements
- Employment Type: This is a Permanent, full-time position.
Skills Required
C++, Microcontrollers, Multithreading, Communication Protocols, Embedded Systems