(Sorry for be rather off-topic, but it's an important topic for me, so... no real excuse, I know ;-)
Programming is harder than rocket science, because it still doesn't have a firm mathematical machinery behind it.
I don't know about engineering, but in physics the mathematical machinery isn't as firm as one would think. Well in research papers it usually is, but not in the typical course.
I've witnessed this several times, at various universities:
teacher: Now we can write $this integral like $that
student: Wait, /can/ we even do this transformation
teacher: Well, the mathematicians know a list of
conditions that determine if it's allowed, but
I don't know them because it's allowed for all
functions that physicists ever use.
(For the interested, those conditions are usually "only a finite number of discontinuities).
Which is perfectly fine, because I'd never be able to finish my studies if I only did mathematical operations that I have proven myself and that I know are allowed, but it doesn't really raise my level of confidence in mathematical foundations.
When you talk about mathematics, keep in mind that it's still only humans that do it, and they can make mistakes, and even in mathematics they can have varying opinions.