What I have seen so far is that very bright and capable scientists (physicists, for instance) who are non-programmers[1] are usually extremely ashamed of their code. I'm talking even CS Professors, who spend most of the time proving theorems. Structuring code well and making sure it's correct is hard, and they know.
[1] Programmer = somebody who spends 8 hours a day at it.
If "Programmer = somebody who spends 8 hours a day at it." then my students of Numerical Analysis are programmers, and not mathematicians. They are currently coding an assignment on continuation of zeros and (at least looks like) they are spending a ton of hours each day on it (and making me loose a lot of time answering email questions, by the way)
I can readily believe that they're (currently working as) programmers, but where do you get "not mathematicians" from? If you're spending 8 hours a day writing mathematical code and understand the mathematics, then in my book you're being both a programmer and a mathematician.
Incidentally, my experience is that plenty of people who are programmers are ashamed of a lot of their code too, at least in the sense that they wouldn't want anyone else reading it and judging them. Writing code that looks good as well as getting the job done is hard, whoever's doing it, and it's by no means always worth the effort.
Because they have strong problems understanding the mathematics, but they devote all their time to code something they don't understand . I have tried my best to get them to understand it, or convince them to understand first and code later, to no use.
[1] Programmer = somebody who spends 8 hours a day at it.