The Algorithm

2 minute read

Published:

Good engineering is craftsmanship; and great engineers derive a healthy dose of dopamine from ‘building’ things.

No wonder Elon came up with this 5-step ‘algorithm’, building the hardest engineering marvels at SpaceX. There is a lot of this that applies even to building software.

So, the algorithm:

1. Make your requirements less dumb.

Your requirements are definitely dumb.

Engineers (and by extension most leaf-level nodes in large organizations) tend to take what is handed to them at face value.

Question each requirement. If a requirement does not make sense, talk to the person who imposed the requirement. Departments do not give requirements, people do. No matter who gave you the requirement, they may be wrong. It is particularly dangerous if a smart person gave you the requirement - you may not feel like questioning their judgement. Everyone is wrong at least some of the time.

2. Delete a part of the process.

Companies tend to incentivize adding items to process steps, ‘just in case we need it’. One should actively perform garbage collection on the massive web of steps, to maximize efficiency.

It is easy to confuse this with the idea of a Chesterton’s Fence, which says:

Do not remove a fence until you know why it was put up in the first place.

But the intent is not to do a blanket deletion of steps. Instead, one must put an active effort to understand each part of the process, and eliminate pieces aggresively.

If you are not adding things back occasionally, you are not deleting enough. That is how you can be sure you are not being overly conservative. This is the part that trips everyone a lot.

3. Simplify, or optimize.

It is every smart engineer’s tendency to optimize a thing that should not exist. Part of this mindset is traceable to our education system, which incentivizes convergent logic - the process of deducing the solution by applying finite rules. This is the mental equivalent of wearing a straitjacket.

Most real world problems are not convergent in nature. Focus on the most impactful portion of your job, and iterate over that.

4. Accelerate cycle time.

Anything can be sped up. Only after you have done the other 3 things, accelerate your iteration time.

If you are digging your grave, don’t dig it faster.

5. Automate.

Don’t reverse these steps. You definitely don’t want the pain of deleting a part of the process, after already sinking the time and energy automating it.