Most of my old code was lost due to a poor backup. Projects of mine have been abandoned because of poor backups. So these days, I'm a backup evangelist. I hear about a lot of crappy backup plans, but if you run a unix-like operating system, there's just no excuse for that. And if you don't run a unix-like operating system, why not?
Some of the fanciest (and often most expensive) backup systems are snapshot-style backup systems. Essentially, snapshots of the file system are taken at certain intervals, and each snapshot is a complete backup of the entire file structure at the time the backup was taken. It appears and works just like a regular file system, so you can operate on it with all the file manipulation tools you're used to. There's no grepping through tar files, going through incremental backup tapes, special archiver programs, or any of that. Often, snapshots are taken several times throughout the day. Although each snapshot operates as a complete copy of the file structure, the space taken up by each snapshot is quite small. But you can make nifty snapshot backups of your own with just three UNIX commands! Take a look at Mike Rubel's article about snapshot-style backups with rsync. I've been using a similar system for about a year now, and it really is the best.