Been writing code for 30+ years. I did devops for OS/2. I have seen stuff break, like when Media Temple had a cluster fail and their backups failed. Which is why you always do nightly offsite backups. I never trust a host's onsite backup because they often fail. However, digging into backups for code never happens because with experience you learn how to introduce changes. Also remember, there's a 3rd and 4th backup copy: control-z plus the copy on the production server. 5th backup copy if you count your code editor's backup copy. 6th backup copy if you count the hosts onsite backup copy. And because I use Linode, that means 4 archived backups. So yeah, that's about 9 backups, just in case I forget a semicolon ;-)
I dont even have a quarter of your experience. I do realize we have multiple backups either intentionally or unintentionally. But one thing I found when I don't check in code, and unfortunately have to resort to one of the backups, is that a lots of time is spent finding out which is the latest and has all the changes. Under really unfortunate circumstances, I have ended up with different copies of the code having portions of the latest features and having to merge. I have also had the bad fortune of cursing myself for deleting a code file unintentionally and having to rewrite it from some other unfinished copy. Makes me love version control systems. I always use one even for my personal projects. That is my recipe for coding without fear. YMMV.
Damage can go far beyond "I can't find the old code."
The consequence of failures vary drastically with the type of business you're developing for--if you're just developing wordpress sites for mom & pop flower shops, your advice sounds pretty solid.