Just Say No: Archives

Five reasons why you should use SVN for one-man projects

Sam Phillips, December 30th, 2007 8:36 pm

Often, when people are talking about version control systems, such as Subversion, an oft-quoted reason for its usage is the advantages it brings to collaborative working. This is with good reason – the system was written with the “many developers working on the same project” situation in mind, and this is why locking and merging et al is so important.

But version control is just as useful for smaller and/or personal projects – and as I’ve come to realise over the past week while getting to write more code than usual, using it can bring some major advantages to developing the “other” projects.

  1. Firstly, the no-brainer. Using version control means that you can roll files back. Large projects are planned and ideas are specified, and version control is often used for bug squashing and correcting mistakes. I find that it is less frequently used to “turn back the clock” on major portions of code (because they were just going in the wrong direction) because this situation is largely eliminated by planning. When I’m working on smaller projects at home, I’m often making it up as I go. It’s a good and productive way to code when you just feel like writing something, and are on your own time. Being able to roll back whole portions of the project (especially in Rails, using migrations) is a great way to allow yourself to experiment, knowing that even if you make some dodgy code decisions, they can always be rolled back.
  2. No need to trust yourself. I have always had a pretty good memory, not only for trivia, music/lyrics and names/faces, but also for code-related events – I can often recall when changes were made, at whose request and by whose hands. I’m a pretty good resource in the office in that way – but I am also very wary of reliance on memory. My mantra is to never trust yourself, and to use external systems to remember things wherever possible – à la GTD. Committing changes to projects via version control and always making sure I leave a long and descriptive comment means that I don’t have to rely on my memory when I come back to the project – perhaps days or weeks later. This means that coding at home can be what it should be – relaxing.
  3. Practice makes perfect. Using version control comes naturally after a while, especially in languages that are well-suited to it, but it’s still a skill that you need to work at. I like learning how to use some of the more advanced features at home so that, again, I’m on my own time, breaking my own projects. Using version control at home means that I’m continually getting better at it, rather than considering it a burden to be left at the office.
  4. Anyone who says version control doesn’t make life easier isn’t doing it right. Once you’ve moved into version control for some projects, everything else you work on feels rustic and lame. Developing under version control creates what appears to be overhead in the form of commits and maintaining working copies, but this is easily offset by the security it provides. Often I code late into the night (when it’s not a school night!) and by three or four o’clock, I can never be sure that the code that’s coming out is good. Under version control, this doesn’t matter. Wake up in the morning and revert the crap files, and keep the good stuff that only twilight hour inspiration can bring.
  5. Optimism. Under version control, you are taking every project seriously – this is a good thing, and it’s optimistic because you are telling yourself this is an important undertaking that may yet be something big, or at least something that helps some people out in some small way. And let’s not forget that version control works best when a project is born into the environment, rather than transplanted in later. Believe your work will be great, get it into version control from the beginning and let that experimentation that’s only possible with personal projects run free!

For big projects, I consider not using version control to be nothing short of negligent, because mistakes cost jobs and mortgages. For small projects, it is a great bonus feature, and allows experimentation and messing around to be easily coerced into something usable and maintainable.

Leave a comment

Subscribe to this blog's RSS feed

On Twitter:

  1. Loading...

Follow me >

Previously Rejected:

  1. Installing Bundler, Rails and MySQL on OS X Snow Leopard
  2. Playing nicely: Notes on installing RVM + Passenger
  3. November In Manchester: Twitter As A Reality Show
  4. November In Manchester: Joining those technical dots
  5. Introducing Ambitious Query Indexer – A new way to index your Rails app’s database
  6. Top 5 Least Favourite Spotify Adverts
  7. Forget the technology – is the very idea of Twitter scalable?
  8. Going back to paper as a task collection system
  9. Update Facebook status from Twitter
  10. Staying out of trouble…
  11. ALA’s 2008 Survey
  12. Ten products that Apple just rendered obsolete with iPhone 3G/2.0
  13. Professional Accreditation for Web Professionals (Or, a rant on the British Computer Society)
  14. If it’s that important… pick up the phone!
  15. Moving Google Mail, Calendar, Reader and Talk into Google Apps
  1. Bookmarks:

Valid XHTML 1.0 Transitional Valid CSS!