How to make things go fast

Advice from Elon Musk, from two of Tim Dodd / Everyday Astronaut's videos on Youtube.

Mostly, these videos are about the technical details of SpaceX's rockets, but they also include some valuable advice for anyone building things on a team. I wanted some notes on these points so I could refer to it later.

At SpaceX and Tesla, they have a five step process to make the production process happen faster. Whether it's physical manufacturing or technology development, these are relevant for any audience:

1. Make requirements less dumb.

All requirements, no matter who they're from and how smart that person is, are guaranteed to be wrong. The only unknown is how wrong those requirements are. If you don't accept this, the counterpoint is that the requirements are perfect, which is even harder to believe. Question the requirements.

In a related point: attach names to requirements, not departments. You can't ask a department a question, you have to ask a person. When a name is attached to requirements, that person takes responsibility for ensuring those requirements are as good as they can be, and they own the success or failure that results from their requirements.

This isn't taught in school. You don't get to question whether the professor is asking the right question, you have to answer the question they give you. "In real life, the first thing you should say is, 'The question is wrong.'"

Another point is raised in both videos. At least on the engineering side of SpaceX, it sounds like they promote a culture where everyone is the chief engineer. That is, everyone should have a good understanding of how the other parts of the rocket work, even if they're not directly working on that part. If you have the technical knowledge to know how all parts of your product work, you won't request something that is not feasible nor a good use of everyone's time. In other words, your requirements will be less dumb.

2. Delete the part or process.

"The most common error of a smart engineer is to optimize a thing that should not exist."

Project scope expands to unnecessary levels when product managers start adding functionality for "just in case" scenarios. You can make "we might need this in case" requirements for everything, but you will never finish and never launch your product.

When you're stuck trying to develop or optimize something difficult - first ask yourself and your team if the thing you're optimizing is necessary at all. Can it be removed? If your requirements are less dumb, you will encounter this less often.

"Delete 10% of your product every release. If you're not occasionally adding something back, you aren't deleting enough."

3. Simplify/Optimize

"If a design is taking too long, the design is wrong. Therefore, the design must be modified to accelerate progress."

4. Accelerate cycle time

Go faster. In this context it's about manufacturing, where checks at various points in the process were slowing down the Tesla production line. The checks were passing, and the end testing was also passing, so the mid-way checks could be removed as long as the end testing was still passing. This, along with point 5, point to the value of continuous integration if your team can work that way.

5. Automate

If you find yourself doing this same repetitive task over and over, it can be automated.