At what point do we stop blaming the developers for not knowing how to use our badly designed features, and accept responsibility for exposing an API that is hostile towards simple, efficient, and correct implementations?