Like we all know we should, I regularly backup my complete set of data files. This is a habit that has, unfortunately, been learnt the hard way.
Something I’ve found myself increasingly reliant upon, though, is a version control system to manage software changes. Especially in developing HostManager and a large e-commerce project I am working on, I’ve found that hours of work can be wasted un-doing and re-doing changes to code that have been written in the process of testing a concept - invariably one that has hit a brick wall.
A version control system also helps out with managing client change requests, and is useful for when creating ‘spike’ code to test out a feature or algorithm. At the moment, I favour a collection of Subversion repositories running on a local (external) disk to store changes. This also allows for quick and easy backups of the repositories to a third-disk, and ensures that my working copies can be isolated from the master version if necessary.
Version control is something I would recommend to anyone carrying out development work, and given the ease with which a Subversion repository can be set up, and the extensive support in apps such as TextMate and XCode, there is now thankfully one more barrier between my files and the Trash can.