My Islamic studies professor in college frequently told this ancedote on the first day of class (or whenever he got an opportunity). It started out like this:

When the ancient muslim armies invaded other countries, they normally issued an ultimatum: Convert, Die, or Pay a tax. This usually resulted in the question: So how much is this tax? 

It's no surprise that the muslim armies were able to invade many territories without bloodshed.

We need something similar in Software Development. Too many companies cling to Enterprise-y Version Control Systems that make even the smartest developer cringe when the subject of branching and merging is brought up.  Management clings to these systems without logic, and we suffer for that decision. It even pervades to our project management and defect tracking software (I'm looking at you, Test Director).

It's time to issue our own ultimatum:

Convert, or pay the productivity tax.

We must stand up against the tyranny of idiotic version control. Not being able to branch and merge? What's the use in having Version control? Not being able to commit code until it's bug free? Sacrilege

There is a better way.

Joel Spolsky has written up an excellent tutorial on Mecurial and how it differs from traditional version control systems. Read it. Pass it around the office. Hound your manager. Light Pitchforks and Raise torches. Do whatever it takes: DVCS's are free. They're better than tradtional VCSs. 

Why aren't you using them?


View Comments: Comments (2) |

Comments


February 24. 2010 06:25
sensware
Cool stuff! But how do you make sure that the code is still functional after several independent changes. Sounds like more unit testing!

http://blog.sqlpositive.com/http://blog.sqlpositive.com/


March 1. 2010 04:41
Phileosophos
I think the better question, G, would be: HOW are you using it? I've checked out a few DVCS by now, and the one reason I haven't converted is because they seem to require you to jump through hoops to work the way you used to.

The great thing is that everybody can have multiple versions of any given project. It's no problem because branching/merging are so simple. But then when it comes time to deliver something to QA, the question is always: whose version is the actual product?

If you saddle a single programmer with that responsibility, then he has to figure out which bits of whose stuff to take and what to cull. If you set up a master repository, well, then how is this really any different from Subversion or CVS or something?

I get how simple branching/merging is nice, but I don't see how DVCS actually works in a real company as compared to an open-source project.

http://phileosophos.com/http://phileosophos.com/

Add comment


(Will show your Gravatar icon)

biuquote
  • Comment
  • Preview
Loading



Recent Comments

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.