Principal Embedded Software Engineer
Trident · Sterling, VA · 5 days ago
Engineering$120k–$222k/yrFull-time
About the role
The Principal Embedded Software Engineer serves as a highly experienced individual contributor responsible for embedded software architecture, implementation, and technical execution across advanced aerospace computing platforms and supporting engineering systems.
Responsibilities
- Arcitect, design, and implement software across embedded aerospace computing platforms and supporting engineering systems.
- Define clean software-hardware interfaces across processors, FPGAs, peripherals, storage devices, networking subsystems, and platform infrastructure.
- Architect robust boot strategies, software update mechanisms, telemetry frameworks, fault handling, recovery strategies, and maintainable runtime software architectures.
- Lead Linux BSP development, platform bring-up, driver integration, hardware enablement, and low-level software architecture activities.
- Develop, review, and optimize software for performance-critical paths including storage, networking, DMA, PCIe, interrupt-driven I/O, and embedded communications.
- Diagnose and resolve complex technical issues spanning software, firmware, FPGA, operating system, drivers, and hardware interactions.
- Establish and reinforce strong software engineering practices including design reviews, code reviews, reproducible builds, release discipline, traceability, CI/CD workflows, and technical documentation.
- Mentor software engineers through technical guidance, design collaboration, architecture reviews, and hands-on engineering support.
- Support technical trade studies, architecture decisions, requirements decomposition, and customer technical discussions.
- Partner closely with FPGA, electrical, systems, product, and test engineering teams to deliver integrated technical solutions.
- Perform off-site integration activities or travel, as needed.
Requirements
- Bachelor’s degree in Computer Engineering, Electrical Engineering, Computer Science, or related technical discipline, or equivalent practical engineering experience.
- 9+ years of related experience (OR 7+ years with a master’s degree).
- Embedded software engineering experience with significant delivery on complex hardware-based systems.
- Experience in embedded software architecture, low-level software development, and software/hardware integration.
- Experience developing Linux-based embedded systems including BSP development, platform bring-up, kernel integration, or low-level software infrastructure.
- Deep proficiency in C and C++ with strong systems-level software design fundamentals.
- Experience developing software for embedded hardware platforms including custom peripherals, communications interfaces, storage subsystems, or FPGA-connected systems.
- Strong debugging skills across software, operating system, driver, and hardware boundaries.
- Experience with source control, build systems, release engineering, and disciplined software development practices.
- Ability to mentor engineers through technical guidance, architecture reviews, code reviews, and collaborative engineering support.
- Strong written and verbal communication skills with engineering teams, technical stakeholders, and customers.
Preferred Qualifications
- Master’s degree in Computer Engineering, Electrical Engineering, Computer Science, or related technical discipline.
- Experience in aerospace, defense, or other high-reliability engineering environments.
- Linux kernel driver development experience including PCIe, networking, storage, GPIO, DMA, interrupt handling, serial interfaces, or custom hardware integration.
- Familiarity with embedded Linux environments such as Yocto, Buildroot, Ubuntu, or similar platforms.
- Experience with embedded communications and hardware interfaces including SPI, I2C, UART, CAN, Ethernet, PCIe, SpaceWire, or related protocols.
- Experience working closely with FPGA-based systems or hardware acceleration platforms.
- Experience with RTOS-based embedded systems or deterministic software environments.
- Experience with secure boot, fault tolerance, redundancy architectures, software recovery strategies, or mission-critical embedded systems.
- Experience with Python-based engineering automation, internal tools, or test infrastructure development.
- Strong engineering judgment, systems thinking, and ability to independently solve complex multidisciplinary technical problems.