If you want to learn from your experience most effectively and efficiently, and to stop making the same kinds of mistakes, with subtle variations, again and again, it is necessary to engage in reflection about the erroneous thoughts that caused the bug/problem and the thoughts and mental processes that were absent but could have prevented the problem. It depends how much one cares about improving, and how quickly, but for anybody who seeks mastery, I don’t see how you can avoid thinking about thinking.
Regarding working as a programmer, I entirely agree.
I don’t know of any other discipline, even math, where one is more repeatedly confronted with one’s mistakes.
Yet you are not forced to think about your own thinking.
If you want to learn from your experience most effectively and efficiently, and to stop making the same kinds of mistakes, with subtle variations, again and again, it is necessary to engage in reflection about the erroneous thoughts that caused the bug/problem and the thoughts and mental processes that were absent but could have prevented the problem. It depends how much one cares about improving, and how quickly, but for anybody who seeks mastery, I don’t see how you can avoid thinking about thinking.