Senior Software Engineer - Embedded Linux
About the role
At Oshkosh, we build, serve and protect people and communities around the world by designing and manufacturing some of the toughest specialty trucks and access equipment. We employ over 18,000 team members all united by a common purpose. Our engineering and product innovation help keep soldiers and firefighters safe, is critical in building and keeping communities clean and helps people do their jobs every day. The Senior Software Engineer will design, develop, integrate, test, and maintain embedded Linux software used in production vehicle systems. This role focuses on embedded Linux platform development and maintenance, Yocto-based Linux distributions, modern C/C++ application development, Qt-based user interfaces and services, automated testing, and software build and deployment infrastructure. The team member will be an integral part of multiple programs and will be expected to contribute across the complete software lifecycle, including architecture, requirements, implementation, code review, automated testing, continuous integration, release management, production support, and long-term platform maintenance. The ideal candidate has strong software engineering fundamentals, extensive experience developing production C/C++ software on embedded Linux, and the ability to diagnose complex issues spanning application software, operating system services, libraries, build systems, and hardware interfaces. Beyond offering a competitive total rewards package, we prioritize a people-first culture and offer various opportunities to support team member growth and success.
Responsibilities
- Design, develop, integrate, test, and maintain production-quality software for embedded Linux platforms.
- Develop maintainable C/C++ applications, services, and user interfaces using modern C++ and Qt 6.8+.
- Develop and maintain embedded Linux platforms using Yocto Project, BitBake, OpenEmbedded, and associated BSPs, layers, recipes, and image configurations.
- Support platform lifecycle activities, including Linux/Qt migrations, dependency and security updates, toolchain changes, and BSP upgrades.
- Diagnose complex issues across applications, operating systems, networking, device interfaces, and hardware/software boundaries.
- Support software integration, validation, and troubleshooting using bench test environments, target embedded hardware, and production vehicle platforms.
- Use Python for development tooling, automation, testing, build infrastructure, and data processing.
- Design software for reliability, maintainability, performance, resource efficiency, testability, and long-term support.