Your first statement completely contradicts your second statement...
It doesn't actually. Most non-programmers can't fathom what needs to be done to get something working. They think programming is telling a computer "draw a tree" when in fact the computer has no idea what a tree or even 'draw' means. So to the uninitiated it all seems rather simpel. In your professional you tend to run into managers who can't understand why something they think would take an hour would in fact take 2 weeks.