During the last weekend I decided I wanted to upgrade to OS X Mavericks. It's free, it's fast and it's the new black.
Anyway, I experienced something I haven't experienced before on OS X: It wouldn't upgrade my system.
The install ran as it should, until it reported that it had failed. It then asked me to reboot, and even though the first thing I saw was a Mavericks setup screen, it just wouldn't run - and just kept asking me for the same information (Language, keyboard settings etc.). So, I finally gave up and ran a clean reinstall from scratch - after a few issues with getting my data off the system drive. Now, this may be due to the fact that my system has massive user-specific changes (I install a lot using homebrew and have a bunch of ruby versions and gems for instance).
Things I've learned:
ALWAYS have a backup handy
I use Crashplan for maintaining backup of my Macs, and I've had to use it a couple of times. This gives some security as to not lose everything in the process. However, in this case, it was faster to do a disk-to-disk backup instead of having to fetch my projects, documents etc. from "The Cloud".
Keep an old version of OS X on a USB drive
One of the things that took time when the issue with updating, was the fact that my main system drive wouldn't boot.
The primary issue here, was getting my data off the system drive, as I knew the updater would not overwrite those (And thanks for that feature Apple, your installers are getting pretty good). I could remove the primary disk from my Mac and put it inside an enclosure to backup the data before cleaning the disk, but fortunately I had an old disk running OS X Lion lying around - which I just booted from using USB, and got the data away from my primary, internal disk.
Alternatively, you could keep a rescue disk around when updating, Mac OS even allows you to create one.
Check your dotfiles frequently
Most developers on Mac and Linux have a dotfiles repo nowadays - I do too. No, you can't see it (yet - right now it unfortunately has personal data). But as you actually only use these on an infrequent basis, they tend not always to be updated.
One of my main issues was the fact that most of my software wasn't documented in my repo - causing me to have to install some parts manually (Eww, manually!). However, on the plus side of things, I now have a more complete Rakefile for setting up new accounts on servers I get access to.