We are seeking an experienced Simulations Software Engineer for a 12-month contract position (remote, US-based) to join an aerospace client's team developing spacecraft simulation software. You will help design and integrate distributed simulation environments, guide architectural decisions, and mentor engineers working within a complex ecosystem of interconnected simulators. We welcome candidates from aerospace, defense, and other industries with experience developing distributed simulations or scientific software. Direct spacecraft experience is a plus but is not required.
Responsibilities
- Design, develop, and maintain software models of spacecraft components and subsystems using C++ and Python.
- Develop and integrate distributed simulators using High Level Architecture (HLA), Runtime Infrastructure (RTI), and related simulation technologies.
- Support simulation orchestration, time management, synchronization, and data exchange across interconnected simulators.
- Provide technical guidance on distributed simulation architecture and mentor team members.
- Interpret hardware specifications, Interface Control Documents (ICDs), and technical documentation to create accurate software models.
- Troubleshoot integration, networking, timing, and performance issues across complex simulation environments.
- Maintain and enhance legacy software through code analysis, refactoring, and incremental improvements.
- Develop automated unit, integration, and system tests and deploy changes through established CI/CD pipelines.
- Collaborate with software and systems engineers and participate in technical discussions and customer-facing design reviews.
Qualifications
Required
- Bachelor's degree in Computer Science, Computer Engineering, Mathematics, Physics, Aerospace Engineering, or a related field. Four additional years of relevant experience may substitute for a degree.
- 5+ years of professional software development experience in scientific applications, simulation, or complex technical systems.
- Experience developing distributed simulations, including synchronization, timing coordination, and communication between simulation components.
- Strong programming skills in C++ and/or Python.
- Ability to understand hardware behavior and translate technical specifications and interface documentation into software.
- Experience with Linux, TCP/IP networking, and debugging complex distributed systems.
- Experience maintaining existing codebases, using version control, and developing automated tests.
- Strong communication, collaboration, and technical problem-solving skills.
Preferred
- Experience with both C++ and Python, with an emphasis on C++.