There are many, many ways of supporting good causes you care about, that don't involve directly donating money. The first is with your time - can you spare a few hours each month to volunteer? Maybe you have a skill that would be useful to a charity - updating a website, taking meeting minutes, helping with accounts.
You can help spread the message for a charity - put up a poster at work, at doctor's surgery, shops etc. or ask local shop to have a collecting tin. On social media you can share their posts and information about events, campaigns.
Items - virtually all charities, especially at this time of the year, are busy hosting fetes, fayres, and all sorts of other fun activities. You can donate home baked cakes, crafty items (do you sew, knit, stitch, make cards?), bottles or other similar items for tombola.
Gifts - As well as the ubiquitous charity goat, how about charity Christmas cards? If you are going to send a card, it can do some good at the same time. Buy some or all of your gifts from a charity or charity shop.
Your friend is being unreasonable in telling you how to dispose of your income. There is enormous satisfaction in being able to help in some way for a cause or charity you believe in. Personally, we try to tithe around 10% of our income but we also do as much voluntary work as we can - sometimes this can be more valuable especially for smaller local charities that don't have paid staff. However, I wouldn't dream of lecturing anyone else on how to spend their resources, either time or financial.