This reminds me of the famous Knuth quote: "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil."
In this case, I'd say the premature optimization was simply trying to prove the correctness of each move before it was made. In the bigger picture, programmers have a meta-algorithm for how they solve problems. It's tempting to sit down and figure out an O(1) or maybe O(n) algorithm - whatever is the fastest possible - and only then start to program. In reality, many of these optimizations, especially on a life-scale, can be counter-productive, because the cost of designing, implementing, and maintaining them far outweighs the benefits. One of the hardest parts of good engineering is true simplicity.
So I'd say Knuth's suggested philosophy applies to problem-solving at large, and this is one perspective on the author's epiphany.
Eliminating invalid moves is not a "premature optimization", but is at the heart of heuristic search. By eliminating impossible/invalid states, you eliminate them from the search space, which not only speeds things up, but prevents the discovery of an invalid "solution". Put another way, discarding invalid moves reduces the branching factor of the problem -- a fundamental optimization.
In this case, I'd say the premature optimization was simply trying to prove the correctness of each move before it was made. In the bigger picture, programmers have a meta-algorithm for how they solve problems. It's tempting to sit down and figure out an O(1) or maybe O(n) algorithm - whatever is the fastest possible - and only then start to program. In reality, many of these optimizations, especially on a life-scale, can be counter-productive, because the cost of designing, implementing, and maintaining them far outweighs the benefits. One of the hardest parts of good engineering is true simplicity.
So I'd say Knuth's suggested philosophy applies to problem-solving at large, and this is one perspective on the author's epiphany.