How do you tell someone their code/design is bad?
In the comments following Weblogs Forum - OOP Case Study: The Bank Account Class (Part 3), Michael Feathers states "...where I think we fail in the industry is that we have not accepted the reality that there is a lot of really crappy code out there. A lot. ... We need to realize that many people have screwed up and that there are things we need to do to fix that beyond helping people acquire better design skills."
Although this is certainly true, what I'd really like to know is what are these things that we need to do? I think this is more in the realm of psychology. A big question that I have for Michael is: How do you tell someone that their code or design is bad in such a way that you don't encourage them to slam the door in your face? Do you confront them or do you try to present ideas that may lead them into making their own conclusion? Or are there other ideas for this (which sounds like it may be more like something in Esther Derby's domain, and folks like her).