What SpaceX can teach us about complexity

Simple is hard. You may think the right engine came first. And then, SpaceX added a few features. But you’d be wrong.
The Raptor is the first modern full-flow staged-combustion-cycle engine. The benefit of this cycle is that no oxidizer or fuel is wasted. That gives you maximal theoretical performance.
But to get it to work, you must have your oxidizer and fuel turbines in a delicate balance. It’s incredibly complex to pull it off reliably.
How does this relate to software engineering?
Let’s start with a challenging problem. The solution you will come up with initially will not be ideal. But it doesn’t have to be. The goal is to make it work first. You take on some tech debt, and you end up with something that has a lot of moving parts. It works, but reliability and uptime suffer.
Any one of those parts is a potential failure point. And that increases your costs. It’s a pain to maintain. But you learned a lot through the process of building it.
Do you know what your next step should be? You refactor it. You consolidate. You remove what does not need to be there. Pay off the tech debt.
You iterate.
And eventually, you will arrive at the design on the right. Clean. Streamlined. With fewer moving parts. Higher reliability.
It’s magnificent when we can come up with simple solutions to complex problems.