Programming, in and of itself, is _EASY_. You tell the computer what to do and if it can, it does it. If it can't, it complains, most of the time, in a way that is clear where you fucked up. It's like talking to a genie, it's amazing.

The only REAL hard problem about programming is eliminating potential for user error.

This. This is the ultimate shit part of software development - the unpredictable monkey brain behind the keyboard.

The problem is, the computer is the kind of a genie that will do exactly what you told it to. So if somebody finds a way (which is, again, easy) to tell it to commit a messy suicide in the most creative and spectacular way imaginable, it'll do it.

You wouldn't believe how much of code is all sorts of safeguards and condition checks against all kinds of disasters that can befall the poor sob and their machine brave enough to run your piece of software.