Of course if the hero of our story can recall solving a similar kind of a problem in some previous project, an optimal solution may come as fast as a flash. In this case, the problem has probably taken a lot of brainwork and perhaps even trial-and-error in the first time.
Software development, like many other industries, has a prominent quality in that finding design errors later in the process makes them increasingly expensive to fix and many times causes delay in commercial release.
Thinking about a second or a third alternative solution to any problem truly pays off, when considering the total length and cost of the project.
If the goal is to create a scalable and adaptable system, with dependable code, I think this is the only way to do it.
When a problem arises and we take the first solution idea and run with it, how can we be sure that it is good enough?