Never donate money to people on the street. Try to avoid charities unless you personally know the people involved. Charities are a scam, the people who run them make lots of money off of people who meant well. The American Cancer Association donates less than a quarter of the proceeds donated to actual research, the rest goes to overhead, salaries, and fund raisers. It takes a long time for money in actual charities to get to the people because that way it can sit in a bank collecting interest, which the runners of the foundation can pocket without declaring it since non-profit organizations don't have to itemize tax returns. The money may get to the people it was intended for, but it will take time so people can make money off of the goodness of other people.

If you know someone that is in a tight situation, donate money to them, that way you know where it's going. Make sure though that they are in need, and not just trying to take advantage of a friend. If you see a person on the street begging for money, offer them food. If they ask for money instead, say you'll treat them to a meal and offer to take them there. If they still refuse it's probably because they want to buy drugs or liquor with the money and aren't as bad off as they may say. The people who usually need money are too busy trying to get some then to beg. If you see a crazy homeless person, offer food or clothing, but not money. That way you know you're giving to someone who needs it.

Lived and Learned