I'm in a Scheme study group run by one of our developers and based on Structure and Interpretation of Computer Programs , a classic computer science textbook. This week, chatting about our homework opened up a Java discussion, specifically the way that a particular library class makes it easy to have code fail at run time rather than compile time. One developer said that the documentation made it clear how the class should be used so this was fine. The other developers were shocked that this was considered an acceptable defence. That's right: the developers said that, where the software enables the wrong thing, even though somewhere there is doc explaining the potential consequence of the wrong thing, expecting the users to do the right thing was unacceptable . Yes, really. We all laughed at the time but I've hardly stopped chuckling since. Image: Wikipedia