Software Engineer, II - Middleware
$139,000–$166,800 year
On-site · Ann Arbor, Michigan, United States
Job Summary
Software Engineer II - Middleware for embedded Linux in autonomous driving systems. Design, develop, and maintain C++ middleware components (ROS2, SOME/IP); optimize performance, memory usage, and real-time behavior; integrate third-party drivers; collaborate with hardware engineers; contribute to open-source community; ensure safety-focused adjustments and testing across unit, integration, and system levels; work with PCIe data transport, automotive Ethernet, and various peripheral interfaces; participate in agile processes and thorough documentation.
Required Qualifications
- Bachelor’s degree in Electrical Engineering, Hardware Engineering, Computer Engineering or related field and 4+ years experience OR Master’s degree in a related field and 2-4 years experience
- Deep Knowledge of a Middleware Framework, e.g. ROS2, SOME/IP or similar
- Experience with PCIe Data Transportation
- Experience with Open-Source Collaboration
- 6+ years of professional experience in C++ development for embedded Linux systems.
- Experience with NVIDIA DriveOS
- Experience with Embedded Linux Software development
- Proficient in modern C++ (C++11/14/17), object-oriented design, and software engineering principles.
- Strong understanding of Linux internals, including user space vs kernel space, device trees, and system boot-up.
- Experience with cross-compilation toolchains and build systems (e.g., CMake, Make, Yocto, Buildroot, Bazel).
- Solid debugging and performance tuning skills using tools like GDB, Valgrind, strace, etc.
- Experience working in multi-threaded, multi-core, and multi-processor systems.
- Solid understanding of Semaphore, Mutex, Message Queue, shared memory and other operating system concepts.
- Experience with real-time operating systems (RTOS) or real-time Linux.
- Familiarity with hardware interfaces such as SPI, I2C, UART, Automotive Ethernet, CAN, and GPIO.
- Knowledge of software version control (e.g., Git), CI/CD practices, and issue tracking systems.
- Experience with Python, Bash scripting, or other relevant tools for automation and testing.
- Previous work in industries like automotive, IoT, robotics, or telecommunications.
- Automotive ASPICE knowledge – V Cycle
- ISO-26262 knowledge and experience with designing software for safety critical systems and/or automotive ECUs.
- Experience with Vector Cast or GTest for unit testing.
- Experience working with scrum / Agile teams.
- Experience in the certification process of automotive products
- You enjoy working in an agile environment
Apply with one swipe on Sorce. We auto-fill applications and apply on your behalf — no cover letters, no 40-minute forms.
Hiring someone like this?
Get your role in front of qualified candidates on Sorce.