I realised something. As you are an imperative programmer, you are used to keeping track of "state". And I found that it seems an useful skill to have since, when doing a long proof, the are many open assumptions, restrictions, variables.
In my case, as I do functional programming, I am not used to do that kind of mental task. I often find myself lost because I do not recall what is being assumed, which statements were true, etc.