Building a highly capable rocket company like SpaceX is one of those things that seems like an obvious process but for various reasons is surprisingly not. One common way to go about it is to get a bunch of money together, hire a bunch of aerospace engineers with relevant expertise, come up with a design, then build that design and parlay that into a business.
This works, but it's not as effective as you'd think. It's hugely expensive, it's slow, it has a lot of traps and pitfalls for the unwary, it often leads to highly compromised and undertested designs that are often kind of mediocre in one or multiple respects. And, again, it's expensive, it leads to expensive rockets and expensive launch costs. Ironically, developing for lower cost launches is seemingly even more expensive in up front costs due to the extra engineering, lower margins, etc.
Additionally, one of the dirty little secrets of the rocket business is that very, very few organizations actually have any current practical experience in creating new rockets from scratch. It's one thing to run through all the machining, assembly, etc. for a rocket that's already been designed, built, proven, etc, it's quite another thing to start off with a blank piece of paper and build a rocket starting from nothing.
So the smart way to build rockets isn't the above "obvious" way, it's an inherently iterative (agile) approach. Step 1 isn't building a rocket, it's building a team that can build a rocket. And you don't just iterate through improving the capabilities of your rocket design you also iterate through leveling up the skillset (at individual and organizational levels) of your company. It's a sort of tick/tock cadence, and each side is just as important as the other. Then, you build out a "minimum viable business" so that you can get revenue (and profits and investment capital) rolling in, keeping the company afloat, paying for new engineering and the development of new capabilities. Then you iterate and iterate and iterate your way to bigger and better things.
This model might seem extremely familiar and extremely obvious to the silicon valley set but it really is kind of foreign in the aerospace world (there's actually a bunch of interviews on youtube from NASA engineers working with SpaceX being amazed at what they were able to do and how much their process differed from the bureaucratic norms in the field). And, to be fair, plenty of New Space companies have followed similar models (Armadillo Aerospace, X-COR, Masten, several others) but for one reason or another none of them had the capabilities or the capital to jump to the level of success of SpaceX (so far).
In any event, this is precisely what SpaceX did. They started out with a dead simple (decades old) rocket design, they built a team that built a small rocket capable of getting some launch business. They streamlined the company by vertically integrating to allow faster iteration and lower costs. They iterated like crazy, they made a few mistakes here and there, had some bad luck here and there, but they managed to scrape through the choke points. They were able to launch a payload and get enough business to stay afloat, they were able to get investments and development contracts for future business that would allow them to fund further iterative improvements to their rockets. They relentlessly managed risks in an incredibly savvy way that should be taught in business schools and were able to operate an R&D program that made use of about a billion dollars in aerospace hardware for a fraction of the cost to the company itself.
A lot of this stuff is textbook modern software dev technique. Continuous integration, continuous delivery. Feature flags (to let you test new code works doing the "old" job before testing that the new code also performs new features). You'd think a big company like Google would be able to get this right, but it requires a level of commitment and an acceptance of loss ("failures" during R&D) that big, established companies are often reluctant to take on.