When you’re working on something, it’s important to visualize your endstate, the effects of being in that endstate, and come up with ways to maximize the effects.
Thoughtlessly executing tasks will result in unstable outcomes. This is similar to how Amazon writes up press releases before they even begin the R&D process. There’s no use in coming up with something we personally consider important but no customer is interested in.
Resources such as time and money are all much too important. That’s why it’s important to allot some time to think about where to invest these resources. Switching up tasks mid-way through is a very painful process. You need to start the communication process all over again, stop what you’re currently working on, and stuck between what’s already been completed and what needs to be done.
Problem are relatively easy to mitigate when thought goes into the plan before taking action. It mostly just involves reformulating your thoughts and erasing the whiteboard. But the more things progress, the consequences and cost of altering my actions become exponentially higher.
Software books always emphasize the importance of communicating with the customer in order to gather information on the customer’s needs as much as possible. On a similar note, coding in itself isn’t what we need. Choosing what code to type up in what style is far more important.
Explicitly draw up the endstate, meticulously consider all possibilites to see whether or not all outcomes are optimal, and practice rapidly implementing this process.