During my career I have been involved in letting go quite a number of people. It's never an easy process especially due to the fact that you cannot prepare person in advance but you must execute the decision swiftly and without hesitation. But over the years I've learned that letting people go is in most cases beneficial for all parties involved. While it comes as a big shock to the person being let go, the shock also makes people reflect on their actions and options, and make them do changes to their lives that they would never dare to do themselves. If primary responsibility of a manager is to develop people, letting people go should be one of the primary tools at manager's disposal and it should be a tool used wisely but without fear and trepidation.
Standing in front of a person, looking into his or her eyes, and explaining to him or her that it didn't work out is not for the faint of heart. But it's the only fair thing to do, much fairer than starting to ignore person, not giving him or her responsibility that should go with his or her position, talking the person down behind his or her back, or do any of the many things that managers with less courage do instead of outright firing the person. Once worker's unions and other self-proclaimed "guardians" of workers' rights finally get to understand that we're no longer living in the 19th century Manchester, they might even start embracing change instead of fighting it and help the wrong person for particular position find the right place instead of protecting status quo at any cost.