The Two Types of Programmers

It’s a wonder most of the commenter’s can get anything done without any generalizations.

I see no point where Jeff, or more precisely the people he is quoting, make the 80%ers out to be idiots or lazy. They’re pragmatic. Nowhere does it say or pretend that’s a bad thing. What it does imply is that such a minimalistic pragmatic approach as seems to be the norm has prevented some of the really useful stuff like source control from becoming widespread.

I would say I am one of the people that fall somewhere in between (though perhaps because I’m still a student) but in the world of sweeping statements that we live in that doesn’t devalue the fact that there is such a prominent divide between those that pursue the bleeding edge and those that want to get things done and that there is little bridging in-between, leading to a world of (yes, a feakin’ generalisation) 80% coders not benefiting from the good stuff coming out of the 20%.

I always thought “vocation” ment a career which you persue for more than just money i.e. for love.

I know wikipedia is hardly the most reliable source, but:
http://en.wikipedia.org/wiki/Vocation

I feel this is just generalization.

To make whipping cream, you take the top 1% of cow milk.
To make coffee cream, you take the top 5% of cow milk.
etc.

This 20%/80% frontier is out of nowhere. The only conclusions I can make are:

  • More developers are focused on business coding than hobby coding
  • More developers are spending their free time on something else than computers
  • With time, most developers move from the 20% you described, to the 80%.

I think what you describe is the simple fact that some people are more {adjective} than others. For developers, {adjective} can be:

  • Talented
  • Curious
  • Intelligent
  • Versatile
  • Cartesian
  • etc.

It’s not black and white. You probably see the frontier depending on where you sit on that line, and it varies depending on the adjective you’re looking at.

Personally, I’m part of the 20% AND the 80% you just described, and this post did not reach me.

I’d like to start off my saying that you do a great job. Long time listener, first time caller.
I think you’re trying to generalize a little too much here. I’m interested to find out how you came up with your figures (20/80). I have a little trouble categorizing myself. Neither category really fit me.

Allow me to start with the 20%ers:
I don’t write compilers or study new programming languages on the weekends. Nor have I really had the time to contribute to open source. When I get home my job is to successfully manage a family and raise two children. I am very interesting in new technologies and try very hard to keep up on them. I have been toying with Linux and UNIX for years.

Now the 80%ers: "They’re not stupid; they’re merely vocational."
I am entirely self taught. I have received very little formal training. I took my first programming position when I was 17 years old (about 10 years ago).
"They use whatever tools Microsoft hands down to them"
Currently I’m using VS.NET (C#/ASP.NET) almost exclusively. When I started programming however it was not in Visual Studio.

Honestly I don’t consider myself part of the ‘programming elite’. But I hardly believe that I fit into the 80 percent category. Maybe this topic requires a little more research, or it’s possible that I am over analyzing this a little bit. Either way, keep up the good work!

The problem with the 80%/20% statement is that it is such a narrow perspective. The 20% mindset is cool to have but it is usually limited to specific things. To be more useful at work we need to be those 20% in many areas of work, and that hardly ever happens.

So is there any way fix this? Build cross functional teams that have broader skill sets and interests. If you are lucky, then you can get something useful going on. Build 20% teams, and you might be able to build a 20% organization.

You said:
It makes the divide between the open-source and Microsoft camps look like a shallow ditch.

Why purpetuiate the us vs them mentality. Exspecially when you regualarly attend Microsoft events and even work for a .NET shop but still use open source tools like so many of us who don’t belong to these made up camps. I thought it was just a bad stereotype the fringe tech snobs used to make themseleve feel more important. Please avoid fiction and stick to the facts.

Josh
.NET Developer
SVN user
NUnit user
Python user
non tech bigot

Not that I agree with the original premise, but it’s interesting to read the comments in here from the presumed 80-percenters annoyed that they are labelled 80-percenters, yet filling all the characteristics laid out. If you profess that you aren’t THAT into computers and you have a family that’s important that takes up your time and Linux is for nerds, YOU ARE AN 80-PERCENTER. Not that there’s anything wrong with that!

The problem people are having with the post is that it has an “I’m better than you and untouchable” tone to it. The Linux author and Olympic runner have performed impressive feats, yes, but that doesn’t mean that either one is untouchable - they make mistakes as well, even in their profession of choice.

I think everyone has run into the programmer who pounds his chest on past accomplishments when arguing over a technical issue, even when that person is obviously wrong - I just got that feel from this post; do not question the 20%, we know what we’re talking about, and you do not!

I whole-heartedly disagree with there being only 2 types of programmers. Having much of the “20%” and much of the “80%” proves that. I’d bet I’m not alone, either.

For example:
– I’ve never learned or installed linux, however I write lots of code on the weekends “just for fun”.
–I’ve never participated in an open source project, but I do keep aware of the latest, coolest new trends and programming tools simply because I love this stuff.
– I have worked for government IT and never got a development-related degree, but over 1 million people have seen and been directly involved with my software.
– I use whatever tools Microsoft hands down to them, EXCEPT for SourceSafe. I (we) use SourceGear Vault, based on my recommendations.
– I’m far beyond “vocational” - I live and breath code.

As you can see, I don’t fit either camp. I think Ben Collins-Sussman has created 2 pigeon-holes, and given supporting evidence of how developers can be stuffed into one or the other - that doesn’t mean that there are only two types, only that he (and anyone agreeing with him) has chosen to label them as such.

Seems to me you have previously posted about certain developers having a problem with communication. And the notion of users actually using the programs we write.

So what percentage of your 20% actually care about getting anything out the door? And it being usable? And are able to communicate with the rest of the team, management and customers?

I suspect I am in the 80%, but I’d far rather work with someone who takes the time to write something in 10 lines and comment it, than a whiz-kid who does it all in a for-loop, and leaves commentless because it’s ‘obvious’.

I try really hard to be the 20%, but I have a family now, and spending time with my wife and daughter are much more important to me than installing Linux at home. That said, I’m not the 80% that’s just doing it for a job. I care about programming and learning new things, but not to the extent that I’ll push my family away for it. That’s just craziness in my eyes. Not a good post today, Jeff, and I’m usually a big fan.

Nice post, i really like this website. I would have to say that I am both 20%er and 80%er. I really love a lot of the stuff that falls under 20%er and then there are those 80%er bits. But thanks to my classes (I am a student right now) I am losing a bit of the 80% parts. I may confuse my friends and girlfriend, but it sure is fun… speaking of learning programming languages on the weekends I need to find a good book when I get home… I need to learn a new one.

I often think we’re wasting our time writing blogs which are largely read by the same 20%.

Why is that? Something doesn’t have to appeal to everyone for it to be entertaining and/or thought provoking for some. If you can’t get every programmer to read you blog, there’s no point in blogging? I completely disagree with that.

Programmers are already a minority of the world. What’s so bad about only reaching a minority of that minority?

So true. Nice to read something that I’ve been saying to friends recently after spending a couple of decades discovering it, and being surprised by it. I guess it all started when programming went from being a geek pass-time to a bona fide “good career”.

Bound to happen when you think about it, although I’m still constantly surprised when I come across the 80%ers and discover that they just don’t care about the things I do.

Some other comments:

Shocking statement #1, is a bit redundant isn’t it?
"Most of the software industry is made up of 80% programmers."
Ummm, well actually 80% is made up of the 80% programmers, by definition, no?

I admire the selfless teachers reaching out, though I don’t see the point of reaching out to the 80%. Bear in mind that that 80% are happy in their high-paying, relatively interesting jobs, and don’t want to learn Lisp on the weekend. The altruistic spreading of the gospel is really worthwhile in that it’ll catch the attention of budding 20%ers - those that would become programmers, but didn’t know what it was really all about. Those that will be truly excited to discover what they can do. Those that will, 15 years from now, discover the 2 shocking facts and realize they’re part of the 20%

It is a bit silly to argue over an obvious rhetorical device. I am quite sure that Jeff has not done a statistical study and determined that 80% of developers are followers while 20% are technical leaders. Using the terms of the 80/20 rule is a handy and effective choice, given that most of us familiar with it in terms of the effort required to to finish a project (one common version states that it takes 80% of the effort to complete the final 20% of a project). The 80/20 split carries with it an implication of the larger, easy part versus the smaller, more difficult part.

The underlying claim is that most professional software developers fail to show a threshold of passion for their craft. They go through the motions, but do little more. I do not believe this to be true. I generally agree with Mr. Atwood’s observations, but this sort of thinking is part of the greater problem. I am tired of the constant comparisons we make in hopes of ranking ourselves. Software development does not have to be a competitive endeavor. The challenge is to ship good software, not to somehow “beat” the guy in the next cube. I have found that I do my best work in an atmosphere of openness and cooperation, where my suggestions regarding the work of others are not viewed as attacks by defensive coworkers, and my own mistakes can be freely acknowledged without fear that someone will go “one up” on me. I have experienced this sort of a work environment only intermittantly over the past several years, though I believe that I may be close to it in my current employment.

If we’re really counting, there aren’t two groups, there are four:

http://www.robbyslaughter.com/musings/the-four-sided-civil-war/

But that’s not really the issue–the question is what percentage of software engineering is done by amateurs who think they are professionals. There’s nothing wrong with being an amateur—everyone starts at the beginning—but we don’t let people whose only qualification is that they leafed through a few books do brain surgery, design bridges, or organize the Superbowl. There’s more to writing good software than being able to sling code. I’m not interested in whether or not you live and breathe tech and write Linux drivers blindfolded for fun, I just care whether or not you know what you are doing.

It seems like most people don’t. In our industry, that’s easy to get away with.

At my company, on the projects I’m involved in, I’m always the technical lead. So, if I’m in the 20% camp, I should be the guy that strives for implementation purity, etc., etc. But I’m not that guy. Our small company can’t afford those guys, because we wouldn’t finish the project. Instead, what usually happens here is that the “perfect implementation” cries come up from those who are in the 80% camp, because they don’t really have a dog in the fight as far as actual project delivery goes. “If it’s late, it’s the project manager’s fault, or the tech lead’s fault” So, I usually end up being the guy who decides when and where to compromise down from the perfect design and implementation – so we can get the job done on schedule an within (or at least close to) budget. Does that make me an elite 20 percenter, or an unwashed 80 percenter?

I agree with others, it’s much more complex than two categories…

Yeah, unfortunately you put a bit too much truth in this post for many of your readers, Jeff. I’d say that sometimes I fall in the “20%”, but most of the time I’m in the “80%”. Ideally I’d like to be in the 20%, but I suffer from a lack of time and motivation. Thinking honestly about whether I can or want to be the type of person who is in the 20% is a pretty confronting exercise.

People who get uppity about semantics and exact percentages of the divide or attitude are missing the point. We’re not talking about being l337 among our peers, having the most broad technical skill coverage or “getting REAL projects done” ™. We’re talking about a mindset that says “I wonder what I can do with X”, “Wouldn’t it be cool if there was a way to Y, I’m going to try and nut that out”. Like the quote from Ben called them: “the leaders, trailblazers, trendsetters”.

Maybe people should stop thinking about it as “the top 20% and the bottom 80%”. There’s plenty of GOOD REASONS to be an 80%er. Other commitments, lack of interest, etc. Programming is not some higher form of life that we should all aspire to. There’s nothing wrong with having other stuff define you.

However, if you’d say you’re passionate about seeing innovation and excellence in software development, yet would honestly put yourself in the 80%, maybe its time for some re-evaluation (either of your passion or of the way you spend your time).

Sorry if I seem pretentious. I just feel like some people have missed the point of the original post. Of course, I’ll probably be proven wrong in a couple of posts’ time. :wink:

you forgot one thing, jeff:

http://nibblesnbits.blogspot.com/2007/11/other-40.html

open-source + enterprise = rejection
fanboys + open-source = possible unemployment

Well this one shook the beehive.

Apparently there is this third group, who have thought they might like working at google or fogcreek. Then, each for their own reason, they decided it wasn’t worth it. It wasn’t worth it, because:

  • “I don’t need linux/mySql/etc., I like MS tools; let read ‘CLR via C#’, instead”
  • “I have a family”
  • “I would rather be gaming”
  • “sex linux”
  • all of the above