Just a quick note on your main example—in math, and I’m guessing in theoretic areas of CS as well, we often find that searching for fundamental obstructions to a solution is the very thing that allows us to find the solution. This is true for a number of reasons. First, if we find no obstructions, we are more confident that there is some way to find a solution, which always helps. Second, if we find a partial obstruction to solutions of a certain sort, we learn something crucial about how a solution must look. Third, and perhaps most importantly, when we seek to find obstructions and fail, we may find out way blocked by some kind of obstruction to an obstruction, which is a shadow of the very solution we seek to find, and by feeling it out we can find our way to the solution.
Just a quick note on your main example—in math, and I’m guessing in theoretic areas of CS as well, we often find that searching for fundamental obstructions to a solution is the very thing that allows us to find the solution. This is true for a number of reasons. First, if we find no obstructions, we are more confident that there is some way to find a solution, which always helps. Second, if we find a partial obstruction to solutions of a certain sort, we learn something crucial about how a solution must look. Third, and perhaps most importantly, when we seek to find obstructions and fail, we may find out way blocked by some kind of obstruction to an obstruction, which is a shadow of the very solution we seek to find, and by feeling it out we can find our way to the solution.