Programing itself isn't hard, it just happens to deal with hard problems more often than other tasks.
I don't personally think multi-threaded programing is inherently hard, but put a hard problem on top of a multi-threaded program, and it is still hard. I think that many people associate the disasters found in many multi-threaded programs with the hard problems they are trying to solve. Transference of hardness. Thoughts?