My brother went to a college with some interesting programs. One of them was a senior capstone where you had to reference and reflect on every project you’d completed during your college career.
It was a robust project, and it almost encouraged academic hoarding.
My brother kept physical copies of every essay and assignment in a box under his bed at my parents’ house. He also kept digital copies on his PC at school.
Which he didn’t back up.
My brother used his PC for everything from school work to gaming to streaming. Unfortunately, not all of the resources he accessed with it were necessarily clean and, considering he was unwilling to pay the $5/month for an online backup, he’d also skipped on the $30/year antivirus software I’d offered when he went to college.
Fall term of his senior year brought thoughts of graduation, stress about his capstone project, and eventually a virus that bricked his machine. He was able to pull the data off the disk to another machine, but about 80% of it had been corrupted and rendered unretrievable.
He spent long hours late at night retyping his assignments from earlier in college so he could finish the senior project. The hard-copies under the bed saved his ability to walk for graduation, but sacrificed weeks of undue stress and lost sleep.
Lesson: Always back up your work in a location from which it’s easy and efficient to recover.
Learning Subversion
My first full-time development job was an accident. I’d taken a job as a marketer and volunteered to build our company website to keep my job.
I had no idea what I was doing, and my entire development experience was wrapped up in 2 WordPress plugins I’d built as a freelancer for friends. Subversion instructions, at the time, were command-line only; as a Windows user, doing anything at the command line was terrifying.
So instead I depended on Ctrl+Z to work backwards if I added a bug to my application.
During some heavy snow, I was working from home on my laptop and making pretty good headway on a new feature for the site. I’d code and code and code, then I’d compile to see the result. If it looked good, I’d hit Ctrl+S to store my changes – if not, Ctrl+Z until I got back to a working version of the site.
As it rarely snows this heavily in the Portland area, I was taken completely by surprise when the power went out. Actually, I didn’t notice until my laptop complained it had only 2% power left and nothing happened when I plugged in. I hit Ctrl+S quickly, and the last thing my laptop did before it died was save my changes.
When power came back up a few hours later I plugged in and was able to see that the code I’d just saved didn’t work. Unfortunately, as my IDE had closed when the computer died, I had no change history through which I could Ctrl+Z backwards to fix it.
After several hours manually scanning code and fixing bugs that would’ve been easier to fix had I kept track, I configured a local Subversion server and started using proper version control.
Lesson: Always keep track of what you change, when you changed it, and why you thought it was a good idea.