Well I'm not a particularly strong programmer, but it's rare that I encounter a programming problem that I can't solve, which I believe comes from my mathematical skills.
I am completely self taught at programming, and it was only 3-4 years ago when I got internet access that I was able to share this pastime with others for the first time.
But I was surprised how often I was able to answer people's programming questions online... even those who I felt were stronger at programming than myself. Mathematical things is where most seem to get stuck.
My approach to mathematics has generally been shaped by thoughts like "how can I compute this on a machine", while my approach to programming tends to evoke thoughts like "what theorems relate to this bit of program, and do I really understand why it does what it does?"
My weaker areas are :
(i) managing complex programs. I can take things quite complex, but there suddenly comes a point at which I can't hold the whole thing in my mind. If a program is too big and complex for me to see in my mind as a whole, then I will struggle to relate to it, and struggle to do anymore to it. Thinking in terms of procedures and breaking code down into small standalone chunks is not a natural skill for me, which I expect comes from the imperative/non-procedural programming that I started with.
(ii) minutiae of language. With C++ especially, there are lots of examples online posing teasers like "why does this line of code output this value?" and it'll be something really counterintuitive that relates to precisely how the code is executed , or some obscure situation in which pointers don't work, or something. I have no time for that stuff.