I have an intense dislike for programs where the developers casually lie to the users, usually along the lines of "oh, an error happened in this section, and the developer was only thinking of error X, so if any error happens, explain to the user that they did X wrong".
It's like when Windows would blue-screen, and then the following startup screen said, basically, "we're having to check the filesystem integrity because you didn't shut the system down properly, next time please shut the system down properly" - for the 200th time, your OS ****ing blue screened you idiots! Not that I'm still bitter about that or anything. I've also seen systems that say, "you haven't purchased any music / apps / whatever", showing a blank list, rather than saying, "we are currently unable to contact the server to verify what music/apps you have purchased". Developers that just assume the user is at fault infuriate me. It's a very unprofessional assumption to make unless you've really checked everything else, and it always seems to be happening when lazy developers have not, in fact, checked everything else. It makes your program look bad, and to a lesser extent, it makes all software seem less trustworthy.
Apologies for the rant (or thanks for coming to my TED Talk?). There are better ways to write software.