Software Engineer, Simulations
Job description
About the role
Join the Simulations team to develop and test in-house simulation software crucial for all SpaceX flight systems. This role involves programming core simulation infrastructure and collaborating on models for fluids, electronics, and multi-body physics. You will build high-fidelity simulations used across engineering groups for hardware and software development, directly impacting missions like Falcon, Falcon Heavy, Dragon, Starlink, and Starship. The position requires close collaboration with domain experts to translate complex engineering requirements into robust software components. You will be responsible for ensuring simulation accuracy and performance under demanding operational conditions. This role offers the opportunity to work on foundational tools that enable rapid iteration and verification across the company. You will contribute to the architecture decisions that shape how simulation data is generated, shared, and analyzed.
Key facts
What you'll do
- Maintain and develop high-fidelity real-time simulation software for all vehicles, focusing on stability and scalability.
- Create prototypes to validate design concepts and define technical limits, enabling rapid exploration of new ideas.
- Continuously improve the reliability and performance of simulation software through profiling, refactoring, and optimization.
- Collaborate with users to implement new features and enhance user experience, ensuring the tools meet evolving engineering needs.
- Design and implement simulation components that integrate with existing infrastructure and support future vehicle programs.
- Analyze simulation results to identify anomalies, correlate findings with theoretical models, and propose corrective actions.
- Work closely with cross-functional teams to align simulation capabilities with hardware development schedules and test objectives.
- Write clean, maintainable, and well-documented code that adheres to internal standards and best practices in C++.
- Participate in code reviews, debugging sessions, and technical discussions to elevate the overall quality of the simulation suite.
- Support the deployment and configuration of simulation environments in both development and testing settings.
Requirements
- Bachelor's degree in computer science, engineering, math, or a STEM field; OR 2+ years of professional software development experience if no degree.
- 1+ years of C++ development experience, demonstrating familiarity with modern C++ features and idioms.
- Eligibility to obtain U.S. Department of State authorizations due to ITAR requirements, which may include U.S. citizenship, lawful permanent residency, Refugee, or Asylee status.
- Must be physically located in or relocate to Hawthorne, Canada, as this role requires on-site presence.
- Strong analytical skills to interpret simulation data and diagnose issues in complex system interactions.
- Demonstrated ability to work independently and manage multiple priorities in a fast-paced, deadline-driven environment.
- Willingness to work extended hours and weekends when necessary to meet critical project milestones and testing schedules.
- Effective written and verbal communication skills to collaborate with technical and non-technical stakeholders.
Nice to have
- Strong C++ software design and development abilities, with a focus on modular and maintainable architectures.
- Knowledge of distributed computing systems, networking protocols, memory management, and CPU scheduling principles.
- Solid understanding of classical physics and mathematics (algebra, calculus, Euclidean geometry) as they apply to simulation models.
- Proficiency in debugging, performance optimization, and unit testing to ensure robust and predictable simulation behavior.
- Creative problem-solving skills to tackle ambiguous challenges and develop innovative solutions under constraints.
- Experience with open-source C++ simulators such as ROS2 and Gazebo, or similar frameworks for dynamic system modeling.
- Ability to thrive in a dynamic environment with evolving requirements and shifting technical priorities.
- Capacity to work independently and as part of a team, take initiative, and communicate effectively across disciplines.
Skills & tools
- C++ is the primary language for development, and mastery of the language is essential for success in this role.
- Proficiency with version control systems, build tools, and debugging utilities used in large-scale software projects.
- Experience with real-time simulation concepts, including deterministic execution and timing constraints.
- Familiarity with numerical methods, linear algebra libraries, and data structures used in simulation engines.
- Understanding of software lifecycle practices, including testing, validation, and documentation.
Practical notes
- Must be a U.S. citizen, lawful permanent resident (green card holder), Refugee, or Asylee, or eligible for required U.S. Department of State authorizations due to ITAR requirements.
- Compensation includes base salary, potential long-term incentives (stock, stock options, cash awards), discretionary bonuses, and an Employee Stock Purchase Plan.
- Benefits include comprehensive medical, vision, and dental coverage, 401(k) retirement plan, short and long-term disability insurance, life insurance, paid parental leave, and various discounts.
- Employees accrue 3 weeks of paid vacation and are eligible for 10 or more paid holidays annually, plus paid sick leave.
- Willingness to work extended hours and weekends when necessary.
- The role is based in Hawthorne, Canada, and requires relocation or existing presence in that location.
- Full-time engagement is expected, with availability during standard and extended working hours as needed.
- Candidates must meet all stated requirements and demonstrate alignment with SpaceX's mission and technical standards.