This is a followup to my previous post – Version Control and You – and although I was going to shift the disccussion towards what you can do with this safety net, but now I need to write a followup. I'll get back to that one later.
Right off the bat, the unanimous opinion from the public comments was in agreement. We all see version control as necessary and a useful tool and we can't understand why people don't/wouldn't use it. But the email I received were a little different… since I don't have permission to publish those, I'll summarize a few of their points:
One emailer wrote "Version control is just too complicated."
Alright, I'll concede the point that setting up and maintaining Subversion can be complicated. I used to do it myself but I found that I was spending too much time managing the tool and not enough time working. So I shifted to a hosted service. Many of the hosting companies – RailsPlayground, Dreamhost, etc – offer Subversion hosting and CVSDude does the same. The prices range fomr $5-30/month. What's your billing rate again?
But using it is much simpler. If you think of it as a timestamped backup – and rollback – service, you can get value out of it immediately. Branching, merging, tagging, and all kinds of other things are great, but they're not required and you may never need them. Walk before you run.
Disclaimer: CaseySoftware does a great deal of our own hosting and customer hosting through Dreamhost (coupon code: caseysoftware). RailsPlayground is used for all dedicated hosting and the core infrastructure of WhyGoSolo.
Another wrote "Our project is too simple, we don't need it."
Personally, i think no project is too simple. Whenever you are changing code, adapting and expanding upon it, you're going to run into scenarios where you might want to look at what you did last week. More importantly, you might want to see the exact version of everything deployed at one precise moment in time and compare against what you have now.
Another wrote "We don't have time for version control!"
Okay. But you have time to manually merge the files? How many times have your changes been overwritten? How many times have you overwritten someone else's changes? How much time have you debugged the same problem multiple times? How much of this time is billed to the customer.
Finally, one wrote "We don't need it, we're all in the same office!"
Wrong. Wrong. And wrong.
In a major project years ago, this was our starting point. When we were modifying core pieces, we'd let everyone know and then merge the changes after the person was done. We were constantly talking, constantly putting pieces together, constantly combining things for another release. For a while we thought this "collaboration" was great.
But years later, I realized something. It wasn't collaboration at all, it was constant triage. We weren't talking about ways and ideas to move the code forward or do interesting and innovative things. All of this talk was required just to keep pace, to not make everything worse, and I can't imagine how much effort was wasted.
In conclusion: Stop complaining and do it.
You'll save back the time and effort involved in a matter of weeks. And you'll be able to think and talk about the important things instead of the basics.
If you're in the US, have a Happy Thanksgiving tomorrow. If you're not, have a Happy Thursday. Either way, this space will be tech-free.