Embedded Software Engineer
Role details
Job location
Tech stack
Job description
We are looking for an Embedded Software Engineer to design, develop, and implement high-quality embedded software solutions. In this role, you will work closely with systems engineers and cross-functional teams to analyze algorithm definitions and existing codebases, propose architectural improvements, and deliver reliable, scalable software using Agile development practices.
You will primarily develop software in C++ for real-time embedded Linux (Rocky Linux) environments, while collaborating on systems that may include legacy components written in Ada. This role spans the full software lifecycle-from requirements analysis through integration, testing, and delivery.
Responsibilities
Design, develop, and maintain real-time embedded software solutions in C++
Analyze system-level algorithm descriptions and existing software to propose optimal architectural enhancements
Collaborate with systems, test, and integration teams throughout the development lifecycle
Implement software using Agile/Scrum methodologies
Participate in code reviews, debugging, performance optimization, and root-cause analysis
Develop and execute unit, integration, and acceptance tests
Support software deployment and sustainment activities
Requirements
Bachelor's degree in Computer Science, Computer Engineering, or a related technical field, or equivalent practical experience
Experience developing real-time embedded software using C++
Experience developing for Linux-based targets (including Rocky Linux or similar)
Familiarity with multi-threaded and multi-process software design
Preferred Qualifications
Experience with Publish/Subscribe communication models, particularly DDS (RTI DDS)
Knowledge of CORBA
Experience with CMake build systems
Familiarity with CI/CD pipelines
Experience using GitLab for source control and collaboration
Experience with Jira or similar issue-tracking tools
Proficiency in unit testing frameworks such as GoogleTest
Experience working with model-based design tools such as Cameo Modeler
Exposure to Ada or mixed-language codebases is a plus
Development Environment
Agile/Scrum software development
Cross-platform development from Linux and Windows hosts
Real-time and performance-critical embedded systems