Companies depend on software to survive and grow. For software developers and engineers, that simple fact of life can create enormous professional pressure—if they don’t code something correctly, it could end up impacting the business in catastrophic ways.
Then there’s SpaceX, where the pressure to develop well-built software reaches a whole new level: bad code could have a disastrous effect on a manned spacecraft. Astronauts depend on software to survive.
Stack Overflow’s blog offers a neat interview with Steven Gerding, the software development lead for SpaceX’s Dragon spacecraft, which can ferry a human crew to the International Space Station. Gerding and other engineers rely on C++ to build much of the Dragon’s software, and his description of how the team approaches development is well worth anyone interested in writing software (especially software that puts the ‘critical’ in ‘mission-critical.’).
Even with brilliant engineers building the Dragon’s software, there’s always the possibility—perhaps the inevitability—of bugs. “We try to design the software in a way that if it were to fail, the impact of that failure is minimal,” Gerding told Stack Overflow. “We’re always checking error codes and return values… We also have the ability for operators or the crew to override different aspects of the algorithm.”
Gerding previously worked at Google, and provides some insight into how software development differs depending on your company’s ultimate goals and tolerance for risk. At Google, he said, “You would really want your process to fail, if something anomalous happened. It was one of thousands of similar processes which would then be restarted.”
With something like the Dragon spacecraft, though, a process failing is literally the last thing you want: “We’d rather just continue with the rest of the software that actually isn’t impacted by that failure.”
Head over to Stack Overflow for his other pointers, including the need to bake verification and validation into the software development process. If you’re interested in a software development job at SpaceX, keep in mind that developers and engineers can earn quite a bit in compensation, just in case you were looking for reasons to apply other than the coolness of helping launch and land spacecraft.
Besides C++, what technical skills is SpaceX looking for? That’s an excellent question. Fortunately, Burning Glass, which collects and analyzes millions of job postings from across the country (including ones generated by SpaceX) offers us an answer:
SpaceX’s managers want technologists who are skilled in popular programming languages such as Python, C++, and SQL. Familiarity with Linux is also key for some roles. As Gerding’s interview makes clear, knowledge of software development processes is also a must, especially given the pressures that come with building software that will safely deliver humans into space (and back).