This is something I often have to instill in new software developers and occasionally to remind myself. We default to seeing the thing we want to build and the plan that we imagine for doing so. As we proceed, every bump and deviation from the plan feels like a set back. Every wrong turn and rewritten piece of code feels like a waste, a mistake. But in fact, it's all part of the process. Trying that avenue that turned out not to be what you wanted was a necessary part of learning what it is you did want. As The Pragmatic Programmer said, "Prepare to throw one away ... you'll have to anyway."
I make it clear that at any moment a plan isn't absolute because we can't possibly know what the future will hold. Instead, a plan is simply a direction to start heading. As we try and we learn, we update our understanding and we update our plan, heading in a different direction that hopefully brings us closer to our goals. If we think of a deviation from the plan as a failure to plan, we punish ourselves for a lack of omniscience - something we can hardly expect to live up to.
That same mindset helps a lot in understanding daily life too. When we see people make mistakes driving, or large construction projects going over budget, or social policies causing unanticipated problems, we are quick to blame people for not knowing better, but how can we expect them to know with certainty what will happen as the result of every decision they make? We simply do our best with the resources we have available and as events unfold we continue to do our best to steer ourselves to our desired outcomes. People shouldn't be punished for the outcome if they made a good choice given the resources they had. Hindsight is 20/20 and all that.
I make it clear that at any moment a plan isn't absolute because we can't possibly know what the future will hold. Instead, a plan is simply a direction to start heading. As we try and we learn, we update our understanding and we update our plan, heading in a different direction that hopefully brings us closer to our goals. If we think of a deviation from the plan as a failure to plan, we punish ourselves for a lack of omniscience - something we can hardly expect to live up to.
That same mindset helps a lot in understanding daily life too. When we see people make mistakes driving, or large construction projects going over budget, or social policies causing unanticipated problems, we are quick to blame people for not knowing better, but how can we expect them to know with certainty what will happen as the result of every decision they make? We simply do our best with the resources we have available and as events unfold we continue to do our best to steer ourselves to our desired outcomes. People shouldn't be punished for the outcome if they made a good choice given the resources they had. Hindsight is 20/20 and all that.