Monday, June 16, 2008

When Good, Fast, and Cheap isn't good enough

You might get the impression, that, based on this and my previous post, I dislike my workplace. This is not true. I am fully committed to helping them provide the best product possible, but at times, there are decisions (or lack thereof) which cause me such angst, that I simply need to find a suitable place to shout into the wind. Which brings us to blogs on the internet, making anyone a publisher on nearly equal footing with huge, venerable organizations who have been the traditional custodians of publishing. Ah, I digress....

Perhaps you have heard of the developers triangle. This simple illustration is frequently a source of high dispute between developers and managers. In short, it says that out of the 3 attributes: good, fast, and cheap, it is possible to attain 2 of the 3, but not all 3. The illustration tends to lend itself to other similar areas as well, including off-the-shelf software.

The example that tortures me the most at my workplace is Visual SourceSafe 6.0 Why, Why, WHY???

There are many excellent alternatives and replacements for VSS6, I cannot understand why we would keep it around...even after it crashed so badly that we had to restore from disk.

Sent: Friday, May 30, 2008 2:54 PM
To: Lots of IT type people
Subject: RE: SourceSafe

It looks like we are going to need to revert to last night's backup to fix the issue we are experiencing. Please let me know if you have created any new solutions/projects or checked out/in any files and we can work on preserving those changes before restoring from backup.

Fortunately, my team was unaffected by this outage, because a year ago, I made the decision to begin storing our software (which is primarily comprised of binaries from our vendor) to Subversion for two reasons.

1) The work that our group was doing had very little commonality with the main development team
2) I knew the issues and problems with SourceSafe.

To me, this is a sad situation. An excellent FREE alternative with superb documentation was available to us, yet management has refused to migrate. This brings me back to my first point. Subversion is an amazing example of an exception to the developers triangle. By all rights, it qualifies as good, fast, and cheap.

Good: I'm not sure if I can truly qualify anything as good or bad, but to prove the "goodness" of SourceSafe, I direct you to Jeff Atwood's post (referenced above) and the chart therein. Based on its popularity, I would surmise that there is a strong consensus that Subversion is a good product and that it is "better" than it's competitors.

Fast: Very little hard data exists to support or dispute whether SVN is faster or slower than other SCMs. SVN was created as an alternative to CVS and one of the goals was to make certain operations much cheaper like copies and thus much faster. However, on their website, Perforce presents a paper showing that it beats SVN in comparative benchmarks. Considering the source, there might be some bias in testing.

Cheap: By very definition of being open source, it is as cheap as it can be... which is free. Even better than that, it has excellent add ons (also free) and extensive documentation in book form (also free, online).

One of the criticisms of Subversion that I hear is the lack of integration with the .NET IDE. This can be overcome somewhat with the free ankhSVN tool or the not-so-free VisualSVN.

However, the argument has been made, and after personal evaluation, I agree that direct integration with the IDE is not necessarily a good thing (see "Tradeoffs and Problems"). I personally have found that taking the time to write a proper check-in and/or checkout script is well worth it. Not only do you have the direct confirmation from the SCM that your command completed successfully, but you also have the opportunity to combine other tasks into the process as well, including templated comments, unit testing, build integration, notifications and pretty much anything else you can dream up. It also prevents you from checking in bad builds, since most developers I know of who use integrated SCM in the IDE use "check in" interchangably with the "save" button, which, in my opinion, is a flawed philosophy.

The other argument I commonly hear relates to the extremely high mistrust that some people harbor against open source software along with the misconceptions that they hold. First, open source doesn't mean "do it yourself." No one is selling you a "how to" kit and wishing you good luck. Many open source projects strive to act and feel the same or better than their commercial competitors. They do not ask the user to ever look or think about the code behind the application. It's all about the user experience, plain and simple.

Secondly, they express great paranoia that open source means zero support, zero help, and a general sense of abandonment ([sarcasm]because VSS is so thoroughly supported[end sarcasm]). Nothing could be further from the truth. First, in terms of support for Subversion alone, simply do a Google search for Subversion commerical support and you will find this a laughable point. With regards to it being "abandonware," I disagree wholeheartedly.

Perhaps someday, after a particularly devastating crash, a change might be considered. Until then, I can only suggest that you back up often, create your own SVN repository, and perhaps, write your own check in script :-)

0 comments: