Despite all of the innumerable books and articles written about risk and software development practices, I think that there are only two real problems in software development: haste and ignorance. Somehow we always manage to convince ourselves that we can develop the software in a very short time, even when we don't have a clue about what the users really want.
To be politically correct, I probably should say partial knowledge rather than ignorance, but I've grown tired of people calling a spade "a manual earthmoving implement." Although sometimes I can manage to remain amused when people crash and burn their projects, lately I've become less tolerant, as I've had to put up with more and more really rotten software. It's all so unnecessary!