The Complexity of Space Software, We’re not in Kansas anymore
With many early missions leveraging custom, commercial off-the shelf, and open source software packages, the issues of software complexity and lack of interoperability have been brought forth in my conversations with space engineers and CEOs.
On a busy afternoon, seeking a mental break from what I need to get done, I let Youtube’s algorithms suggest what I should be watching. Of course, I understand the tricks and strategies used in digital media, so I wasn’t expecting suggestions with riveting depth. However, the more time I spent listening to and watching one particular video, the more I meditated on the presenter’s message and was encouraged to share it with close friends and associates.
Jonathan Blow is a U.S. programmer and recognized indie video game developer active in the industry for more than three decades. His presentation at one of the largest game developer’s conferences in Eastern Europe - DevGAMM - in July 2019 was titled “Preventing the Collapse of Civilization.”
In a nutshell, the key takeaways of his presentation relate to the threats of an increasingly complicated and, therefore, unsustainable software infrastructure with higher levels of abstraction at the base of our civilization’s existence. It is untenable because, for one thing, it is far removed from the actual hardware - machinery. And second, there is a poor transmission of knowledge about best practices from senior developers and computer engineers to the younger generations.
Blow’s decade-long expertise comes front and center in his presentation when he distinguishes unnecessarily complicated and lengthy source code that doesn’t solve complex problems. Blow also explains how this scenario impacts new generations of up-and-coming programmers, who are so far removed from the computer’s hardware for the sake of speed and efficiency to get to market quickly that they ultimately fail to grasp the basics of what their software is trying to do in the first place. One of the most thought-provoking comments started with:
“I characterize software as having small local technological improvements like machine learning with overall inertia or degradation in the rest of the field. And we’re very impressed by the improvements though….[But] we simply don’t expect software to work anymore and I’m not sure when this happens.
You know computers always had a reputation for being a little bit funny but if you go back many decades ago it was generally due to not being user friendly or hard to understand how to use it. But today if you’re using a program and it does something wrong, you’re just like yeah, it’s software, restart it and whatever. And that didn’t used to be. And if our standards are shrinking over time how low can they shrink before it becomes unsustainable?
There’s this generational transmission of knowledge that I don’t think is being passed along right so I think the knowledge of how to make things less buggy is lost and even the knowledge of a technology company has changed.”