Version Control and the… Long Gradated Scale
My previous post about version control and the 80% deserves a follow-up post, mainly because it caused such an uproar, and because I don’t want people to think I’m an ignorant narcissist. Some people agreed with my post, but a huge number of people took offense at my gross generalizations. I’ve seen endless comments on my post (as well as the supporting post by Jeff Atwood) where people are either trying to decide if they’re in the “80%” or in the “20%”, or are calling foul on the pompous assertion that everyone fits into those two categories.
So let me begin by apologizing. It’s all too easy to read the post and think that my thesis is “80% of programmers are stupid mouth-breathing followers, and 20% are cool smart people like me.” Obviously, I don’t believe that. 🙂 Despite the disclaimer at the top of the post (stating that I was deliberately making “oversimplified stereotypes” to illustrate a point), the writing device wasn’t worth it; I simply offended too many people. The world is grey, of course, and every programmer is different. Particular interests don’t make you more or less “20%”, and it’s impossible to point to a team of coders within an organization and make ridiculous statements like “this team is clearly a bunch of dumb 80% people”. Nothing is ever so clear cut as that.
And yet, despite the fact that we’re all unique and beautiful snowflakes, we all have some sort of vague platonic notion of the “alpha geek”. Over time, I’ve come to my own sort of intuition about identifying the degree to which someone is an alpha-geek. I read a lot of resumes and interview a huge number of engineering candidates at work, and the main question I ask myself after the interview is: “if this person were independently wealthy and didn’t need a job at all, would they still be writing software for fun?” In other words, does the person have an inherent passion for programming as an art? That’s the sort of thing that leads to {open-source participation, writing lisp compilers, [insert geeky activity here]}. This is the basis for my super-exaggerated 80/20 metaphor in my prior post, and hopefully a less offensive way of describing it.
That said, my experience with the software industry is that the majority of people who write software for a living do not have a deep passion for the craft of programming, and don’t do it for fun. They consume and use tools written by other people, and the tools need to be really user-friendly before they get adopted. As others have pointed out, they need to just work out of the box. The main point I was trying to make was that distributed version control systems (DVCS) haven’t reached that friendliness point yet, and Subversion is only just starting to reach that level (thanks to clients like TortoiseSVN). I subscribe to a custom Google Alert about my corner of the software world, meaning that anytime Google finds a new web page that mentions Subversion or version control, I get notified about it. You would be simply astounded at the number of new blog posts I see everyday that essentially say “Hey, maybe our team should start using version control! Subversion seems pretty usable, have you tried it yet?” I see close to zero penetration of DVCS into this world: that’s the next big challenge for DVCS as it matures.
Others have pointed out that while I scream for DVCS evangelists not to thoughtlessly trash centralized systems like Subversion, I’m busy thoughtlessly trashing DVCS! I certainly hope this isn’t the case; I’ve used Mercurial a bit here and there, and perhaps my former assertions are simply based on old information. I had previously complained that most DVCS systems don’t run on Windows, don’t have easy access control, and don’t have nice GUI clients. Looking at wikipedia, I sure seem to be wrong. 🙂
You really don’t think most programmers would program for fun? I haven’t gotten that feeling. (I know I would.) Maybe I should get out more …
I’m glad you took the time to post this. I thought your last past was very insightful, but could understandably be considered flamebait.
DCVS’s will continue to be wonderful for the larger open-source projects, but for everyone else, centralization makes sense. The last thing any developer (open-source or not) wants to do is review & integrate several thousand lines of code in one sitting, no matter how good it is. For most people, I say merge early, often, and centrally.
“Source control is what distinguishes men from beasts.”
Excellent post, though I think it’s Jeff Atwood who needs to extend the apology and not you. Your post made it crystal clear that you were exaggerating to make a point, while Atwoods post seemed to take great delight in completely missing the point of your post and taking the exaggerations at face value then using that as an excuse to post about reaching out to, what he apparently perceives as, the rest of us unwashed idiotic masses.
In short, what I mean to say is, your post was good commentary, while Atwoods was elitist crap.
+1
You were clear, you just got pilloried because what you wrote was too easy to misunderstand when taken out of context. For an interesting response, see Brian Aker’s Insert FUD, Subversion vs Distributed Software Development. I think he (unfortunately) starts out with the same misunderstanding of what you were saying about programmers, but despite that his post is still worth reading.
I don’t believe that, this question could be related to being geek or not, does loving to code or to become the best coder on the earth has to do with anything geeky?
I bet no, geekyness doesn’t necessarily means programmers/hackers/sysadmins.
Some people might enjoy doing those and would do it when they got everything they ever needed in life, just for the sake of the pleasure involve in it.. i for instance.. am no geek, yet would love to continue doing that even if i became amazingly rich.. just for the sake of that pleasure you get when you see it working and better than the rest.
+PC/$3|
“Hey, maybe our team should start using version control!”
So at least my current client is a bit more evolved; they’re currently contemplating making SVN available to new projects, as an alternative to CVS. If I can just persuade their security experts that mod_dav isn’t a major security hole, we might have an SVN server up and running before the summer. Yay!
““if this person were independently wealthy and didn’t need a job at all, would they still be writing software for fun?†In other words, does the person have an inherent passion for programming as an art?”
Given your definition, I guess that you don’t think of Bill Watterson as an alpha cartoon artist.
Sad…
The fact there are so many people causing a ruckus shows how many of us are truly bad with interpreting intent.
You were clear, you just got pilloried because what you wrote was too easy to misunderstand when taken out of context.
I know this is a late post, but I’ve just stumbled across your blog for the first time. I don’t see the controversy. I’ve worked in corporate software development for 20+ years. 20%/80% fits my view of corporate software development, and is a reality for a host of reasons.
First, most non-software companies couldn’t afford to staff all 20% programmers. Salaries rise with technical skill. The programmers who eat, sleep and dream in code are usually the strongest.
Second, every corporate custom project I’ve ever seen has a small amount of fun, sexy work, and a large amount of somewhat boring work. If all of the staff were 20%ers , we’d have a constant battle over the fun work. I need people on my teams who are happy doing the less exciting work.
The 80%ers I’ve worked with match your description. This is not geeky fun for them, it is a job. They are smart and capable people, it’s just not a hobby for them.
I don’t see any controversy — we all think we’re in the 20%anyway 😉 — except for the fact that the theory was raised to explain the failure/early slow acceptance of SVN. There was a much simpler explanation for that: 1.0 version of SVN really was crap!
The 20/80 ratio is overused and ultimately wrong in this case.