While I totally agree with you, this example goes beyond that. Whether it's in public or in private, calling someone a "retard" and asking them how they could do something "so fucking stupid" is inexcusably abusive and a reason to quit on the spot, at the very least.
I would also add "don't be a complete asshole" as an additional requirement. Obviously that was not good code, but good managers encourage people to make mistakes so they can learn from them (as long as it isn't mission critical stuff)