I hear recommendations but no one speaking of their own experience.
I'll tell you what happened when I put a timer on my water heater: I saved about 5% on my utility bill. That isn't a huge amount but over a year it adds up, maybe $60 per year. If you have a big family or a large heater, it could save you more; if it's just you and a little 30-gallon unit, probably not so much. Over the life of the water heater, it adds up to about the cost of the water heater.
People will tell you it wastes energy. Yes and no: add insulation so you don't lose so much energy, and you're in better shape. Add insulation to the pipes, too. Even if you don't add a timer, adding insulation will save you money.
If you tend to be gone for days at a time, definitely turn it off. Your water heater only needs about an hour to get to full temp from stone cold so that doesn't need to be much of a hindrance to you. Overnight, the tank's only going to lose a few degrees and will be back up to full temp in a matter of minutes - fifteen minutes or less.
Here's another money-saving tip: every five years or so, replace the anode rod. Turn off power, drain the tank, and wrench the old anode rod out. Thread in a new one. Restore power and water, boom: you've reset the corrosion clock on your water heater back to zero. It's the biggest open secret in plumbing. Renew the anode rod every few years and you can make a water heater last DECADES. The chief difference between the cheap 6 year water heater and the expensive 12 year water heater? Bigger, thicker anode rods. There's other differences but that's the one that makes the big difference. You can make the el cheapo 6 year model go for 20 years or more with a little care: annual flushing, additional insulation, anode rods.
That's it. Good luck with it.