I was talking to a (print) design friend the other day who's trying to learn to code. It's interesting to explain to a non-programmer what kind of person will/can become a programmer. If you don't love solving problems by digging and automating, then you will never be a programmer. As you say, not because of intelligence but rather desire and enjoyment.