The best way to solve any problem is — no, I lie, there is no single best way to solve all problems.
But I often find that there is great value in this approach.
- Stop. No, really, stop working on it. It may take a while.
- Pretend that you are starting analysis of the problem from the beginning.
- Read through the current process. Not what you thought was the process, not what the documentation says, but the code that is actually in effect.
- Understand what the people who wrote the process were trying to accomplish.
- Build your mental model of the process.
- Read through the process again. At every step, ask: is this necessary? Is this worded correctly?
- When you find something that is not necessary, remove it. Even if it looks clever. Especially if it looks clever.
- Test the new process, which is less clever and may do less than the old process.
In today’s application of the approach, I noted a well-commented optimization that was, in fact, completely pessimizing.