Nice story, but there's no need to categorize a switch from svn to git as optimization, especially as part of the phrase "premature optimization".<p>That refers to exchanging clarity or simplicity for performance. If a technique is fundamentally superior then it's just the way you should do things, and few things in tech are as unilaterally superior as git over svn.
I just attended a DVCS talk today (<a href="http://worldtour.fogcreek.com/" rel="nofollow">http://worldtour.fogcreek.com/</a>) and one simple difference between SVN and DVCSs is still fresh in my mind:<p>When you are pushing your changes back to trunk, how safe is that process?<p>In a normal SVN workflow, when you're ready to commit your changes to the central repository to which a team member has also committed changes, you'll end up running 'svn up' followed by 'svn commit.' If you have substantial code changes and you screw up the merge during 'svn up,' there's little record of your pre-update code. In the case that you accidentally select the trunk version of a changed file for the merge, your own recent code may be overwritten.<p>With Git/Hg/etc, you are constantly committing your changes to the VCS. And you commit before you merge your working copy with any changes pulled from the "central" repository. If you screw up the merge, the DVCS has a record of your local work-in-progress code changes.<p>You could argue with SVN that any sufficiently large feature transaction should be done in a branch. Then the merge back to trunk will be safe with the branch's commit history. Pragmatically speaking, however, many people - especially small teams - end up doing all of their SVN-based development simply using 'svn up' and 'svn commit.' I know I have.<p>The safety that comes with a detailed commit history, especially for day-to-day file merges, is one big advantage of DCVSs.
<i>We’re self-hosting SVN on AWS…on our webdev server. Having all of our revision history and development code on one machine, especially one as potentially ethereal as AWS, is terrifying.</i><p>You might want to investigate how to to set up an EBS backed persistent root filesystem on AWS as well as how to do S3 snapshot backups. EC2 instances fail. EBS volumes fail. You need to be ready for that regardless of the revision control choices you make.
Having gone through the same process, for a small company, that "one extra level" is the key. Now I can check my code in early and often without worrying about stepping on anybody else's code. That encourages me to use SCM even more.
“I figured we may as well be one of the cool kids with something: version control seemed like a good choice”<p>It seems like this is the main reason why you switched from SVN to Git -- hype.
We moved from CVS to Git over the summer. It was a pretty easy transition (we only have seven employees) though it took some explaining about the local-vs-remote copies.<p>The founders originally wanted to upgrade from CVS to SVN. I pointed-out that not only would they have transactional commits in Git, but that they could recover from anyone's copy of the repository, since everyone has a local clone. That, plus the first check-in (which ran blazingly fast) ended the argument.
It seems like this article is premature. I would like to have read about their experiences a few more months down the line when there's been a bit more real world use.