Contrary to myth, there aren't fourteen types of programmers. There are really only two, as Ben Collins-Sussman reminds us.
There are two "classes" of programmers in the world of software development: I'm going to call them the 20% and the 80%.The 20% folks are what many would call "alpha" programmers — the leaders, trailblazers, trendsetters, the kind of folks that places like Google and Fog Creek software are obsessed with hiring. These folks were the first ones to install Linux at home in the 90's; the people who write lisp compilers and learn Haskell on weekends "just for fun"; they actively participate in open source projects; they're always aware of the latest, coolest new trends in programming and tools.
The 80% folks make up the bulk of the software development industry. They're not stupid; they're merely vocational. They went to school, learned just enough Java/C#/C++, then got a job writing internal apps for banks, governments, travel firms, law firms, etc. The world usually never sees their software. They use whatever tools Microsoft hands down to them -- usally VS.NET if they’re doing C++, or maybe a GUI IDE like Eclipse or IntelliJ for Java development. They've never used Linux, and aren't very interested in it anyway. Many have never even used version control. If they have, it’s only whatever tool shipped in the Microsoft box (like SourceSafe), or some ancient thing handed down to them. They know exactly enough to get their job done, then go home on the weekend and forget about computers.
As I work with teams of programmers in the field, I'm consistently struck by the yawning abyss between that 20% and the rest of the world. It makes the divide between the open-source and Microsoft camps look like a shallow ditch.
Shocking statement #1: Most of the software industry is made up of 80% programmers. Yes, most of the world is small Windows development shops, or small firms hiring internal programmers. Most companies have a few 20% folks, and they're usually the ones lobbying against pointy-haired bosses to change policies, or upgrade tools, or to use a sane version-control system.Shocking statement #2: Most alpha-geeks forget about shocking statement #1. People who work on open source software, participate in passionate cryptography arguments on Slashdot, and download the latest GIT releases are extremely likely to lose sight of the fact that "the 80%" exists at all. They get all excited about the latest Linux distro or AJAX toolkit or distributed SCM system, spend all weekend on it, blog about it… and then are confounded about why they can’t get their office to start using it.
Perhaps not shocking to me, but an excellent and important reminder for everyone, nonetheless.
I often think we're wasting our time writing blogs which are largely read by the same 20%. In my experience, there's precious little trickle-down effect from the alpha programmers to everyone else. And if there is, it takes decades. If you really want to change the software development status quo, if you want to make a difference this year, you have to help us reach outside our insular little group of alpha programmers and effect change in the other 80% of the world. And that is far, far more difficult than preaching to the converted 20%. It's why I admire people like Scott Mitchell so much, because he understands the importance of reaching out to the other 80%:
I like programming and really enjoy ASP.NET. I think it's neat and fun and interesting and cool how you can go from literally nothing to having a data-driven web application that can be used by people around the world in an amazingly fast amount of time. Furthermore, I want to spread that enthusiasm to folks. I want to say to those who may have never programmed, or to those who are using competing technologies, or to those who are just starting out - "Come over here and try out this ASP.NET stuff. Here, let me show you what it can do!" That's why I teach (which pays pennies compared to consulting). That's why I write (which pays better than teaching, but still is not anywhere near as lucrative as consulting). That's why I give free talks at local user groups and community-sponsored conferences here in Southern California. To get the word out!To me, saying that titles like Teach Yourself X in 24 Hours cheapen the craft is tantamount to saying, "Our club is full. Go away." It's not saying, "Let's welcome the newbies and get them excited about this technology." Rather, it's saying, "Newbies are ok, but they must first realize how hard this is, how hard we've worked, and how much more we know than them." I worry that such sentiment from the community will come across as pompousness to those very people whom we should be welcoming.
I wish this was easier for me, because I agree with Scott. I'm terrible at the things he's describing. I think the true measure of success isn't how many alpha geeks you can get to pay attention to you. It's how many typical, average programmers you've reached out to, if only in some small way. If you really care about the craft of software development, you'll help us build that bridge between the 20% and the 80%, too.
Update: This was a controversial post. See my followup to this post for further explanation.
I like to think I'm one of the 20% developers, though the longer I spend in the industry the more my enthusiasm is drained and I'm drifting towards becoming one of the 80% developers.
JonC on November 26, 2007 2:07 AMnice post!
it made me realize which category i belong to...
There are really only 2 types of people in the world: those who make ridiculous generalizations... and those who don't. I love your writing Jeff, and what you have here is one of the best written crocks of poop I've seen in a long time.
That reminds me: If I was a pie... what kind of pie would I be????
I think the two shocking statements you posted are great. Especially number 2 is something every frequently read blogger should understand.
What bugs me a lot about the 80% people is that they think they can get away with THINKING they know 'just enough to get the job done'. Actually, they don't know enough, they often lack understanding key elements of software engineering and worse: how to apply them in day to day work. Software engineering isn't like pushing paper: it's a profession you have to feed with new knowledge and wisdom every day, because what we know and understand today is just the top of the iceberg. If you don't do that, if you think that at 5PM you can go home and stop thinking about software engineering, you will end up as a human code generator, which are by definition worse than a computerized code generator. Oh and more expensive.
Frans Bouma on November 26, 2007 2:45 AMGreat post, and very VERY true in my experience of college and industry to date. I am firmly in the 20%, which is a bad thing for me because I grow frustrated with management and colleagues frequently, but it is a good thing for me because I am driven to learn new things constantly (which is always possible in this industry ;-), therefore I can command larger salaries and positions of more responsibilty than my 80% peers.
john on November 26, 2007 2:50 AMShocking statement #(n+1): 80% of the 80% believe that they belong to 20%.
IMil on November 26, 2007 3:03 AMI'm normally an eighty percenter but I'd say about 20% of the time I'm a twenty percenter, getting all computery of a weekend about once a month "just out of interest". But then the football comes on...
I guess I'm just a wannabe twenty percenter :-(
Phil Bathe on November 26, 2007 3:04 AMWhile I truly hope that there are some of that 80% that will read this post, for the most part that 80% doesn't care what is going on in the software world around them, only how much they are getting payed next Friday. However, if anyone can do it Jeff, you are the man for the job. Yet another great article, and posted at 2:00 in the morning no less.
Will Pall on November 26, 2007 3:12 AMactually, the proportion is 10/90 ;-)
kenji on November 26, 2007 3:12 AMI'm probably an 80%-er. I'm very passionate about my craft, but I'd rather play a video game than really do serious research especially over a weekend. Programming and research is for the weekdays. Life is too short. :)
Steven Rogers on November 26, 2007 3:16 AMAre the 20% you are referring to, the people you see in the Hackers Movie? O.o
OMG!!1oneone!!1 I am so uber 1337 and you suckzorz!!11oneone!
Good post btw..
Although, I have to wonder.. If the 20% change the software development status quo, how is it they do that?
Is it by someone coming up with some paradigm shift? - because we have that now and then.
Or is it by writing a completely new programing language?
ja, me too, me too! i'm also a 20 percenter cause i'm so clever!
seriously, i removed codebetter.com from my google widgets cause of this 'inspirational hogwosh'.
personally i find technical write-ups much more rewarding, u can marvel at the effort put into them, makes me want to study all the harder.
eryn on November 26, 2007 3:20 AMAs an avid reader of your posts, I was shocked at the narcissistic nature of this one... the elitist tone of your post certainly does nothing to help the "bridging" cause you are suggesting.
biscuit on November 26, 2007 3:21 AMI really feel sorry for those 20%. Yeah, it's cool but there's so much beautyful things in life besides C++. Also, many 20 procenters are useless for their companies because they like to experiment too much which makes its software unpossible to maintain. I presume that there's only 1 percent (or even less) of those who really mean a difference.
ozapa on November 26, 2007 3:21 AMI'm trying to jump to the 20% side, but it lately feels a lot like a vertical climb.
Ironically some of it can be made easier by doing something the 80% wouldn't do but the 20% did a long time ago -- like talking about new language features out of your own volition.
I'm doing that in a few days (talk about C# 3.0, that is) and it helped me tremendously already -- because I had to learn new stuff like lambda expressions, for example, has already expanded my horizons.
Jon Limjap on November 26, 2007 3:24 AMI disagree with the two types. To pigeon-hole EVERYBODY into two categories is a 'crock of poop' as so wonderfully described above.
I like to believe I fit somewhere in the middle. I've never used linux (though I plan to do an install within the next two weeks). I've never written a complier or even really know how one works. I don't contribute to open source projects.
However, I do try to read source code for a variety of apps on sourceforge to get an idea how things work, and how people write. I have programmed in Lisp. I participate in blogs and forums that are programming related. I study the basics of a variety of languages to get a feel for them. I'm also in the design stages of developing a system - on my own - that I hope (but sincerely doubt) will be used by thousands of people around the world.
I'm still in Uni, so maybe I'm a few years away from fitting into one of either group. I'm fairly passionate about my work but not to the point of obsession as with some.
So my point is.. you list hardcore programmers and slack asses. What about the happy median that most people in all forms of work fall into? You don't generally fall into agreeing with ideas so simple minded. I find you very analytical most of the time. Long weekend?
`Josh on November 26, 2007 3:26 AMPersonally I would say the bias is more like 99% to 1% ... or at least the other 19% are keeping very quiet and pretending to be in the 80% group for a quiet and peaceful life ... evangelising anything can be damn hard work.
Every little success I have in helping somebody 'get' unit testing, or agile, or IoC... or any other damn little victory ... is what makes my job satisfying.
I'm a Software Engineering Student at the Netherlands, and I completely recognise your post in my class. Most of the students haven't wrote any code before they went to this college. Now they're programming just the minimum to get a barely high enough grade to get their diploma in 2009. Most of my fellow students have never ever touched a PC or server with Linux or even a 16bits OS like MS-DOS with a minimum of memory, they don't care about memory or CPU usage, usability is something for hippies and writing documentation isn't necessary. They are in the "programming is fun" phase, but I'm afraid that they'll not reach the "programming is fun, especially if you deliver some great piece of software to your customer" phase before they get their diploma.
I think that someone which is truly enthusiast about his (future) job must try to practice it in his spare time. My dad was a carpenter, and he built several things before going to the carpenter school. An old classmate wanted to be a farmer, so he worked at a farm at his spare time.
It's the same with Software Engineering, at college they teach you just the basics about programming, designing etc.. The teachers expect you to practice in your spare time by creating little applications, reading books, etc. If you do that, you're in the 20%, else you're just a regular 80% guy.
(Monday morning + not enough hours of sleep = crappy English. Sorry)
Alex Kamsteeg on November 26, 2007 3:36 AMWell I'm not so arrogant as to believe I'm in the top 20%, but I certainly like learning new things. The 20/80% idea is rather simplistic so I'd say things are a sliding scale.
Paul on November 26, 2007 3:42 AMEither IMil is right (about 13 posts above me), or I would say there are at least three categories: the 80%, the "amateurs" (those who blog and also are quite informed on general tech news, but not really advanced; on their blogs they most often comment some news and teach quite basic PHP and CSS tricks) and the true 20% (the ones who fit Ben's description and also are remarkably productive).
Daniel Luz on November 26, 2007 3:42 AMSo there are no 20%'ers using the tools MS hands down?
There are no leaders, trailblazers or trendsetters using VS.NET, SourceSafe or who have never touched Linux, or who have never contributed to an open source project?
I find it arrogant to associate the tools of the developer with his or her skills. Is a hammer better than a screwdriver?
Micael Baerens Hannival on November 26, 2007 3:56 AMA project team with 100% of such 20% people. Good luck with the delivery.
As far as generalization go , I 100% believe that 90% of people from 80% category have attempted to install Linux in 50% of their 'I want to try something new' moments. So there is 30% hope. Go figure.
Hmmm on November 26, 2007 4:05 AMIf you manage to turn some of the 80%-ers into 20%-ers, the scale would be more like 79%/21%. This would cause chaos.
Azz on November 26, 2007 4:16 AMBah. There are 11 types of programmers in this world. Those who understand binary, those who don't, and those who think that this is an incredibly lame joke.
Jivlain on November 26, 2007 4:19 AM"[...] there's precious little trickle-down effect from the alpha programmers to everyone else. And if there is, it takes decades." - So at least the insights of pioneers like Dijkstra, Parnas and Wirth should be known by now. (Wishful thinking)
Regards,
tamberg
"There are really only 2 types of people in the world: those who make ridiculous generalizations... and those who don't"
hahahah, excellent boo!
And seriously, I don't care about compilers or Linux (sorry, but editing config.sys files is so 80) and I try to never work on weekends, but I'm very passionate about my profession (just like the other reading this blog IMHO)
Edddy on November 26, 2007 4:26 AMIs there a definitive test to figure out if you're in the 20% group? I guess I'm also a wannabe, now that I think about it. I would also rather play video games on the weekend or spend time with the family than install some O/S or learn a new language. Meh.
Luis on November 26, 2007 4:28 AMI'm a big geek and have spent my whole life growing up with computers, really feeling a draw to them and waiting to understand and work with them.
These days I'm realising that computers are just another tool or item like a car or TV and that this is how most people treat and look on them as such.
As my career and life moves on the techology becomes more abstracted and the people and problems to be solved become more important. I see computers more now as something to be shared and taught, rather than a skill to hold over others.
Peter Bridger on November 26, 2007 4:33 AMWhile I believe the 80/20 rule is a bit too simplistic in this case, it does get the point across and agree that the '20%' should attempt to pass down some of their skills to the '80%'.
It's a bit like optimising code - a 10% gain in the 80% is generally better than a 10% gain in the 20%.
I'm sorry but "installing with linux and contributing to open source"
is NOT what defines the "20%".
What it describes is the 20% who have trouble communicating with humans, are introverted and unwashed. Have strange stutters and comb overs. Don't know how to talk to women. Believe that archaic command line interfaces are macho and superior in every circumstance. Think swing is the pinnacle of windowing systems.
See? We can all make sweeping generalizations (except mine is true ;))
JackU on November 26, 2007 4:39 AMUsing SQL Server 2000 linked servers floating point notation isn't the ratio 80.0000000000122334% vs 19.99999999999987721%?
p.s. why do I keep having to type ORANGE in? - especially after Jeffs CAPTCHA posting the other day ;o)
Steve on November 26, 2007 4:41 AMAnother vote for crock of poop. Probably the poopiest post of the year. I work in a firm of 80 percenters. We don't write Lisp compilers at the weekend, etc. Frankly I prefer to spend the weekends with my family, and going up my allotment where I grow vegetables. My eyes can't take more than 8 hours for 5 days a week in front of the screen.
Yet despite being in the 80% we are professionals, know what we're doing, read books and blogs, use Vault or Subversion, attend DevelopMentor training courses, have Linux on VMs on our home machines (in some cases), and are interested and passionate about programming - especially about C# and .NET. The moment VS08 was released we were requesting our IT admins to download and install it for us. And we do think about our jobs over the weekend - even though we may try to switch off. This does NOT classify us as 20 percenters. We are not leaders, trailblazers and trendsetters.
The attitude of the likes of Ben Collins-Sussman and Frans Brouma strikes me as being terribly arrogant and rather blind.
I think someone already said this, but I wonder how many of the 80% actually think they're in the 20%. I think I'm in between the 2 - I have the skills and experience of someone in the 80% bracket, and the enthusiasm and inquisition of the 20%. So I guess there's 3 types ;)
Jasper on November 26, 2007 5:06 AMI gave a small presentation the other day about orders (as in associations) in informatics and their control and something that I called global misalignment (where the misalignment is about schools, enterprises, people and the others, or basically what you talked about in your post). Personally I think that we need laws and control to help realign everything and create a climate of understanding that will help build a more regular world in informatics. I think we could compare that goal to what exists currently in engineering, medecine or law.
loki.jf on November 26, 2007 5:17 AMone more vot for putting people in boxes.
If i go by the description i'm in the 0% between the 80% and 20%
because I'm definetly not in the top 20% but also very definetly not in the bottom 80% so that's what boxing gets you.
A very big population is falling in the 0% if I have to go by the comments posted here.
Jeff I think you manage to write for both audiences. I try and write for the 80% because so much of the documentation and articles out there just skip over assumed knowledge and we aren't going to grow our little community if we don't bring in new people.
That and I would prefer not to inherit the code from an 80%er
Scott Cowan on November 26, 2007 5:24 AMI have to agree with most of the posters right now Jeff. This article is a super biased, "look at me" pile o' shit.
whocares on November 26, 2007 5:25 AMThis also goes along the line of having passion for your craft as well.
I think that the 20% obviously have the passion where as the remaining 80% just think of it as a job.
I posted something similar to this about Why Programming is Fun! (http://www.dcs-media.com/desdev/opinion/why-programming-is-fun.aspx). :-)
Hope I contributed a little thinking to this great post.
Yup, I don't see myself in either of those two groups.
I know about Linux, have dabbled with it, but in the end it's too much effort for very little pay off (in terms of work done and productivity) except meaningless bragging rights.
I work on weekends and long hours when needed, read books and blogs about my chosen specialism in my spare time, but I couldn't give two hoots about the benefits of one compiler over another, or one source control system over another. Use what you feel happy with, what is availble or what gets the job done.
I'm good at my job, like to learn new stuff and keep on the bleeding edge. But I'm also all about getting the job done in the most practical, simple and elegant way I can in the time available.
In the end, I'm a pragmatist. Can I have a special group of my own, please?
Seems like the list of 14 is more useful than a list of two.
Andrew on November 26, 2007 5:29 AMI'm going to install linux right now..
Jonathan on November 26, 2007 5:29 AMWhat total and utter crap. I'm certainly not an alpha in the 20% but I'm just as certainly not in the 80% vocational. You make the 80% out to be lazy idiots!!!! I enjoy programming on weekends...if I have time between family commitments, source control is great (I just hate Perforce which is what we use at my place) I love computers. In what spare time I find, I enjoy learning how to use XNA, I respect and play with Linux occasionally but find no real use for it in my day to day given my job and family needs.
You and this Ben Collins-Sussman seem to think anyone in your "80%" list are stupid lazy idiots just in it for the money. Some of us are to be sure, but many of us are like me...in it for the love of computers but not willing to sacrifice having a life. You need to get off your high horse and stop looking at the world like it's black and white.
The arrogance in your post today reeks, it's very disappointing.
Whatever you call the elite and the unwashed masses, I am firmly in the latter category, but I'm not defensive about this. There are far too many innovations at every level of software design for anyone to keep track of more than a handful of them, so the distinction is more accurately "do you know the trendy stuff or not?" than "are you a REAL PROGRAMMER or not?"
I don't, or am not, and I am fine with that; I was a biology major who stumbled into programming. While I would love to be part of some truly innovative group, I require the stability of a job that will pay my mortgage for the time being.
I don't think the language or source control choice is what's important, either; what's important is whether or not the developer is creating something that really makes a difference to the end user, whoever that may be. Twitter may be entertaining, but I have absolutely zero interest in it, and I am not remotely sad that I didn't develop it. I am a little sad that I didn't think of Google Maps.
jwer on November 26, 2007 5:34 AMIs it really so easy to generalize? Also, is being in the so called 80% really that bad?
I've been programming since some time now and I feel everyone of us need not be an 'astronaut'. Also from my own experience and of others I can say that many of us shuffle between these two 'types' depending on a lot of factors.. especially the work assigned!
An important thing for us to realize is that we work in a "knowledge" industry.
I do believe there are two different types of programmers, but I'd describe it thusly: there are those who decided to do it as a job, and those who were born to do it as their life. The difference is huge, which is to be expected; someone who has programmed for almost their entire lives will, obviously, be better than someone who rocked up to college at 22 and decided he wanted to be in IT for the money.
However I find the other assertions in the quoted sections to be crap. Does coding directly in vi on a Slacwkare distribution somehow make you superior to people who use Visual Studio? Sounds a lot like the "I only write web pages in notepad cause I'm hardcore" bullshit. Anyone using notepad to code is an idiot, and the expressed sentiment is the same as the anti-MS stuff: nothing more than masturbatory arrogance by small minded people.
Dave G. on November 26, 2007 5:37 AMI do think there is overlap and so the 80/20 split doesn't hold. Personally I do internal company work, but I also like to dabble with writing compilers, and I was running Linux in the mid-nineties.
The split I see is between people that are interested in the technology and want to do a good job vs. people in the industry that never learn, take the easy way out, and generally just weigh down the rest of us. The number one person on this list is the guy who hates version control. Second guy on the list is the argumentative guy with the associates degree that doesn't even know enough to know why he's wrong.
Erik on November 26, 2007 5:42 AMI also want to counter the claim in here that you can't have a life/can't talk to girls and be a rock star programmer. Some of the coolest people I have ever met were at a Java conference. Some people are just plain better and can do it all. I am not one of those people :-(
Erik on November 26, 2007 5:45 AMWhat change do you want to effect exactly, Jeff?
Also, where can I find some of your elite 20% code?
Will on November 26, 2007 5:47 AMI think I spend entirely too much time studying new technology and need to cut back but at least I don't write lisp compilers. I've always thought too much intellect has it downside but few intellectuals will admit to that.
All your math jargon makes me smile, n+1??? I prefer practical matters like a regular expression to strip the styles from a Word document saved as HTML.
Robert S. Robbins on November 26, 2007 5:48 AM"...Anyone using notepad to code is an idiot..."
- Dave G.
Interesting, apparently the 80% have the same problem as the 20%.
David on November 26, 2007 5:52 AMIn my experience, alpha geeks are dangerous on projects that need to be finished on time and budget - the project risks drowning in endless discussions on purity of implementation of a design pattern or some other unimportant stuff that always takes precedence over delivering the project.
PS: I don't give a damn about Linux and I don't participate in open source projects as my time is too expensive to work for free. When I write something for fun I sell it as shareware. :) And even despite the fact that I almost don't code on the weekend, I reckon, I'll be in top 20% easily. :)
I have to agree with the people who call this a crock of arrogant poop, because of the sweeping generalisations.
Firstly I very much doubt that this is an 80/20 split. Do you really believe that one out of every five programmers are trailblazers and trendsetters? 5/95 is more likely.
But more importantly I really don't understand why Ben and you think that only those trailblazers care about what they do. In my world there is quite a lot of space between "just good enough" and "trailblazing".
And I'm quite sure that you wouldn't say a similar thing about another profession. Do you think that your doctor takes less pride in her work because she is not a cutting-edge scientist? Or that your plumber cares less about his craft because he doesn't spend his weekends playing with pipes and taps?
I am not ashamed to say that I am not a trendsetter or a trailblazer. And I do write internal applications for a bank. And I do not spend my weekends installing Linux. I have other hobbies apart from programming, and I have a family, and - believe it or not - I'd rather spend time with my daughter than install Linux. (I imagine it's a lot easier to be a trailblazer when you can lock yourself into a room and let your wife take care of house and family - not an option I have.)
But this does not mean I and others like me don't care about doing our jobs well. Just as Andrew Webb says above, we attend training, we use source control, we keep up with the news, we care about good design, and we do our best to write the best code we can.
Helen on November 26, 2007 5:59 AMIt'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%.
[ICR] on November 26, 2007 6:00 AMI 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.
Martin Plante on November 26, 2007 6:09 AMI'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!
Josh on November 26, 2007 6:14 AMThe 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!
Erik on November 26, 2007 6:33 AMI 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'.
Ben on November 26, 2007 6:39 AMI 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.
River Chance on November 26, 2007 6:40 AMNice 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.
chiefbutz on November 26, 2007 6:41 AM>> 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?
James Justin Harrell on November 26, 2007 6:49 AMSo 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%
foobarb on November 26, 2007 6:56 AMIt 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.
Jim S. on November 26, 2007 6:57 AMIf 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.
Robby Slaughter on November 26, 2007 6:58 AMAt 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...
JK on November 26, 2007 6:58 AMyou 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
You should be ashamed of your generalizations. This coming from the guy who recommends McConnell's Code Complete. You should do yourself a favor and go back and read the Chapter on Personal Character.
If you have that narrow of a view to see the programmers of the world as a 20/80 percent rule and what makes up those rules, you need to get out of whatever area you are in. Get out into the industry and explore the backwoods areas and I think you'll see it doesn't break down as nicely as some 20/80 percent theory.
Chris Drake on November 26, 2007 7:02 AMWhile I disagree with the description of what makes up a 20%'er, I completely agree with the sentiment. It isn't tangible things like use of Linux or open source contribution that defines the border between the 20 and the 80, it's the attitude.
I think what I found most interesting were the comments. People seemed to miss the point of the article and started taking offense to their classification instead of asking how they can bridge the gap. I work with a huge number of 80%'ers, and I am frustrated by my lack of progress with converting them. I agree, I sometimes forget that they don't want to become part of the 20%, but I believe that they do really want to excel at their jobs. Being part of the 20% would do that. Any tips on how to help make that transition.
Josh on November 26, 2007 7:07 AMThat description of the 80% folks ("not stupid, merely vocational") does not match my experience at all. Sure, there are some programmers like that, but I think they make up the bottom 20%.
In my experience, the middle 60% are people who aren't programmers by primary vocation; they are engineers, secretaries, rocket scientists, accountants, and interns who use computers at their job and discovered they have a knack for it. They're the ones who friends, family, and coworkers come to and ask "Can you fix my computer?" They have no formal training in programming or computer science, they're mostly self-taught. They are very, *very* smart.
The programs they write get the job done, although their code is often laughably bad. Once they see or are shown a better way to do things, they usually laugh at it themselves. They are enthusiastic and learn quickly.
Joe on November 26, 2007 7:08 AMYou seem to have a theme in your posts of "I'm such a great programmer. Everyone should listen to me because what I say you should do is right and everything else is wrong." For the most part this isn't a big deal, it's your page and all, but then you go and make a post like this and I wonder why i bother to keep you in my RSS reader. Perhaps you need to reread the quote from Scott Mitchell that you claim to agree with
'Rather, it's saying, "Newbies are ok, but they must first realize how hard this is, how hard we've worked, and how much more we know than them." I worry that such sentiment from the community will come across as pompousness to those very people whom we should be welcoming.'
Like I said, it's your site and all, but if you are going to complain that you feel like you are only writing to this so called 20%, then perhaps you should figure out why. You might think that you are only trying to educate people, but if so, you'd be writing to more then that 20% because others would be seeking you out as you serve a need. If you are writing to show off how smart you are, then yeah, you're only going to attract those people who also think that they are that smart and want to feel superior.
As much as a joke as my professor meant it, there is a sad sad truth to the comment he made years ago. To paraphrase, Linux got popular in academic and "nerd" circles for one simple reason, MSFT made windows such that everyone could use a computer and the geeky types needed a new way to feel superior.
Blind on November 26, 2007 7:14 AMI think the 80% should be split again into 5% and 75%. 75% would follow the description you gave for the 80% but the little 5% block, which I think I belong to, would be described as 80% but striving to become part of the elusive 20%. I love programming, I like reading about it and doing it, I try to keep up with the latest finds but i find it hard, but i like to think this puts me in a different group to the 80%!
FooHoo
FooHoo on November 26, 2007 7:15 AM80 - 20? I don't think so.
I wouldn't consider myself one of the unwashed 80% that isn't passionate about computers. However, I definitely wouldn't consider myself one of the 20% that dates his computer either.
Maybe the fact that I said that makes me an 80%. However, I know from experience that having a healthy balance of computer vs non-computer interests is far more healthy than spending all weekend on your computer. If I'm an 80% because I don't date my computer well... I guess I'm happy to be the 80%.
This generalization is inaccurate and potentially harmful in my opinion. I think there are far more than two levels of programmers.
Cecil on November 26, 2007 7:16 AMI've never thought of myself as elite (1337) or anything but slightly above average. This post made me think of why I'm in the software engineering 'vocation.' I realize that this is something that I do well and makes me some cash. My heart really isn't into the next greatest thing and that's ok. We 80% are keeping the world spinning for the most part.
By the way, thank you 20%ers that keep pioneering. If it wasn't for you we wouldn't be moving forward. You have my admiration and gratitude.
I don't think you can evenly divide programmers into these two groups. I have known a few people that I would have to squeeze between the 20% and the 80% described above. These people make their bread n' butter money programming internal apps as you mention, and they are the trailblazers inside their organizations. If there are 50+ developers working at a company, you better have some high-end people leading the technical push. These people may just be the same 20% written about above, so maybe I am just being picky with the way this group of individuals is described. But I have meet some very smart, passionate people that program to program, yet have never written a compiler (except maybe CSC 370), have never contributed to open source, and have never posted at Slashdot, but are on the leading edge inside their organization. Yet these individuals are always the ones bringing in the new ideas.
I guess I just look at almost any situation and try to fit a bell curve onto it. The people writing compilers are probably more like 2% of the programmer population, on the far left side of the bell. On the far right there is the 2% that don't know what a compiler is.
Jason Jackson on November 26, 2007 7:18 AM20/80 is clearly an over-generalization.
The more interesting question, which you have written about many times before, is: How do we distinguish excellence from competence, and competence from incompetence, in our field? What are some well-known, measurable, objective criteria?
You've written about fizzbuzz, a good acid test IMO. I use many others, and I'd like to hear your view on more.
John Pirie on November 26, 2007 7:19 AMIMil:
I believe I am part of the 64%
But to tell you the truth, I spend tons of time learning various technologies, but I never apply half of them for commercial applications. Hell I'm happy with the drag and drop nature of todays world. I started with VB 4 on Windows 95, the moved up to VB.Net and then to C# with short weekend affairs with various languages on the way. I still play with linux (mostly just as a web-server, because Visual Studio is just to hard to replace), but I still have never done any of the uber-geek things that 20%-ers do... So I am stuck in the 64% area, thinking I CAN do that, but I DON'T do it.
Jeremy on November 26, 2007 7:22 AMI've noticed this divide (maybe more of a gradient than a clean line) is true for all other disciplines as well - for instance: business analysts, project managers; even artists. You are really just describing top performers versus the pack. Great read though, as usual.
repoman on November 26, 2007 7:24 AMI dont like the way you describe the 20% as 'leaders, trailblazers, trendsetters' because they generally are not. The top programmers I have met (10 years exp) have been people that are extremely intelligent hardcore programmers who can code something well and produce a solid system that has been well thoughtout implementation but these people are almost never leaders, or trailblazers or trendsetters. They are extremely good programmers who know their technology and perform their part well. They can be difficult to deal with but when you have their respect and they have room to work freely, they can be invaluable, but not in the ways you described.
The generalization is terrible and a poor showing for you.
Two points. Preface: I wrote one of those "24 Hours" books.
Specifically, the "Teach Yourself Perl in 24 Hours" book. Go look it up on Amazon. Yeah, that's me.
Before I wrote the book, I taught Perl to hundreds of people. I taught it to some people whose "programming experience" was HTML, and those that had 20 years of COBOL programming and needed to get the hell out before Y2K hit. Almost all of them could have learned it on their own, but needed the time set aside and a mentor.
And I'm not one of those "seminar" or "conference" teachers either. Let's get that straight. That's not teaching, that's just lecturing and any charming person with a PowerPoint presentation can do that. I taught small classes 12-15 people each, sitting beside each one of them at some time or another fixing bugs, refactoring code, and pointing them down the Right Road. And I've been teaching programming formally or informally since I was a teenager.
When I was approached for the book, Laura Lemay's "Perl in 21 Days" version had been out there for a while. Selling well. It was shit. (It still is shit.) Awful teaching technique, useless examples, and un-idiomatic Perl.
The 24 Hours thing? A gimmick. A brand. A hook. I re-arranged my lesson plan into 24 segments, re-ordered them a bit, and that was it. In the preface I even tell the reader there's almost no way to actually learn the material in 24 hours.
Better still, months before publication I invited ANYONE on ANY Perl mailing list, newsgroup, or chat channel to tech edit the first edition. (Didn't pay them all cash, but paid some!) I had lots of respondents, lots of comments, and lots of edits. [Notably, there was one fewer than expected, but that's a not-for-public discussion. Buy me a beer.]
Point one: not all of those numbered books are crap. I submit mine as a counter-example. (90% of them are, for sure. But 90% of everything is crap.) But they have such wide exposure, it's a wonderful opportunity to reach a HUGE audience. The book has sold a load of copies and is still selling really well today -- thousands of copies/month, 7 years after initial publication. I get nothing but positive e-mail about it.
Point two: I don't think there's two tiers, I've got to say there's three. The 20%? I'll go with that. The 80%? I'd break that into 70% and 10%. The 70% being those people you described fairly well.
I also think there's a bottom 10% who manage to be completely incompetent, drift from development job to development job, hiding in "training" classes, project startups and shutdowns, department shuffles and absorbing nothing. Their resume says "5 years of experience" but it's the same 6 months 20 times over again. They honestly DON'T know how to program a computer, but manage to stay in the business anyway. I think it's a statistically significant number, especially in larger companies.
In one of my classes there was a giant checklist of debugging tips posted on the wall. One was "Wrong career choice". Some laughed. Some had that suggested to them by me. A few even appreciated the suggestion later. Some didn't take the hint, and eventually had it imposed on them.
Clinton P on November 26, 2007 7:25 AMPart of the problem is the "my kung fu is stronger than yours" attitude a lot of the 20%ers have towards the 80%ers.
PaulG. on November 26, 2007 7:27 AMI'd say there are 3 types of programmers. There is the 80% that are just there to do the job and put in their eight hours a day. Then there are 18 percent that are passionate, competent coders, but they prioritize their lives above their coding and rarely touch it outside of their job. Then there are the elite 2 percent of programmers that love it so much that they take it home with them - even turning away sex for code.
Justin on November 26, 2007 7:27 AMI agree with "crock of poop". Your message is completely lost because of the nonsense of the 20/80 quote. You should just flush that quote down the drain and more people would listen to what could have been a good blog post.
Matt on November 26, 2007 7:29 AMIf I was ever close to the 20%, having a child certainly changed it.
Rich Wilson on November 26, 2007 7:31 AMI hate Linux and find it is worthless crap. Does that mean i'm 80% ? I like things like Visual C#/.net3.5 because they have no need for hardcore developers who are maybe goog at programming, but understand nothing about what a customer wants or needs. You can put someone in the job who does not need to be a "opensource"freak. You can put someone in who gets the job done. And that is the most important thing.
Wolfgang on November 26, 2007 7:35 AMCrock of poop.
I'm as interested and driven as your 20% but unfortunately, I'm not even as intelligent as the 80%. Incapable of learning.
BOBO on November 26, 2007 7:41 AMYou forgot the third type.
The 80%ers that do not have the time/disposable income to spend tinkering with Linux enough to maintain their 20% status. They are current and aware but their research time falls largely within "company time".
Oh.. i forgot one thing: where do you find a programmer who has to work only 8 hours bevore a release date?
Wolfgang on November 26, 2007 7:55 AMJeff, you missed big time with this post.
I'm not a 20 percenter, but I'm not an 80 percenter as you described either. I don't program in Haskell; haven't even bothered to look at it. I had a Linux box for a year or so because people were talking about it, and I wanted to check it out. I dropped it because it was such a pain in the tail to get anything done, and because I write code for a living and none of my employers or clients were doing anything on that platform.
I taught myself to program back in the mid-80's, starting with Clipper. I added C later (again, self-taught) when I needed apps that were smaller or didn't do database stuff. I worked in Visual C++ 1.0 from MS, working on Federal and State income tax forms for a major tax company. I developed a multi-machine build process using Opus Make, PVCS, and 4DOS batch files so that 10 machines could work together to do a nightly build on 386 machines.
I dabbled a bit with Python, because it looked like it might be interesting, but dropped it because, again, there was nothing I could use it for. Same with Perl and PHP; any web development I do my clients want done with ASP.NET. I work in C# on occasion, but not because it's Microsoft; it's because it's what works for what I need to do. I primarily work in Delphi, because it's absolutely hands-down the best and most productive Win32 development environment; I turn out work in days for my clients that other people have struggled for months to accomplish in VB or VC++ or Java. I work on stuff on the weekends when I have time to spare and the interest in doing it.
Where does that fit in either 20% or 80% as you've defined it?
Your post is another example of why idiotic stereotyping is a bad idea, and making up statistics doesn't work. It's a real disappointment coming from someone whose work I've always respected; I would have thought you'd know better.
KenW on November 26, 2007 7:56 AM> I often think we're wasting our time writing blogs which are largely
> read by the same 20%. In my experience, there's precious little
> trickle-down effect from the alpha programmers to everyone else.
Well, don't feel that way. Speaking only personally, I don't really fit in either the 80% group or the 20% -- I'm passionate about my craft, but I don't have the skill of the real leaders. I am, however, trying to get there. Blogs like this one have been very helpful, and have kept me connected with larger development issues, and have given me much food for thought and fodder for further research.
Even when I disagree with you, you make me *think* about many issues that I wouldn't otherwise encounter in my little isolated "80%" shop.
> If you really care about the craft of software development, you'll
> help us build that bridge between the 20% and the 80%, too.
And speaking of disagreement...
I don't entirely disagree with the 80/20 assessment, but I do disagree with the characterization of those classes -- it's pretty clear the idea was created by an "alpha" developer.
The difference between the two types of developer is *not* one primarily of skill -- the skill difference is only a *symptom* of the difference, not it's cause. Rather, it's a difference of motivation. The "80%" programmers got into technology partly because it's mildly interesting (perhaps they even had some talent), but mostly because it's a decent paycheck for a respectable profession.
The 80% simply don't *care* about the latest trends, the state of the art, or anything except getting their work done well enough to avoid getting fired -- the best of them may even try for a promotion.
The 20% are impassioned -- they would learn about and practice software development whether there was a paycheck in it or not. The fact that they get paid a pretty decent wage to do something cool is just gravy. As a result, these 20% want to understand -- even advance -- the state of the art, want to have solid tools and processes in place, etc.
Yes, you can reach out to the 80% and try to convince them to be excited the same way you are, but you'll be wasting a lot of energy, because at the end, most of them just don't care.
What the 20% *should* be doing is reaching out to those that have the passion, but not the skill.
Darren Meyer on November 26, 2007 8:01 AMThere's an interesting post on The Onion called "80% of the world makes up 20% of the percentages"
That sums up your latest post.
I think there's a confusion between enthusiasm and talent. I love programming and I am very enthusiastic about new technology. However, I wouldn't consider myself in the 20% because I don't think I'm talented enough. I couldn't write a compiler in a weekend or learn lisp in a weekend. But can 20% of programmers do this? 1 out of 5?
I also don't consider myself a 80%. I like what I do to much and I know more than you said an 80% person would know.
So I must live in the spot right between 80% and 20%. :)
Brian on November 26, 2007 8:03 AMJeff,
Like many others here, I have come to respect the things that you say, going so far as to save the actual posts in my aggregator. I find your writing to be poignant, insightful, and well-written.
Unfortunately, I have to agree with most of the other people here in that this post was a total, steaming pile of dung.
I do agree that there is some sort of a divide. What the number is is irrelevant, I believe, but there is a divide. There are those that are vocational, that draw the line about how much they want to learn about their profession, and don't really go the extra mile in it.
That's pretty much applicable for any profession there is. There is nothing wrong with that. Some people don't have the time or the desire to explore their vocation beyond the time they are being paid to engage in it.
But to go so far and to link a person's passion in this field with a certain set of technologies or by who they work for is absolute hogwash. I am one of those Microsoft guys, I mostly use tools that Microsoft hands down.
I'm also an MVP. I post on average 300+ responses in newsgroups a month. Responses. Not questions. Answers. I help people.
Now, I am not saying that this makes me an alpha programmer. But to think that I "know exactly enough to get their job done, then go home on the weekend and forget about computers." based on the fact that I use primarily Microsoft tools, well...
Let's just say that I hope that you resume adhering to whatever standards you had in place before this post, because this one, IMO, does not.
- Nick
Nicholas Paldino [.NET/C# MVP] on November 26, 2007 8:21 AMI agree with the ones who say that the 20/80 rule is an oversimplification.
Anyway, even in that case, it's kind of clear now fitting in the 20% seems like something to be proud of. However, in my own experience (consumer industry, small companies), I found that people that fit in that category are usually very good at HOW and less at WHY.
Most of the time, people following the cutting edge of technology are very bad decision makers when it comes to find the right fit for a problem.
Pretty much like knowing the inner workings of a car and being unable to drive.
On the other end, you could not ask to the 80% to do that since, following that definition, they are technologically dumb.
So there got to be some other type of people somewhere lost in the count or we have to come to the conclusion that the tools we use or the services we get from computers are way more complicated than they could be just because somebody wanted to try something new when they designed them... ouch.
Straficchio on November 26, 2007 8:25 AMI like the idea but I don't know where I fit. I meet the requirements of each category fairly evenly.
Arron on November 26, 2007 8:26 AMI think I'm somewhere with the boat of people disagreeing with you Jeff. Maybe for different reasons though:
http://conservativgeek.wordpress.com/2007/11/26/our-obsession-with-lists/
Chris on November 26, 2007 8:27 AMI think I am in the 20% of the 80% and in the 80% of the 20%. Both at the same time
8-)
Jorge Diaz Tambley on November 26, 2007 8:31 AMDear Jeff,
A great article!
Thanks for sharing your knowledge and thoughts about the industry and it can certainly help ones like me.
I am in 80%, but going to be 20%. I like reading news and blogs on software updates and other happenings, new software releases and like to attend Microsoft events here in Mumbai, India.
I work in MS technologies but very very curious about open source apps, usually try to find out one that can help me speed up my work on Windows OS :D.
I'd like to think I'm one of the 20%; prior to ten years ago I was active in a number of open source projects (Python's stdlib, innd, and Apache most notably). I installed Linux on my desktop in 1992, and just this weekend I played with getting Rails and C# to play nice together, so I guess I'm not a "routine" programmer.
On the other hand, I'm a parent, and have been for ten years. I don't have time to tinker. I definitely don't have time for the brain-deep sessions of obsession and flow that characterize the 20%ers. By the time I earn the right to spend my weekends without having to worry about my kids, the industry will probably have flown right past me.
The thing about "shocking statement #2" is that you can go to companies full of 20%ers, and still end up at a company that, for one reason or another, has absolutely no geek culture at all. I've never understood that.
Elf M. Sternberg on November 26, 2007 8:42 AMHey Now Jeff,
Nice post, can anyone figure out why people say 'When I go home the last thing I want to do is look @ a PC'? I can never understand that from people in the 80%. Personally I enjoy when I'm home & can work on personal projects on my PC.
Thx 4 the info,
Catto
Actually, there are 10 types of programmers. Those who understand binary notation, and those who don't.
MrSquirrel on November 26, 2007 8:47 AM"Another vote for crock of poop. Probably the poopiest post of the year. I work in a firm of 80 percenters. We don't write Lisp compilers at the weekend, etc. Frankly I prefer to spend the weekends with my family, and going up my allotment where I grow vegetables. My eyes can't take more than 8 hours for 5 days a week in front of the screen."
I also don't write Lisp interpreters (Lisp is an interpreted language most of the time btw), but I do recognize what was meant with the 20% group. Since 1986 when I purchased my first computer, I've spend probably the majority of my spare time writing code. And I still do that. For example: when you did your first Sudoku, what did you think: "Oh, cool, a puzzle, let's see how good I am at it", or did you think: "Hmm, a computer program can solve this much easier" and you started hammering out code?
I do agree that the numbers are probably cooked up while writing the post, but that doesn't mean the categorization isn't true. (for whatever numbers. To be honest I think 20% is rather high)
"Yet despite being in the 80% we are professionals, know what we're doing, read books and blogs, use Vault or Subversion, attend DevelopMentor training courses, have Linux on VMs on our home machines (in some cases), and are interested and passionate about programming - especially about C# and .NET. The moment VS08 was released we were requesting our IT admins to download and install it for us. And we do think about our jobs over the weekend - even though we may try to switch off. This does NOT classify us as 20 percenters. We are not leaders, trailblazers and trendsetters."
I don't think the 20%ers are 'leaders'. I mean, is it in the ubergeek's nature to be a true leader? I'm not sure, but I don't think so ;).
What I do think is that the 20%-ers think deeper about subjects related to software engineering than the 80%-ers, but that's not the only criteria. If I look at myself, there's no other profession than software engineer for me. It's not my job, it's my LIFE.
Is software engineering for you your life too? You then might belong in the group which was categorized as 20%-ers. If not, no sweat, you're not a lesser human being. You just look different at Software Engineering. You see, that's the problem here: when someone makes this categorization, you always get a group of people who think they're in group B while they THINK being in group A is much better and therefore find people who recognize themselves as elements of group A arrogant, and/or find the whole categorization pretty stupid.
"The attitude of the likes of Ben Collins-Sussman and Frans Brouma strikes me as being terribly arrogant and rather blind."
Hmmm. So, by recognizing yourself as a 20%-er, you're arrogant when you say so? What I said in my first post does bug me, a lot. Software engineering isn't the same as being a state employed social worker, you're a software craftsman, you need to feed your brain every day with new insights, read new papers, new research, so you can do better today than you did yesterday. Software engineering isn't about clicking buttons in a designer or pulling controls on a canvas. It's also not about joining ALT.NET or using unittests just to be elite or hip. It's about the mindset that you can create software which truly resembles the best solution for the problem recognized. That doesn't mean you should use the latest and greatest or you'll be in the 80% group otherwise. It does mean that you should think deeper than the average human code generator. I think that's what makes 80%-ers be 80%-ers: they react on impuls, not think deeper and be creative and find a better solution.
But admitted, talking about other people like that can be considered arrogant. So be it.
Frans Bouma on November 26, 2007 8:48 AMI am an 80%! I take my work seriously during the work day but forget about it (more or less) after business hours (strict < 40 hour week). I may still read the occasional ACM journal or talk shop after work, but for the most part I don't code after hours. In college I probably was one of the 20% though, or maybe I was just one of the few that groked it. Like has been said before, life is too short.
Bill on November 26, 2007 8:52 AMI'm one of the 80% and frankly, I'm sick of this field. The 20% go off on their own and write overly complex programs to show off their knowledge and then try to force everyone else to program inside their box because, they're an "expert".
I'd much rather switch to another field where people with my talents are few and far between. There I can help to actually make a difference instead of wasting 8 hours of my life everyday pumping up someone's ego by following his "brilliant" code design.
Meanwhile, he's probably contributing to the pompous comments strewn across forums and comment pages just like this one.
John on November 26, 2007 8:53 AMYou are absolutely right about the chasm. I don't know why everyone is getting so upset about the 20/80 split - it's merely a simplification to get the point across.
I'm intelligent, good at my job, like writing software, try to keep up with the trends, and yet I'd put myself in the 80% category. The ideas and techniques described by the 20% group sound like tremendous fun, but often it seems like there is a huge disconnect between the environment and jobs they work on vs. the more old-fashioned environment that I am in. I am 100% busy at work already and 100% busy at home - I'm not going to contribute to an open-source project, learn 3 new languages, and read some one else's source code every week. Agile methodology, pair programming, daily code reviews, pure test driven development, 3 matched monitors, and Aeron chairs just aren't going to happen in my situation.
I learn a lot from your blog, other blogs, podcasts and books - I'd like to thank all you 20%ers for the hard work you do. I would also appreciate it if you kept in mind that your audience includes some of us 80%ers who are intelligent and care, but we work in a different universe than you. And I think that was the point of your post.
Elena on November 26, 2007 8:54 AMDear Jeff,
A great article!
Thanks for sharing your knowledge and thoughts about the industry and it can certainly help ones like me.
I am in 80%, but going to be 20%. I like reading news and blogs on software updates and other happenings, new software releases and like to attend Microsoft events here in Mumbai, India.
I work in MS technologies but very very curious about open source apps, usually try to find out one that can help me speed up my work on Windows OS :D.
80% of all students over the last 10 years know only about Linux and Lisp, Haskell or such things. They never seen a database, or made a 100klines program or bigger.
Of course, every student thinks he is great, because he uses Linux.
And they hate Microsoft, because it's so evil. And they program 16h a day, and ride all kind of shit, thats driven through the street this day.
I know that, because 20 years ago, i was such a student.
Now i'm part of the evil empire, and proud of it - writing programs, that are really used, and earning money for that is so much better than writing open source-software.
The problem is only 20%ers will understand this post and 80%ers will whine about how numbers are wrong or it's oversimplification/overgeneralization or try to find their place in one of these "classes". (It's a joke)
It's not about numbers, writing compilers, installing linux, opensource or spending all the time with computer. There are great programmers and there are programmers. Many sources (books, articles, posts) and sometimes personal experience show that great programmers are orders of magnitute more productive than other programmers. It's nothing new and nothing to be ashamed of. Some kids are better at maths than others. Some kids are better at languages, some are better at sports. Somehow they all manage to happily live their lifes so why should we be unhappy about being not so great programmers or being classified.
Aivars on November 26, 2007 9:02 AMI've never heard the truth put so simply, brilliant!
I would add that out of the "alpha" developers that can reach the majority, there is even fewer that understand business who can make a living doing the things they love - not being dictated the direction of their projects.
Marc on November 26, 2007 9:02 AMI find your view rather simplistic and insulting. Insulting cause I consider myself somewhere in the middle, which exists and you ignore.
I don't know your work but you obviously assume you are in the 20%. Let's hope you right
Johannes
Johannes on November 26, 2007 9:10 AMIf only I'd installed Linux sooner, I'd have fitted into the 20%. Unfortunately I was playing with my Transformers (i.e. Robots in disguise and they're not even electrical!) in the 90s. So I'm not quite fitting into either of these sweeping stereotypes.... Damn, where do I belong?!
bloop on November 26, 2007 9:12 AMmy kid has a poopy diaper and i don't care. what's more important is cranking out a 1000 page volume on ".net for the 20%".
stop crying kid!
JRock on November 26, 2007 9:13 AMFrom the tone of this blog post, it seems that you think you're part of the 20%.
Is that a correct assumption?
foobar on November 26, 2007 9:23 AM"If you really want to change the software development status quo, if you want to make a difference this year, you have to help us reach outside our insular little group of alpha programmers and effect change in the other 80% of the world."
And by making sweeping, condescending generalizations you just failed again to reach out to that "80%" that you so obviously look down upon yet try so hard to make us think you don't. You might want to rethink your self categorization as a so called "alpha", you and Frans Bouma both. You apparently didn't learn anything either. Your blog post today is tantamount to saying "hey we need to reach out to those lazy unwashed bastards and teach them"...probably not the best way to reach people.
Mjoyal on November 26, 2007 9:26 AMI found it interesting that in order to make your 20% group, you have to be very interested in Linux and the 80% are "windows shops".
The companies I work for don't run Linux, so spending my time getting LAMP up and running on a home server so I can play around with it isn't high on my list, espically when there is so much in the .net world to learn if you want to really be an expert in that area.
Chris May on November 26, 2007 9:34 AMMe? I'm in the middle. I explore technologies on my own, but I know people in both groups.
The difference I perceive is as follows:
1) The "80%" see software as a practical tool to get work done. That's their main interest.
2) The "20%" see software as a really neat kind of crossword puzzle to be worked endlessly.
Results: The "20%" may be fantastically more productive, sometimes, in some areas. I've also seen them travel up fantastically intricate, pointless blind alleys because the concept was so "neat." (When was the last time *YOU* used Haskell to make money?). Coding discipline is often not their foremost personal attribute.
Quite honestly, I'd rather have one "20%" guy as a consultant to whack the few thorny problems we run into and a herd of "80%" guys who will simply do what the *^)$%! I tell them to do, than a company full of unherdable "20%" cats.
Software is either about money, or the mental equivalent of that other most pleasurable solitary activity I could mention. And I have no interest in paying for *THAT*.
Cheers!
Ian on November 26, 2007 9:34 AMInteresting generalization on the skill discrepancy in our industry. It does not leave room for the shades of gray in-between the black and white dichotomy. However, I agree there is skill divide regardless of the percentages. This is something which has been around for a long time.
Unfortunately I do not see it changing any time soon either. As in most fields there is always a mix of people of varying aptitude, varying skill levels, and varying interest in the field.
As for the Alpha-geeks in our field reaching out to the other group... Most Alpha-geeks are somewhat self-absorbed, elitists and apathetic towards the other group -- I know I am. I'm content to fraternize with my limited circle of other Alpha-geek colleagues. And I am usually not interested in evangelizing to the other group -- that would take me away from my interests.
To be fair though, I may be more jaded than the average Alpha-geek. It comes from years of having to deal with the consequences of the other group: namely really bad code, and a market which is slowly devaluing. It's very frustrating having to work with programmers whom should not be programmers in the first place. Programmers whom lack passion or the proper training. Especially if they got into the field just to get out of their country.
Around 4 years ago, I was consulting for a telecomm company when they asked me to participate in technical interviews. This is not uncommon -- consultants occasionally conduct interviews for clients. I asked one particular applicant if he was involved in any open source projects, if he read any trade journals or blogs, if he did any programming in his spare time. He answered "no" to all of the questions and was not asked back for another interview since he lacked passion.
A few months later I ran into him at the local .NET user's group where he said I help him have an epiphany. He said that he joined the user group, got involved in the DotNetNuke project, and subscribed to MSDN magazine etc. This was all fine and dandy, but for the next few months I would run into him at the user group meetings and local MSDN events where he would follow me around and practically harass me. That's when I stopped going to the user group meetings. And it was also the last time I tried to inspire someone from the so called 80% group.
Edward J. Stembler on November 26, 2007 9:35 AMInteresting to see so many people get angry or insulted by this. Much more interesting than the post itself, I'd say.
Regards
Fake
This is true of anything. It isn't tied to programmers. 20% of the people do 80% of the work, etc.
Big Dave on November 26, 2007 9:41 AMOh for crying out loud. "they're always aware of the latest, coolest new trends in programming and tools" is the most ridiculous criterion for dividing hard-core programmers from the rest of us I've heard in my life because it mistakes Zeal for Competence in determining Quality. (Okay, correction, I had to fix this same mistake when my company wanted to re-write the Programmer's job descriptions a few years ago, too.)
The only thing that particular vein of Zeal determines is Amount Of Output. Competence and Zeal tends to create lots of good output, Incompetence and Zeal tends to be the Bane Of Your Existence. (Of course, if you view all code as a liability then the last thing you want is to have somebody, no matter how competent, zealously unleashing creeping features into your project.)
Oh, and the use of the 80/20 rule to create a hasty generalization with no backing statistics (particularly when the few criteria are so wildly non-conclusive) is a very sloppy logical construct -- the result of Zeal and Incompetence, except for the fact that it appears, prima facie, that the original article was actually talking about using Version Control rather than trying to make statistically relevant claims about who's doing what. This post takes what Ben freely admits are "oversimplified stereotypes" with mere "grains of truth" and presents them without those disclaimers as if they were as sincere as any deck of PowerPoint slides.
Sloppy, Jeff, very sloppy.
JMiller on November 26, 2007 9:44 AMJeff, yours is the only programmer's blog I read (I tired of Joel about 18 months ago). I have a lot of respect for your insight and writing.
You have either Screwed the Pooch or Jumped the Shark with this post. I hope it's the former.
I could go on for kilowords what I found wrong with this post. Instead of listing all my objections, let me state the overarching one:
Not only do you try to force all programmers into a dichotomy, you conflate multiple skill sets in a futile attempt at creating the taxonomy (some of the sins are Collins-Sussman's, but you endorse his article without reservation).
There are big differences between programmers, and those differences manifest themselves in great variance in programming efficiency and code quality. Placing them in two categories is horrid use of the Pareto Principle. Consigning people to the Epsilon-minus caste because they don't read "the right blogs" or engage in Slashdot Onanism or monkey around with functional programming languages is arrogant and dangerous.
Yes, the thrust of your article is inclusion ("I'd love to teach the world to sing, in perfect harmony..."), but it is the condescending form of "inclusion" (not to mention identity politics) that fogs much of our politicial and cultural thinking today (think "Nanny State").
Oh, and my compliments on quoting "They use whatever tools Microsoft hands down to them" and "Come over here and try out this ASP.NET stuff" in the same article with utterly no hint of irony.
BTW, when did Microsoft take over Eclipse?
Zasdad on November 26, 2007 9:54 AMTwo classes, Real Programmers and !(Real Programmers):
Real programmers don't comment their code. It was hard to write, it
should be hard to understand and even harder to modify.
Real Programmers don't document. Documentation is for simpletons who can't read listings or the object code from the dump.
Real programmers don't write in BASIC. Actually, no programmers write
in BASIC after reaching puberty.
Real Programmers don't write in COBOL. COBOL is for COmmon Business-Oriented Laymen who can't run a business, much less write a real program.
Real Programmers don't write in COBOL. COBOL was designed to be read, not run. Unfortunately it is often run anyway.
Real Programmers don't write in APL, unless the whole program can be written on one line.
Real Programmers don't write in LISP. Only idiots' programs contain more parenthesis than actual code.
Real Programmers don't write in PASCAL, BLISS, ADA, or any of those other sissy computer science languages. Strong typing is the crutch for people with weak minds.
Real Programmers don't write in PL/I. PL/I is for programmers who
can't decide whether to write in COBOL or FORTRAN.
Real programmers don't write in FORTRAN. FORTRAN is for pipe stress
freaks and crystallography weenies. FORTRAN is for wimp engineers who
wear white socks.
Real Programmers don't write in RPG. RPG is for gum-chewing dimwits
who maintain ancient payroll programs.
Real Programmers don't write applications programs. They program
right down on the bare metal. Applications programming is for the
dullards who can't do systems programming.
Real Programmers don't write specs. Users should be grateful for
whatever they get: they are lucky to get any programs at all.
Real Programmers don't read manuals. Reliance on a reference manual
is the hallmark of the novice and the coward.
Real Programmers don't believe in schedules. Planners make up
schedules. Managers "firm up" schedules. Frightened coders strive
to meet schedules. Real Programmers ignore schedules.
Real Programmers consider "what you see is what you get" to be just as bad a concept in text editors as it is in women. No, the Real Programmer wants a "you asked for it, you got it" text editor -- complicated, cryptic, powerful, unforgiving, dangerous.
I like the concept.
The problem gets shed in a new light if you read some of the replies.
80 v 20
(1) Real Programmers are Merc's versus Anarchist Geeks
(2) I dont like being identifed as the 80%
I wont list all of the replies... But good for you Jeff, are you now going to drop the evil empire and join the rebel free source ?
I think Jeff is just testing how much load his blog comments code can take :)
It's awfully hard to "lead" the 80% when you are busy looking down on them. When they ask questions in newsgroups, the 20% often spend their time flaming the 80% for such a stupid question that they're known the answer to for years.
One of the reasons we won WWII air superiority over the Japanese is because we set our best pilots up as mentors while they set them up as Kamikazes. Our best taught the 80% how to be a 20%. Their 20% crashed and burned brilliantly while gaining "honor" among their 20% brethren.
Keep up with the flaming and you will most likely win the battle with the 80%er and look cool to your 20% friends, but you've made the 80%er even more of an 80%er. Take the time to say "Come over here and try out this ASP.NET stuff. Here, let me show you what it can do!" and you might gain some ground.
The 80% believe there is life outside of the 1600x1200 box.
james on November 26, 2007 10:01 AMI've always joked there were three kinds of programmers in the world:
1) Those who Google for code solutions, and blindly copy what others have done, without any interest in improving or understanding it.
2) Those who try to get as far as they can on their own, and when they get stuck, Google for an answer, then try to improve on the solution and put their own touch on it.
3) Those who look at groups 1 and 2 with a smile, and simply say, "You're welcome."
The 1's are usually people who program almost entirely out of necessity.
The 2's are equal parts necessity and a drive to improve.
The 3's are primarily curiosity and a drive to improve.
I realize these are generalizations, and I fully accept that there are shades of gray along the way; some people could call themselves 2.5s, or 1.72s, and that would be totally accurate.
(I'm a 2 for sure...as an English major with about 1 year's worth of formal training, I lack the theoretical understanding and the discipline to really be a true 1. But I have just enough curiosity and desire to do better to settle for being a 3.)
Geoff Lilley on November 26, 2007 10:16 AMThere are different levels of programmers. Maybe its not 80/20 but every programmer has a different realm.
Some write compilers
Some write device drivers
Some write business applications
Some write internal applications
Some write web pages
Some write scripts
Some write games
I don't think the 80% needs help we are doing just fine. I think the 20% needs help.
Not everyone is born to write a compiler. Making a general statement that programmers that write compilers on weekends are better than those who program business application from 9 to 5 is totally absurd.
And another thing, since when is learning something new over the weekend make you a better programmer? I'd say that would make you a novice at the new thing that was learned.
Sometimes it is better to stick with something for a while to get better at it and become an expert at it.
I've seen many times in the workplace. You don't know technology X or Y so you couldn't possibly understand what I am doing. Ah yes, elitism at work. Come down from thy ivory tower o programming master.
Maybe if the 20% treated the other 80% as equals there wouldn't be such a gap, but the 20%'s social skills are near zero percent so I guess that will not happen anytime soon.
Jon Raynor on November 26, 2007 10:21 AMNice post Jeff. Judging by the replies this is a passionate subject for a lot of people. It is interesting to view the wide range of interpretations of who exactly comprises the 20/80 split.
I am an eighty percenter with no ambitions to be anything else. But that isn't to say I'm not passionate about the quality of my work or disinterested in "sharpening the saw". It's just that at the end of the day I view software construction as a vocation rather than a calling.
I would hope that the brilliant people out there who dedicate their lives to mastering the art and science of software development do schedule some time to develop the understanding that their value as "gurus" is extremely limited if they cannot find some way to share their knowledge with the rest of us. People like myself are very likely to end up in management positions one day, and we will make our decisions based on the best information we have available to us. If the gurus wall themselves off in a heavily guarded ivory tower then we're going to go on making our foolish decisions with reckless abandon because it is the only thing we know how to do and a decision needs to be made NOW. But if they do have a passion for their craft and wish to maximize the productivity of their expertise, then they will struggle to find ways to consolidate the fruits of their labor into a form which can be communicated to those outside their peer group.
Perhaps this is how a twenty percenter becomes a five percenter.
Karl on November 26, 2007 10:21 AMI'm an 80%'er and I'm proud.
While you 20%'ers are spending your time playing and experimenting, my group are actually getting the project done on time so the company can make money. While you 20%ers are working day and night for 3 weeks to whip out some new whizbank, cool solution my group are the ones that wring the bugs out of it, get it into production and maintain it, again allowing the company to make money and stay in business. And finally, while your group is downloading, coding and blogging about computers in their spare time, my group is spending time with our spouses, children and friends and living a well rounded life.
Software engineering will continue to move forward over time - and yes it's the 20%'ers that are the driving force - but I am a human, Christian, husband, father and citizen first, and software engineer last; and I intend to stay that way.
William on November 26, 2007 10:23 AMThis isn't an 80/20 inferior/superior issue.
In part, it's about Information Systems vs Computer Science. Hopefully, the computer science majors do technical programming to provide tools, libraries, utilities and frameworks that can be used by the Information Systems majors providing business applications and systems.
Hopefully, both groups use tools as permitted by their organization's standards, and influence their selection.
Often, the technical programmers eat their own cooking, so what they develop has the features and interfaces they want and documentation they deem adequate. Sometimes they have the foresight or are influenced to make their creations palatable and desirable for the IS consumer as well.
Sometimes the CS people play with IS tools. For example, Conway's Life is an example of a cellular automaton. Spreadsheets provide a matrix of cells. Can you do Life in a spreadsheet? without macros? wrap around top to bottom and left to right?
Sometimes the IS and CS people play together. An IS guy on a deployment team creates a spreadsheet that defines servers and workstations for branch offices with device names, IP addresses, SNA addresses, assigned switch panel ports and cubicle faceplate details.
The CS guy rights a shell script that parses a printfile of the speadsheets and generates machine provisioning scripts.
I think the issue that matters is about knowledge, competence and professionalism rather than CS vs IS. Professionalism and competence do not come from any academic degree. Professionalism and competence is what brings us solutions that scale, are stable and good as underlying technologies change, are built with foresight so that enhancements to the interface do not require change to existing applications. They give us solutions that survive device failures and site disasters. They give us solutions that are easy to use and easy to learn.
Among both IS and CS types some have more interest in their profession than others. Some of them are friendly and willing to share. They become the GOTO guys for those who seek help and advice.
The issue for these people is for their organization to recognize their value and provide time and $ for professional development (trade press conferences, classes & their travel) and to allocate a portion of their time (if tracked) to design & code reviews, mentoring, etc.
David
-
Orange.
Orange who?
Aren't you glad I didn't say banana?
-
I've known a lot of 20%ers and the problem with them is they normally don't function as humans and can't solve a problem in the real world for shit.
I'd rather have an 80% working for me that knows how to do the job that I employ them for well and can join me for a beer after work occasionally.
This post upset me, I'm almost tempted to remove my RSS feed.
A lot of touchy people here.
This could have been written in a lot simpler terms without offending anyone.
20% of the programmers would be programming even if they were not getting paid to do it. The other 80% would not.
Certainly there are people in the 80% group that are better than people in the 20% group, but we can say with some certainty that the 20% group, on average, is better. The best overall are also in the 20% group.
And, 80% of the people who read this blog are in the 20% group. Just showing an interest in this stuff means you are interested in programming beyond collecting your paycheck.
Matt
Matt Lentzner on November 26, 2007 10:42 AMNice point of view, but I am going to make it more simple:
You cannot trust that there are some gurus among your programmers who introduce new technology once in a while.
There is only one kinds of programmers: Programmers. Some programmers study programming more than the other programmers, but they are still both programmers. Its not the job of a programmer to be a trendsetter. If you want to be a guru/trendsetter, you might be eg. a "leading software architecture manager". I mean, its not the job of a programmer to bring new technology into the company. Its not the job of a programmer even to design the software. Programmers may help trendsetters and designers, though.
Normally every single programmer play hero and do things according their own bright mind and the code is hard to read by other programmers. That's bad. Instead you need to separate trendsetters, architects, designers, programmers, and all from each other.
And if people start expecting more and more from the programmers, it is hard to set any limit. Then the programmers might get bewildered which way to go or something.
People can be a designer _and_ a programmer at the same time. In smaller companies a person can be a sales person, project leader, analyst, database administrator, designer, programmer, tester, deployer, server farmer, and a maintener in several projects. So he doesn't have the time to learn Lisp at weekend when he has to widen his knowledge in problems at hand that occur in all of his fields. In big corporations you can divide the tasks more.
Also, if few alpha persons already studies tools that will be taken into the organization, why the rest of the people should waste their time inventing the wheel too? Its just lack of communication and lack of differentiating tasks, if all of the people try to invent the same thing. It might go so, that the most energetic extrovert nerds find each other and start inventing things without telling anyone, because the organization doesn't have a proper division of tasks.
And if some ordinary person tells about an invention beforehand, then starts the competition when all the extrovert nerds catch fire. Starts the inventing of the wheel simultaneously, which is plain stupid with all the overlapping work. Also the "gurus" want to do everything by themselves, because all the "lesser guys" of course cannot do as good job as the alpha persons.
There are different kinds of people. Others are extroverts and do a lot of stuff and do huge experiments that get wings in the organization. But the energetic extroverts could be put into R&D, if they really hate the tedious parts of programming. Introverts are suitable for any task, except if you need smiling smalltalkers. Introverts can talk a lot too, but they are not as good as extroverts in creating new contacts artificially.
Now, if we want the rest of the people to study more at freetime, we should put everything into order. Then when people know where they are or where they want to go, they can start building their career based on some solid frames without alpha gurus running over them all the time. That way people don't have pressure to study more than they can etc..
We also need to keep in mind, that when R&D trendsetters come up with new technologies, those technologies should have real solid grounding into everything in the corporation.
Trendsetters cannot just declare that so and so technology will be part of the company strategy. Trendsetters cannot just do initial linking of the new modules into the system and write few guides how it all works. You need something more, you need to make sure that the rest of the people becomes familiar with the new technology. And you have to understand that you need to take system architects along, then the designers and then the programmers and all the others. Plus you need to make sure that every level is connected to each other and traceable and testable. If you just hope that programmers got it and that they study some more at freetime, you are in deep trouble.
When new technology has been taken into projects and implemented, you need to trace and test it too. That is the task of the trendsetters' assistants. Everything needs to be under control. You can't just throw new technology into the projects and hope everything goes well.
Finally, if you write simple code, but it works, its better than complex code that doesn't work. Complex code can waste your life studying and debugging the complexities. And there are different kinds of screwdrivers. Kids' plastic ones and professional steel versions.
Don on November 26, 2007 10:43 AMI'm a 20%er fighting to be an 80%er. I love my family that much :)
CB on November 26, 2007 10:48 AMHmmm, let's see... On Saturday I can:
1: Play with my kids
2: Ignore the family and work
3: Play my drums/jam with my band
I'll take option's 1 and 3 thanks!
I'm making more than enough money being a "0%"-er (as described above) and am very productive during my working time. I WANT to do things other than twiddle bits all the time. That does not make me an "80%er". If I was in the 80% bracket, my independent consulting business would not be turning work down. I think people need to do things other than work (and installing Linux, etc. on the weekend IS work) to have a balanced life. Of course, if you don't want a wife and kids, friends, etc., by all means fill all your time learning new coding techniques and installing OS', etc... Now, where are my drum sticks...?
HugoDataway on November 26, 2007 10:50 AMGreat article! Truer words were never spoken.
Chyld Medford on November 26, 2007 10:52 AMI was most likely destined to be a 20%, but took a turn towards the 80% while in college. I started programming at age 4 when my dad brought home the Apple II. He showed me the
10 Print Wayne is king
20 goto 10
thing and I started typing that everywhere I went if there was a command prompt on the screen (Radio shack stores mainly).
I started doing the exercises in his books. Basically just typing in what was on the page. At that point, I doubt I knew more than pattern matching what was on the page, but I was programming :)
My dad worked in the defense industry and I was probably the only 10 year old reading Electronic Defense magazine... also probably the only kid that knew what the Association of Old Crows was (old farts in the defense industry).
Anyway, the deck was stacked in favor of me being one of the 20%... But when I got into college, I wasn't just the computer geek from high school... I was a blank slate. So, after 2 years in the CS program I switched to Radio-TV-Film and that is what my degree is in... unfortunately, in Fort Worth, TX there aren't a lot of jobs for RTVF grads that are about to get married. So, I fell back on my ability to program.
Now, that is what I do. I write software. It's nothing earth shattering, but it allows me to pay the bills. Every once in a while, I still get a challenge that drives me nuts until I solve it and feel like a god. Programming isn't my primary passion... I would much rather play Bass in a Jazz/Blues band and teach Tae Kwon Do, but too hard to do that full time and have a family, so programming pays the bills...
Ok, so there wasn't a point to this... just thought I'd share. I've read through everyone else's comments so decided to add my own!
Wayne on November 26, 2007 11:02 AMI saved my response for my blog, but I'm glad you and Ben started this discussion. Unfortunately, I think too many people are missing your point (maybe I am too).
Greg on November 26, 2007 11:17 AMLOL, So what kind of tool did you use to arrive at the 20/80% measurement ? How do you know it's not 10/90 or 30/70. Or is your point just to create two categories (the masters and the minions) ? So you are saying that this there is not a continuum of values. Also are the 20%'ers always being 20%'ers or do they sometimes lapse into 80%'ers. This is the type of broad generalization that does not satisfy people who are more sophisticated. Well anyway, anyone can have an off day so i'll look forward to your next posting.
Cheers.
f. b. on November 26, 2007 11:21 AMI think your depictions of the two programmers were a little confusing. Instead of phrasing it like you did, I would have put it like this.
1. The type of people who do their job because they have too. If they didn't write code and get payed for it, they'd do it in their free time because they just _have_ to do it.
2. The type of people who do their job because it makes them money and gives them the freedom to do what they _really_ want to do. These people clock out at 5-6 and go play tennis, or play with their kids, or log 4 hours in WoW.
And this isn't limited to programming. Everyone falls into these categories. Think Beethoven and his passion and drive to write music. Beethoven would have died if he couldn't have written his music. On the other hand, there's Mozart, who did something he was extremely good at and made a decent amount of money. If he could have become famous making tables, I doubt he would have written as many symphonies.
Frank on November 26, 2007 11:22 AMTo those of you who get worked up about the 80/20 divide:
Would you agree that we are supposed to be "Professionals"?
If so, would you then agree that you have impact on the day to day work of your users through the code / applications you write?
Now, compare this to another profession.
Would you prefer a 20% or 80% physician?
Think about it.
CV on November 26, 2007 11:29 AM@CV
"Would you prefer a 20% or 80% physician?"
There are far more 80% physicians than anyone would like to admit. Having the degree does not translate equally to passion, desire, and care for one's work, let alone competency.
Ordinary Geek on November 26, 2007 11:37 AMAny possible offense taken to your article would be immediately washed away upon reading the article which you link to and quote from in context, side by side with yours.
Why are people so quick to get defensive?
Dan G. on November 26, 2007 11:47 AMI don't consider myself an "average" programmer, and I've never used Linux. Do you have to be an uber-nerd too, to be in that 20% ? I am goal oriented when I program. Quality programming for a purpose. Spending the weekend splitting your hairs on the latest undocumented Linux mod sounds nerdy to me and certainly doesnt mean anything about your skills as a programmer.
Fabrice on November 26, 2007 11:47 AM"A" students teach
"B" students work for "C" students.
I agree with those who call this post over-generalizing and worthless. To add to their eloquent arguments: being a damn good programmer and being a Linux fanboy are not the same thing.
CynicalTyler on November 26, 2007 11:57 AMI feel people who make generalizations like this show there true ignorance. If you were so smart and actually in the top 20%, you wouldn't need to write crap like this to make a statement. You would just know you were in the 20% and be happy. People who make judgmental comments like this do so to make themselves feel better.
We were given two ears and one mouth for a reason. You should try listening more and talking less if you are going to spread this kind of ignorance to the world. STFU and go read some more!
Haywood JaBlowme on November 26, 2007 12:03 PMThank you for NOT calling the 80% 'Mort' or '501 developers'!
Bob on November 26, 2007 12:06 PMIt seems strange to me that anyone would be shocked that '80%' of the programmer population comprises 'most' of the programming population.... it's obvious isn't it?
Red on November 26, 2007 12:11 PMI read through the post, and was left wondering where I fall. I suppose I would fall into the 80%, since I don't actively participate in Open source projects, nor do I do many of the things you mentioned "just for fun".
However, I do believe that there is some additional stratification in the 80% group. Not everyone in the 80% does this job just to get paid. We do enjoy our profession and enjoy reading about it (I regularly read blogs, and am reading new books on programming all of the time). However, I don't have time to do those other things "just for fun". I have other hobbies that I enjoy as well, and since I get my programming fix at work (and get to help set some direction of what tools we use at work), I don't have the motivation to do it at home as well.
If that puts me in the 80%, then I am happy with that. I just want everyone to realize, that just because someone isn't in the 20% it doesn't mean they don't enjoy/love their job, or that they are only in it for the paycheck (although I have known a fair number of people who absolutely do fall into that category).
I guess I'd suggest a 3rd type, those that love their jobs, but just don't have the time or energy to be the "industry leaders".
LadyCoder on November 26, 2007 12:11 PMAnd by the way, there are actually 10 types of programmers. Those who understand binary and those that don't
Red on November 26, 2007 12:12 PMAs Dave Barry said, "I know I'm generalizing here; but as usual when I generalize, I don't care."
While you can quibble the percentages, the world really _is_ divided into the two camps: the artisans and the manufacturers. Ignore the specific tools that Jeff mentioned; compare the attitudes:
* The artisans are not the one-tool-fits-all school; they may not be passionate about Linux, but they have enough exposure to multiple operating systems (different versions of Windows do not count) and programming languages to realize that the best tool for the job is not necessarily the one dictated by corporate policy.
* Manufacturers, on the other hand, are extremely well-versed in a narrow set of software tools; they are competent, but their world-view tends to be driven by what is available. As my old professor used to say, "If your only tool is a hammer, all problems look like nails."
Neither side understands the other: "I prefer to have a life" versus "I prefer to have my work be meaningful." It's a matter of priority, and also definitions. If your life *is* your art and your art *is* your work, then all else is fluff. If you do exceptional work so you'll be recognized and rewarded, you seek (and achieve) fulfillment elsewhere.
You don't have to be in the 20% to produce quality work. The odds are, you'll be keeping the company afloat. The 20% are the people that keep the company from being eaten by the circling sharks, but would sink on their own. The whole point of Jeff's article wasn't to disparage the 80%; rather to tell the 20% that they need to help the 80% grasp new technology in order to help *themselves.* A rising tide lifts all boats, remember?
The dichotomy is also important for management, because the different attitudes affect the evolution of a product.
During the early embryonic stages, the technical problems are rich enough that your project will have no problem attracting artisans. The ratio within will be closer to 99/1 than 20/80, which is good: the team will have a strong (if not unified) vision of the product and the initial product will be technologically *attractive.* Manufacturers tend to be focused on details rather than the gestalt view, and they produce software that people will use only under requirement.
The challenge here is to constantly remind people that "better is the enemy of good." Get something usable out the door, even if it means slicing off inessential features. Artisans will *hate* that, but it must be done.
Once you hit that first delivery, that's when all hell breaks loose.
Your artisans, being creative types, don't want to be hobbled by the chore of maintenance. They're after the next great challenge, and you'll be lucky if you can keep them within the company, let alone the project. Your executives, ignorant of Brooks, will demand you scale up the development team to shorten development cycles. The bulk of your new hires will be in the manufacturing realm, and your ratio will now be 40%/60%; however, the 40% with domain knowledge will be too busy to speak with the 60%, who will flounder.
If you're a strong manager, you can explain to executives that this cycle will be delayed for training reasons; if you can't, you'll simply slip. In either case, you'll be forced to go through another hiring cycle. By this point, an artisan wouldn't touch your company with a ten-foot-pole, unless he has serious money issues. Churn has continued, and now you're at the aforementioned 20%/80% level. After the next round, 1%/99% and vision is effectively dead.
I have gone through that cycle a half-dozen times, and am going through it yet again. If there is no knowledge transfer when the manufacturers first come on board, then the product becomes an ineffective bricolage of technology and vision.
There is clearly a division between the top coders, architects and engineers and the vocational types, but I do not think that the descriptions provided embody the parts of that division with any accuracy; frankly, they sound a bit daft. I do not think that a great developer, for instance, who knows his field through-and-through and keeps abreast of all new developments, fosters some, participates in many, would remain an exceptional developer for long if he also spent all of his week-ends and down time focused on this passion and trade. There's life away from the keyboard, and well-balanced people are no less exceptional for having found equilibrium, the means and time to enjoy their short existences. Given the choice between equally talented people, I'd rather work with a balanced person who works hard during work hours and remains intellectually voracious at all times, than with someone who still needs to limit his interactions to talking about the limited domain of code throughout weekends and social events.
Why ?
1. There is much to learn about the structure of problems and their solutions away from the protective confined of the coding sandbox; versatility enriches every domain of existence. Cross-pollination is essential for a creative mind not find itself trapped in too narrow a silo.
2. Coders with friends and families know not to obsess on the merely theoretical when excellent solutions can otherwise be implemented in the very same time.
3. Coders who understand balance respect other coders' need for the same. They do not drag them back into the coding pits when they need well-deserved rest. I;d rather work with people who know they can work hard when it is required of them, knowing that they'll be free to rest too once they have made those sacrifices. Taking care of one's own matters a lot.
4. Unbalanced people will burn out.
Louis-Eric Simard on November 26, 2007 12:30 PM80%ers unite!
By reading the comments we can see that there are at least 3 types; the 10%ers, the other 10%ers who fall into the 80% because they have a family, and others.
Seriously, I used to be way on fire for design, "passion for the craft", etc. Since I didn't go to a good University, I had to get what I could get (corporate cog). After a few jobs experiencing nothing but anti-patterns and trying unsuccessfully to get out of the rut, I realized I had 2 choices: join the 80% or start my own business. Since family is a priority, I joined the crowd. I know there are many others out there like myself.
Card carrying 80% member on November 26, 2007 12:30 PM@Jeff -
Great post. I think I could summarize further though.
20%: Have no life. Rarely get laid.
80%: Actually have more than a cyber-life. Get laid regularly. Possibly even procreate.
20%: Use C#
80%: Use VB
When are you coming back home to VB now that you want to "reach" out to the great unwashed masses? ;-)
Geeks are so egotistical: just look at the number of comments. This must be an all time high for your blog, ey?
VBMan on November 26, 2007 12:35 PMI really liked this post. I added some of my thoughts in my blog post here.
http://benhblog.com/2007/11/software-developers-lifecycle.html
BenH on November 26, 2007 12:47 PMI am in the same boat as JonC. I know that I started out in the 20% camp. As time goes on I find myself slipping more and more into the 80% group. I miss the passion I used to have for it, but I guess that long, long honeymoon has finally ended.
Jim B-G on November 26, 2007 12:47 PMI tend to believe that any generalization/stereo-type is bad.
';DROP TABLE Users on November 26, 2007 1:05 PMWow, some grumpy people in here! I seriously doubt that Jeff subscribes to the exact percentages, or that he doesn't understand that there are some in between people out there. In fact, in my experience, most people would be in between.
If the 80% moniker was meant to be disparaging, I didn't get that impression.
Now, I'd be interested to see real percentages on people who, even during business hours, don't want to learn anything. I've worked with several of those. They drive me nuts. I can understand not wanting to fully understand the 7 layers of TCP/IP, but I do NOT understand why you would not want to take the time to learn how Visual Basic 6 handles strings, and therefore why a particular string concatenation method was slowing our program down. I tried to teach someone this when their procedure took 75 seconds to run, and after I optimized it it took less than 1 second. They could have cared less. It's important, though, because this same person may use the same method in the future.
If you don't want to spend 100 hours a week learning only computer stuff, fine. Few people do (much less than 20% I would think). But if you don't want to spend ANY of your 40 hours a week at your paid job learning it, then you, sir or madame, are not even close to a real programmer.
Matt on November 26, 2007 1:05 PMjeepers man, yall are gettin all "spread the good word holee holee jesus is here" and stuff.
norapinephrine on November 26, 2007 1:07 PMVery nice post John, though I have my own version of the same. Programmers for me are two types, one type who just get the job done in whatever language or tool that they are given by learning just what is needed to complete the task and finish fast, second type who like to get into the clean details and learn in depth and take more time but get a perfected version of it..
Saagar on November 26, 2007 1:13 PMIf you've read this far then that's because you're in the 80%, now get back to work!
Patrick on November 26, 2007 1:16 PM"My dad worked in the defense industry and I was probably the only 10 year old reading Electronic Defense magazine"
Hehe, nope. My uncle worked for DoD.
Eric on November 26, 2007 1:27 PMDidn't you post this exact same article a few weeks ago?
Nicholas Wright on November 26, 2007 1:32 PMLike so many things in live to convey an intent it is often easier conveyed in an over simplified manner, which I think is what Jeff has done here. There are many over simplified 80/20 rules (20% of the people do 80% of the work, etc.). In this case it is probably 10% uber-geeks and 90% less than uber-geeks. In reality it's a sliding scale.
Also, there are many facets of this, programming, designing, networking, databases, compilers, languages, embedded, etc. No one is in the 10% or 20% in all of them.
One of the things I've noticed is that the majority of the people I've worked with don't take the initiative to learn the new technologies on their own time or attend user groups; they may read a few books and are willing to go to a course if the employer will pay but other than that they just float along.
Steve S on November 26, 2007 1:38 PMSo what makes me a "20%" or an "80%"?
I'm not a computer fanatic. Not that kind of person who asked for the most precious thing in his life says "my computer" and that prefers writing new lines of code instead of *wasting* his time for a normal life. Not at all. I'm not a genius, in my group (I'm still a university student) I'm exactly in the middle. Honestly, I don't really like sitting in front of my laptop and gazing at its screen doing nothing important.
But I really do enjoy programming. Since I was 14 and discovered C I have known that programming was what I wanted to do in my life. When I'm in the middle of writing some kind of project, I can't stop thinking about it - I'm falling asleep and waking up thinking about the solution. I'm really eager to get to know more and more and understand everything I'm dealing with. I always have hundreds of questions to my teachers written down before every lecture. I want to be as good as I can be in this field and I'm working really hard, spending hours studying to reach the aim.
Genius is one thing, hard work is the other.
There is some kind of passion, but not the absolute one.
So tell me, who am I?
polish_computer_science_student
P.S. Jeff I love your articles. This blog is my first "Home" website that remained in this place.
a on November 26, 2007 1:40 PMGreat article because its got ALOT of good and bad comment. Which means its a winner regardless.
No one is reading THIS comment unless I'm still at the bottom and they read it before writing their own. You'll get bored after reading the first 15.
Personally, I'm in the 80%. I like what I do but will never be the best. Therefore I love the comment about 80% of the 80% think theyre in the 20%, good one.
Scott on November 26, 2007 1:49 PMMmm I wonder how many of those MS technology geeks belong to the 80%?
AK on November 26, 2007 1:57 PM- I know I should learn Lisp because it probably is better than my "Blub" language of choice, but can't be bothered. Erlang seems interesting, but it seems a bit immature for usage beyond the tasks it was designed for (Like Tim Bray's Wide Finder project shows)
- I like Python, but do most of my programming in Java and PHP.
- I am comfortable using regular expressions, but most of it is used in languages other than Perl
- I do most of my work through an SSH shell / Samba share to a Linux server, but the OS I use on my desktop is Windows XP.
What kind of a programmer am I?
N on November 26, 2007 2:02 PMLet me look in my crytal ball. You belong to the 20% of the idiots who actually post something on this blog.
AK on November 26, 2007 2:05 PMAs someone who sadly places himself in that 80% group, I have to say that I have ambitions of joining the 20% - in my work, I've fought hard to push past the (brace yourself) Access 2000 barrier and bring in .Net 1.2, with C# and not VB, but I still think my programming is rudimentary and I still haven't found a good deal of material in books and resources that have really helped me cross that divide.
I get intimidated by the girth of information I have to get my head around and there doesn't seem to be a fair starting point to tackle the problem from. So I read blogs and I pick up books from O'Reilly because that's what all Alpha Geeks seem to recommend but at the end of the day, I still feel like I don't know enough and the frustration sets in.
Note: This is despite a BS in Computer Science. Perhaps my schooling was inadequate but I consider myself to be a human of at least average intelligence who enjoys stepping through through the Insert Sort to prove to myself that it still works.
Saif on November 26, 2007 2:07 PMThe programmers who perform the best, in my experience, are the ones who find themselves somewhere between the 20%-programmers and the 80%-programmers.
The 20%-programmers tend to have a too narrow focus, leading them to not see the big picture, and thus create unnecessary solutions 99% of the time.
The 80%-programmers tend to not know the details in the tools which they use... and they tend to not care about how the code looks, as long as it "seems" to work. They can usually get something up and running pretty fast, but it'll usually be a nightmare to maintain.
So... My preference for someone to work with would be someone inbetween those two lairs. One with enough insight in the technology and in the importance of clean code, but not someone who gets an erection from calculating fibonacci sequences.
Peter Poster on November 26, 2007 2:14 PMI am a proud 80%er. My 2 main goals in development is to solve buisiness problems within the confines set forth by the company and to make a living.
I go home and forget about programming because life is too short. I hear the disdainful comments by the alpha 20%ers and....frankly....I don't care. I get called in to make things work, sometimes after an alpha decided to reinvent the wheel because he read about something cool and backed the company into a corner they can't extricate themselves from.
I learn techniques from the alphas and make an intelligent decision as to whether the approach should be followed. Asking the question often forgotten: "Just because I CAN do it it this way, does it mean I should?"
I don't begrudge alphas for being alphas. But neither do I suffer egos. Frankly, from what I've seen, the best make it look easy, because for them, it is. They don't wave it in your face, because, what's the point.
AaronZ on November 26, 2007 2:19 PM80% = Wants to play the video game.
20% = Wants to program the video game.
I'm not really into playing the games, but more interested in creating the game.
The categories should be broken up differently:
80% who know nothing
20% who know that they know nothing
I would say that it's more 10% alpha, 20% beta, 70% gamma.
Always suspicious when you only have two categories in which to socially engineer people. Like having two major political parties.
If I had to categorise myself along these lines...
Wait. I don't have to. Besides which, I don't know that the proportions are exactly the point here, or that the generalisations applied to either category really apply to me. I was tempted to say I'm in the 20% group, because some of the things Jeff says about them also apply to me, but then I realised that most of the things about 80 percent-ers also apply to me.
Frankly, I don't have time to be in the 20% group. I have too many other interests. I can't focus that much on just one area. I'll get bored.
Lucas on November 26, 2007 3:06 PMHa!
I'm 80% 20% of the time, and the other 80% of the time, I'm 20%. Or is it the other way around?
I wonder what the other 80% of the world is doing now that I'm in 20% mode? How do they live with themselves? Actually, I might have had a chance of being in the 20% before reading this article. I want my 2 minutes back!
CptBongue on November 26, 2007 3:12 PMI'm in the 20%, no doubt about it as I spend an inordinate amount of time improving my skills.
I believe that much of the resentment this group feels against the others is that we end up spending our time explaining why and how to the unenlightened others. The world is competitive and those others, by their indifference, cause a drag on those who are willing to sacrifice to get ahead.
Having said this I don't think it is anything new. That's the way it is with almost everything in life. 10% if the fathers put the most effort into being best at that. 2% of the guitar players come up with 99% of the licks. 5% of the population controls most of the wealth simply because they are more involved in doing that; the rest of the world is less concerned about competing with them over money as long as their perceived quality of life is acceptable.
Thus this is really about one's attitude and expectations for one's own life. Realize that you have an obligation to yourself to examine your life. Other people and things will always represent an "obligation." Make a decision and live with its consequences without resenting other people's choices.
The basic idea is not terribly unsound.
The "definition" and "example" parts, however, are twaddle.
I use VS.NET and subversion. I've used linux for fun (and mostly "being a router and fileserver") at home since the 1.2 kernel days.
I use source control and linux! Am I a 20%er?
I must not be, because I don't give a damn about supporting anyone's open source project, and I don't learn languages "for fun" on the weekends.
(I don't take the 80% thing, which is probably my group, as disparagement, as some have. I write good code and have my share of insights; I don't <I>care</i> about being the guy that writes the lisp compiler - unlike him, I wouldn't <I>enjoy doing it</i>.
But I do think there's no relation between being an 'alpha programmer' and open source religion or not using MS tools or even necessarily <I>trend awareness</i>.)
I used to be a twenty-percenter. It was the early 90s, and Visual Basic was new, exciting and empowering. More to the point I was single with no kids and there was no internet, only BBSes like the Well.
Now I have a home, wife and kids, and that plus the Internet and HDTV/TiVo hoover up my time and attention like a black hole. By the end of my day I'm out of creativity. I've been as creative as I can be at work, followed by being creative in raising my kids, being supportive of my wife, walking the dog and doing needed chores around the house.
There is a part of me that is not proud of being an 80 percenter, but then the rest of me realizes that much of what takes up my energy is just as creative and certainly as important (if not more so) as programming.
Bear in mind also that after 20+years of programming I'm tired of having to learn the latest new technology just so I can do the same thing. Just about all of what I need to do in business programming I can do just fine in VB6, and since I have 17+ years of VB experience and a ton of prewritten code I am more than productive enough. I am tired of running as fast as I can just to stay in one place.
Before 30 years old I was those 20%, I was a Geek. Programming with Assembly, C, Lisp, Java, Python so on, Using Linux since 1995, Unix, Windows, Programming GPS devices on the weekends, building my small robot etc. But when I turned 30 and I got married, My life changed so radical that now I think I belong to the 80%, I care about technology and Programming but also about the paycheck to feed my family. I'm still a Geek but in the 80%.
Muchacho on November 26, 2007 4:14 PMWell, it's easy to see who is in each category.
Low end of the 80% - it's arrogant poop
Most of the 80% - we work hard
20% - too busy to read blogs. j/k
Here's a question for everyone saying "the 80%ers care and work hard and have a life." Nothing wrong with that but what have you innovated? Nothing? It's fine and there's no shame in that - it's honest work and we need that done - but as Jeff was pointing out by proxy - you members of that group don't innovate! You DO contribute to society but don't forge ahead in the computer field.
Me? I think I used to be a 20%er but almost 3 decades of programming has burned me out to the point I'm nowhere near that.
deverill on November 26, 2007 4:32 PMZasdad: Kudos, I felt the same way about this one.
Shmork on November 26, 2007 5:03 PMWow - talk about stirring up the hornets nest.
I agree with many of the previous posters that the generalizations are a big steaming pile of crap.
This is pretty much how I shape up:
1) First Linux install was in 1992 - 0.99 patch level 11 alpha
2) Don't know the first thing about compilers, frankly don't care, either
3) I've heard of Lisp and Haskell
4) I don't participate in open source projects
5) Always try to keep myself up to date with the latest trends, tools, etc.
6) I've never worked in writing internal apps - mine have been out there being used by real people
7) I don't just settle for what MS hands to me - I use the best tool for the job
8) I've used Linux, and personally I like what it can deliver
9) I've used a lot of SCM tools (Perforce, VSS, CVS, ClearCase, etc.)
10) I don't forget about computers on the weekends
Let's see - that would put me somewhere between the 20% and 80%. Then again, perhaps I won't ever make the so-called "top 20%" anyway. In either case, I'm happy. Why? Although I'm not a computer fanatic, it's been an integral part of my life and I've enjoyed it. Hell, I started out on the old Atari 8-bits way back when.
I have a family who would like to see me every once in a while. In addition, I also have hobbies and want to enjoy an active lifestyle where I can actually enjoy myself. Besides, my body would appreciate not sitting down all day (think Carpal Tunnel Syndrome, deteriorating eye sight, weight gain, etc.)
Some of the comments remind me of a similar reaction to one of Stevey's posts.
http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html
There is a very interesting comment by 'cwells' in response to those comments.
"To the people who complained that because they have other priorities besides programming (families, hobbies, etc) they've been lumped in a "lesser programmers" category I can only say this: if you have other priorities besides programming, then you are, by definition, a lesser programmer...."
You should read the full comment. Its pretty interesting. In fact, I have bookmarked this portion as one of my favorite quotes in tumblr.
"The hour-a-day jogger isn’t going to make the Olympics. The eight-hour-a-day programmer isn’t going to write Linux."
(Disclaimer: Just Quoting. Not My Personal Opinion)
Bhabishya Kumar on November 26, 2007 5:18 PMWhat total and utter crap. All you so called self-appointed 'alpha' geeks are nothing more than a bunch of consultants, writers and trainers who haven't built (and long supported) a system of any size for so long the best you can muster is a rant into the echo chamber that is the blogsphere...'Why can't everyone be like us!'.
Please. Most real 'alpha' geeks are not writers, trainers, consultants or bloggers (although they do read blogs) and do you know why?...Because they are all too busy writing code and would rather be writing code than anything else. Look closely at the core Windows hackers, Linux hackers etc etc...none of them are looking around and wondering why won't the unwashed masses follow us! Jeessusss...they are too busy writing code for systems that people actually use.
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!
Lurker Indeed on November 26, 2007 6:34 PMYeah, 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" (Tm). 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. ;)
Lachlan on November 26, 2007 6:59 PMSo when your new blog coming out? the one which will build "that bridge between the 20% and the 80%" because ive learnt nothing from this!?
ponderer on November 26, 2007 7:03 PMI don't know if I'm part of the the 20%. All I know is that I like refactored code better than non-refactored code, and I like fooling around with esoteric programming languages like Euphoria.
Jon on November 26, 2007 7:11 PMI work to live - not the other way around.
Put me firmly in the 80%. Hell, put me at the bottom of the 80%. Frankly, I couldn't care less.
I'll take the time with my wife and kids, the time to officiate athletic contests, and any other time I can get to do the any of the multitude of things I consider more important than writing code.
Could I innovate? Sure.
But, my time on this rock will be spent working on improving my life not yours.
Oh good grief! "There are two types of programmers." That's just total baloney. Few things in life are black and white like that, especially people. And programmers are people.
programmer grrl on November 26, 2007 7:27 PMHaha now I know that I belong to the 80%, not like my co workers that are belong to the 20%.
Freddie on November 26, 2007 7:39 PMSome small percentage of the world is 10x more productive than the rest. They are productive because 1) they can understand what the problem REALLY is, and 2) they can find the easiest way to solve it.
Usually they have a large and varied toolset that can be applied to the problem.
But they don't all use
mihondo on November 26, 2007 7:57 PMThere are only 10 types of people in the world. Those who understand binary and those who don't.
Nerd on November 26, 2007 9:19 PMHey, I would say I don't fit into either category above. I'm a third type of programmer.
I don't seek out all the latest languages just for fun. And I don't geek out on all the latest Linux releases. What drives me is creativity and finding good solutions to problems. I did a lot of programming for fun as a kid, from 3D engines to shareware Windows programs. Honestly, I think an incredibly good criterion for seeking out good programmers is whether they started as teenagers or kids. Maybe I say that because my friends that did are good at this stuff.
When it comes to the tools I use, I prefer IDEs because they minimize the amount of menial work I have to do and maximize my productivity.
I come from a mathematics background, so I prefer to "cut out the memorizing a bunch of crap" and just work with straightforward tools. If I can avoid typing a command line 20 times, I will try to do it. That is why I prefer to write in languages where I know at least approximately what is happening under the hood. I intuitively catch logic errors, and identify bottlenecks, just by thinking about what is actually happening. Theoretical beauty is fine and cool. But for real applications, this is important.
That is why questions of algorithm complexity, database schemas, access and security, etc. just naturally arise and are solved in the course of my programming. I don't just get the job done, but I make sure that it works correctly.
Now, that's not enough, though. When you're writing code for a client, you need to help the client come up with good specifications, and show them prototypes as you go along, so they can evaluate what works and what doesn't. These days, I write software for no client other than myself, because I run a company, but whenever you do that (shareware, indie software, web applications, or whatever else), you must keep the user experience in mind. Even though you should always keep it in mind, here it is especially important. It usually suffices to keep a single user in mind (and not an entire group of users), but you have to craft how every TYPE of user's experience will be. For example, if I was writing an application like WordPress (which I probably would not; that's a job for more than one person) I would think about the various roles and security and database schemas and so forth.
However, I'm not trying to toot my own horn, I'm just being straightforward. Here are things I suck at, compared to other areas:
1) remembering lots of command line arguments, programs, etc.
2) administering linux (mainly for the reason above), while really "getting" Windows.
3) administering any kind of configuration for a service, for the same reason of having to learn arcane new syntaxes for everything
4) getting up to speed on a new language with lots of keywords and possible new paradigms
5) learning all the features of a new graphical IDE (although much easier than learning features of a command line tool)
Every time I have to fill my brain with more ad-hoc knowledge, it really slows me down. Unfortunately, this includes learning new frameworks and libraries, like .NET . That's why I always try to skim a framework but learning it fully (especially a rapidly mutating, open source one) is a skill that frankly I could use a lot move practice on.
So am I a good programmer? Well, I can most likely get the job done, whatever it is, from helping you figure out what features would make the most sense from a usability and business standpoint, to designing while we're at it, to sitting down and really mapping out every single part of the app, to coding it. But I choose the platform I'm already familiar with. These days it is PHP/Apache/MySQL/HTML/Javascript/C++. Tomorrow, it will probably be Flash/Flex/FMS/Apache/some kind of custom comet-like server.
So there is a third type, I think. The "practical-mathematical-logical" programmer. I don't just use the tools, but in a corporation my approach might be a little annoying. That's because I try to find out how things critical to the success of my piece of code are working, so that I can make sure it works. I feel a responsibility for making the product work, and I've learned that, in many companies, it seems if you just do your job and don't give a crap about the big picture, you will live a much more peaceful life, and so will your manager. Thoughts? :)
Greg
Greg Magarshak on November 26, 2007 9:28 PMAm I stuck in the 80% group? Hell no!
Do I want to be in the 20% group? Hell yes!
What am I going to do about it? I don't know, I'll think about it later.
I don't agree with the content as most of the people have already expressed. Sorry Jeff I read your blog every day (not only yours actually many of them). I also have pride and passion for my profession, and I know every year that goes by I am a better programmer, but that doesn't put me in the 20% group. I don't care about linux, or compilers I care about solving the customers problem and I can assure you they REALLY DON"T care if your solution is written on vb.net, ruby or python, ideally they just want to make one click to process everything so they can go and have a life, the same with me. I keep updated on those technologies that add value to my work, saving my hours, provinding useful abstractions, I would better be dead than programming in a command line or notepad ever again. Read the article about "Programmers vs Developers" in Eric Sink's website, it is a much better view on what is to be a professional software developer.
Esteban on November 26, 2007 9:39 PMOkay, after having looked at that blog, I can say quite confidently I'm the closest to a
<a href="http://undefined.com/ia/2006/10/24/the-fourteen-types-of-programmers-type-4-lazy-ones/">
lazy programmer
</a> (hope that link appears as a link). I always get lazy about learning more ad-hoc stuff, unless it really helps me. I like elegant, beautiful code, except when I need to optimize.
Greg
Greg Magarshak on November 26, 2007 9:43 PMOne more thing, and this is not meant to be a critic, actually it is what I like about this blog, you regularly post about useful stuff, with great links that helped me discover other authors and blogs, and I am a better programmer because of reading articles like yours, but I am sure THIS BLOG is NOT focused on the 20% alpha geeks, if it would, you will be posting about pointers, compilers, haskell and linux, for example, and you would have never EVER admitted that you program in .Net.
Esteban on November 26, 2007 9:55 PMGeneralizations make it simple to refer to groups in written or verbal communication, but they are usually not very realistic. Typically, most people fall somewhere in the "middle" of a bell curve, whatever the subject or situation may be.
In my opinion, the "divide" between the "20%" and the "80%" is just another artificial separation. It separates people into 2 groups, and for some people, one is perceived as "better" than the other. To ask one group to "reach out" to another is a scary concept. People trying to change others is happening in so many areas of life, whether it is religion, politics, or software development. To say one way of life is better than the other is very subjective and relative to the perceiver.
I'm an 80% progammer (though my experience is Delphi and Perl rather than C# and ASP.net) and I read your blog. I tried Teach Yourself C++ in 24 Hours when I was a teenager. I think it cheapened the field because it had mistakes in the code listings and overall it just wasn't that well written.
John Ferguson on November 26, 2007 11:34 PM
>if you want to make a difference this year, you have to help us reach outside our insular little group of alpha programmers and effect change in the other 80% of the world...
>how many typical, average programmers you've reached out to...
a bit egotistic, don't you think?
SK on November 26, 2007 11:41 PMI think I'm somewhere between the 20% and the 80%. I spend a lot of time exploring new coding concepts and deciphering the work of others. I find learning other people's coding practices to be highly educational (I'm currently dissecting the entire code base for Eclipse).
I'm not a code monkey.
However, I am nowhere in the league of a Torvald.
Perhaps there should be three groups: 1% who are the ultra high-achievers, 19% who are talented but will probably never make substantial contributions to advancing software practices and then the 80% who ARE code monkeys.
Chris Andersen on November 27, 2007 12:02 AMDamn, some people take offence easily.
Methinks thou doth protest too much.
Casey on November 27, 2007 12:14 AMWorking for a living in the 80% field, learning Objective-C, Cocoa and smalltalk in its FScript incarnation one evening hour at a time. Guess I'm in the top 20% of the 80%. ;-)
MaxL on November 27, 2007 12:26 AMThese comments are embarassing. I wouldn't respond, either.
Will on November 27, 2007 1:29 AMSome people are poking fun at the spurious 80/20 statistic. Why not 60/30? 73/27? I think when you realise that 80/20 is the stuff of made up statistics you can understand the quote a little more. It's not about the numbers and it's not about the specifics.
[ICR] on November 27, 2007 1:40 AMYou can have pride in your job, you can be dedicated to your job but just because you don't do your job in your spare time doen't mean you're anything less than a professional.
You could compare it to mechanics - who's the better mechanic? The guy who works in kwik fit, or the guy that works in kwik fit who also has a 1970 Triumph Stag which he works on during the weekend?
When your work and your hobby collide, great, but it doesn't make you any better than someone whos don't.
tubs on November 27, 2007 2:13 AMHm... after reading some comments I felt compelled to contribute with my own take on the subject.
About good vs bad:
It's not about doing the job right. It's not about doing the right job. It's about doing the right job right. For this you probably don't want a Linux geek (who can only do the job right) nor a Microsoft-sellout-businessman (who can only do the right job) but rather a combo. To quote Matz:
"They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves"
About 20/80:
You can make any arbitrary split between the good and the bad. 1/99, 20/80 or 0.1/99.9. What we can tell is that there's a huge difference between the best and the worst programmers (something like 100:1 or 10000:1) and that most people don't belong to the 100x-group (I don't).
As for the bell-curve: It's not. It's a log-normal pdf.
About where you belong:
Belonging to the top-20% is not difficult (20% of the developers belong to that group after all). If you've read one (1) CS book this year you probably belong to that group.
I'm not in one of those two groups and I even though I know some developers that fit in one of it, the most i know do not fit in.
I understand but pity the 20% group and don't understand the people fitting in the 80% group ...
Hinek on November 27, 2007 2:22 AMThose commenters who are rushing in the defence of Jeff with :
1. Don't take 20/80 too seriously : And why not? He quoted it and is the central theme of the post. He could have said the same thing without using these numbers.(and utterly out of context from a blog which was about something else completely)
2. I have the same feelings exactly : Prey tell how? Unless you are smoking something else , I cannot see how this post makes sense (The 80% use MS handdowns and one of the 20% uses ASP.net - I'm no brain surgeon but I can see the contradiction here)
This is what I think : The man can answer for himself. He maintains a blog for God's sake.
Wondering on November 27, 2007 2:32 AMI always find 80% of rules have a 20% minority referenced in them!
Roodiedoodie on November 27, 2007 3:49 AMIt's true that ideas such as unit testing, proper version control and configuration management in general, adaptive planning ("agile" for the newbies), systems thinking, and so on seem to only achieve penetration in the general population surprisingly slowly - most of these ideas have been around for well over 20 years now.
And it's true that *some* of this is down to the difficulty of educating the bulk of the those focusing on implementing stuff with lots of messy real-world non-technological concerns.
After all, educating people is difficult enough even when they are primed and eager to learn. It's far more difficult when they are under constant pressure to deliver and time spent learning/self-educating is viewed as a luxury in many organisations.
But much of the problem introducting innovation comes because the organisations in question have settled into states where it isn't all that easy to change development in a whole new direction, and the 20% analytically bright people who are aware of the possible new directions are often frankly pretty *dim* when it comes to understanding why and how to get around this. This is because it involves an understanding of how people work together to create value (including the non-technical people) rather than just goings-on in the technological realm.
You're more valulable if you are prepared to work on both sides of the divide as the situation demands, eg are prepared both to make suggestions and to get your hands dirty with the hassle of maintaining real-world systems wand interacting with non-technical users hen the need arises.
The 80/20 is a rhetorical point to show a distinction between innovators and implementers. Both sides need each other and there is no shame (or particular glory) in being on either side. Many people will end up moving between categories at some point, in both directions, and this will tend to make them more valuable, not less.
Like some other commenters, I find the defensiveness many are showing here fascinating. Why so worried about a label that someone else is putting on you?
Matt Morris on November 27, 2007 4:26 AMAs I read some time ago on somebody's T-shirt: "I'm a lucky guy: I'm a Linux guru and I have a girlfried".
Matt: "Why so worried about a label that someone else is putting on you?" because I cannot help thinking who is this guy to put a label on me. You know, everybody feels special somehow and wants to put himself into a sort of enlightened minority. Coming to the conclusion that you fit into a large category and you are easily replaceable doesn't appeal to anybody.
In other words, reading the 20/80 theorem feels like hearing somebody saying: you have 8 out of 10 chances of being dumb and I have 10 out of 10 chances of being smart.
is this you're most commented on entry ever?
i write programs basically for me....to help me get my job done....almost noone ever gets to see them...
...and I like reading your blog ;)
-alex
alex on November 27, 2007 4:47 AMAlex, I think this one http://www.codinghorror.com/blog/archives/000781.html
still wins.
I don't know if anyone reads my comments but I do care...
I've been in this business for a long time and I've drifted from 20% to 80% and back to 20%.
I think what you need to do to stay in the 20% is to find something to keep ones self excited. I know a lot of you are very excited about ASP, the web etc. and rightfully so, however, I'm stuck in the mundane world of internal business apps and my excitement for ASP and .NET is beginning to wane.
So, what's a developer to do? Take on a huge personal challenge!
My latest interest is robotics and AI, in particular, the learning problem.
Now, why am I going on about this? Well because in order to remain in the top 20% of your field you have to have passion. You have to have a passion that is so strong that you dream about it. And if you have this plus at least half a brain you will succeed.
Like they said in Galaxy Quest; 'NEVER GIVE UP, NEVER SURRENDER.'
The point is, find something that excites you; that you are passionate about and then go for it.
Trust me, you will never regret it.
I can't agree with the 2 types thing. There's some of us in a little in-between world who never cared about linux sometimes do some coding on the weekend, but don't stop thinking about computers and are always pushing newer technology at work.
Maybe it's 20-5-75? ;)
Telos on November 27, 2007 5:59 AMcurrently i am an "80%er" ,i am finding it quite difficult to dedicate myself to programming there is soo much to learn (i just started to code)and i am the lazy-reader type but i have the zeal to be a "20%er".i need to set my priorities right,curb the laziness and become more focused .
gogole on November 27, 2007 6:39 AMThis may have already been said, but frankly I am too busy to check the previous 200+ comments, so please forgive me.
This is no surprise. This is a universal truth with just about everything - careers, politics, whatever. Some people care and some don't and there is a huge huge gap in between. Think about the majority of the interactions you have throughout your day. Probably 1 in 5 cashiers/servers/attendants/etc you encounter are genuinely friendly, helpful, knowledgeable, etc. It isn't just in computerland. Look at the percentage of people who vote versus not. Then take that group that votes and you can again divide the 20% that actively give a damn enough to do something beyond just showing up once every four years.
Chaim Krause on November 27, 2007 6:40 AM"Those commenters who are rushing in the defence of Jeff with :"
I'm in defense of the actual value the post has which has been derailed by this 80/20 nonsence.
Here's the "20%" alpha coder Profile:
1) Young
2) Reasonably bright
3) Either in or just out of college (7 years max - usually)
4) Unmarried
5) No kids
6) No other major distractions
Exercise question: Can you figure out why someone fitting the above description might have more coding expertise than a married single parent with two kids working a dead end job to make ends meet?
Apparently some people can't.
I've been to a presentation by Jeff Atwood in Fresno at the Central Cal Dot Net Users Group. It got me excited! While I'm probably in the 80%, I do make forays into the 20% camp on occasion. I've installed Linux several times back in the 90s, switched from Win 95 to NT Workstation SP2 when it was available, have tinkered with AJAX, drupal/joomla, etc. I'm not an alpha programmer by any stretch of the imagination, but I like to think I'm an alpha geek. :)
Jason S on November 27, 2007 7:28 AMWow. I never realized that to be considered to be among the top 20% in this industry, you had to have no life. That's sad.
Hutch on November 27, 2007 7:40 AMThere was a good post on Informit recently that addresses the need you're highlighting: 'awareness' resolving to 'leadership'. It discusses the 'Value Chain' as it relates to the SW industry.
If I had come across that orientation I wouldn't have been distracted by non-productive management activities and would have been extremely productive and focused. Instead, hoping to learn what I didn't know, I fell into a dead-end role that I'm just managing to drag myself out of. Long way to go still, but because 80% hasn't got it, there still has to be opportunity out there for me to work with.
I have no affiliation with either Informit or the author of that piece/book, I just want to be a leader and seek that type thinking.
Sans S on November 27, 2007 7:47 AMFolks, get a life and be an 80%er. There's a whole world out there beyond bits and bytes. When you're 65 years old you will have worked roughly 90,000 hours during your career (40 hours/week * 50 weeks/year * 45 years). Will you spend an additional 10 hours on the weekend to write that stupid lisp compiler, thereby spending an additional 23,400 hours over the course of 45 years? When you are 80 do you think all your bosses will be lining up to thank you, or do you think your kids will appreciate the time you took to play with them? I understand working a bit on the side for your own improvement, but this 80/20 argument is ridiculous. It sounds like a playground argument to me: "I'm smarter than you!" Take your paycheck and go home and enjoy your family. Cheers!
RealityCheck on November 27, 2007 7:47 AMWhich begs the question, what happened to us "old" 20%ers. Simple answer, we got old. The passion is still there, but the capacity for endless chasing after tech that has the shelf life of a banana is significantly reduced, partly by the futility of it all, but moreover the reality is that most of the so called innovations presented by new technologies are simply a rehash of old ideas in new clothes.
When you are an old 20%er you have likely found something other than the latest and greatest OS to be exciting or interesting. I know for me it is digital audio signal processing.
Finally, at some point all of us need to make a living, and get on in the world. Dot net and it's cousins are a means to that end. And the 80% world of coding is 98% of the world that pays real money dependably for code.
The other reality for 20%ers is that we are often successfully accused of lacking some of the social and networking skills that our 80% cousins thrive on. After all those are skills we have little time to pay attention to, when we are heads down in our digital dream world. But those skills pay real money. Eventually some of us figure this out, and begin to pay more attention to the things that people are willing to pay for, regardless of our opinion that they lack significant challenges. At some point an epiphany may transform that original thinking, when you realize that people are the key to every significant innovation. All software is made by people for people. The only question is which people. Most 20%ers start by preaching to the converted, and many never get past trying to out do one another. This is a shame, but it is inevitable. But when a breakthrough does happen, and 20%ers look to create great stuff for everyone, then they go to work for Microsoft, or Google. Or they create a Microsoft or a Google.
Michael on November 27, 2007 7:48 AMJeff,
I've considered you a lot of things, but this is the first time I've considered you an elitist.
philihp on November 27, 2007 7:50 AMThis post made me a blogger. http://passionet.blog.com/2349359/
Charles on November 27, 2007 7:57 AMIn any endeavor there are naturally a limited number of people you would consider to have virtuosity.
We can break down the nature of virtuosity itself into other subsets... and the rabbit hole goes deeper until we shockingly find ourself face to face with the realization that the hole never ends.
It is a natural human tendency to try to categorize, and it makes good business sense to create these categories to aid in decision making.
I was introduced to a different way of looking at programmers at a behavioral level. Those who know the language(s) so well they simply code the solution and its correct, and those who know the language just enough and debug their way to a solution.
Personally I find the behavioral approach to categorization far more constructive.
Nick Waters on November 27, 2007 8:04 AMThe perfect programmer you describe is a nightmare.
Charles on November 27, 2007 8:08 AMHey, 80%ers, stop whining over this post.
A few things:
) The blog post, though it hurts some of your feelings, is totally on target.
) There is no shame in being an 80%er - you have different life priorities.
) Though there are exceptions, people who install open source things usually are much better programmers / computer scientists. If you want to become much better, give it a try.
) If you are trying to be in the 20%, you already are. It is about drive and focus on this work.
I think it is important to remember that it is your life and you get to make the choices about how you spend your time on earth. If you don't want to be in the top 20% at programming and want to have a life, don't - and then don't defend yourself for your choices and don't expect that you should be paid as much or get as much respect at work.
Stop defending your life choices.
Dan on November 27, 2007 8:11 AMI wasn't defending my life choices (although I like them!). I'm merely pointing out the absurdity of defining people in the way that the 80/20 scenario purports. Life is not 80/20. It's fluid. Over the past 12 years of my working career I've been driven, worked hard, spent spare time to learn new technologies, developed LOTS of code that is running in the "real" world. Oh, and I've been doing just about every UNIX OS that's been around, as well as Windows dev. So I could easily claim to be in the so-called 20% camp if I wanted to. But I don't. It's absurd. There is no 80/20 divide. It would be much more accurate to say that there are some people who are passionate about software dev, AND they are lucky enough to find a job that offered something to be passionate about. That is harder to find than I ever expected. On the flip side, there are people who just don't care very much. It's true. I've seen it. But to delineate with this 80/20 characterization is just false. IMHO.
RealityCheck on November 27, 2007 8:27 AMThe first thing I always tell anyone who I talk to about what I do is that programming is a different way of thinking. The radical difference between programmer thought and normal human interaction is so vast that in order to relate it to others, you have to build an elaborate abstraction layer.
The thing is, you do have to let people know it's hard. In the case of 80% programmers, they need to know what they are getting into when they decide to stop using VS and start writing C++ and compile with Borland. In the case of people outside of programming, it always seems like they think it's so easy. "Oh, you just sit in a chair and type all day, you've got it hard." They have no idea what it's like to pound out brutal machine logic all day long and solve incredibly sofisticated problems with tools that they have to make first.
I once explained how hard it is to program to my roommate, who works on cars. He thinks his job is so much harder than mine just because it's physically strenuous, which I laugh at. I'm not shy of physical labor, but I've never been challenged by a car like I have by things like C++ or PHP. Here's how I explained it: "Imagine you have to assemble an entire late-model Ford, except you're blindfolded. All of the parts are laid out in front of you, but you have to physically find them, and see if they fit together. If you're lucky and the documentation is good, somebody is there to tell you how some of the parts fit together. Oh, and as for tools, you have to fabricate them all from scratch yourself."
His eyes literally got wide when I told him that. He had never imagined that programming could be so hard. This is why programmers are usually so grossly under-appreciated. All of the people out there who ever assembled a VB.NET project using Design View or put together an Access database or wrote a macro don't help either, because they like to sound like they know it all, when in fact they know almost nothing about programming. Unfortunately, most non-programmers don't know any better than to take their word for it.
Mattkins on November 27, 2007 8:30 AMJeff,
I just wanted to let you know that you're reaching at least 1. My skills put me solidly in the 80% although I am desperately trying to claw my way into the top 20%. Your blog posts may just help me get there. Thanks!
Err ... This means that to be a good programmer you have to spend 90% of your time sitting in front of a computer. I'd prefer to be a sane programmer then ;)
Good post btw, as usual, if I may say ;)
Pierre on November 27, 2007 9:04 AMI disagree with those two groups; what about the group in the middle? I am aware of the latest trends and installed Linux in the 90s, but don't have the free time for OSS projects nor have I ever written a compiler. I certainly know my fair share more than the 80%, but perhaps I'm not quite up to the 20%. Where's the arbitrary group for people like me? How about... 25-30%?
My point is, I think the overall point of this post could have been made in a way that didn't involve segregating all programmers into two very different, very distinct groups. Not that I agree with the point in the first place; most "80%ers" are quite happy where they are and have interests that preclude them from really dedicating the time necessary to reach the upper echelons. I think it would help more if the 20% started yelling louder.
Tom on November 27, 2007 9:04 AMI agree with most of the other critical posts here - I find the 80/20 generalization completely out of touch and elitist. This is usually one of my favourite blogs, but I am very disappointed to see that Jeff subscribes to this nonsense.
I think there are a certain number of bloggers who have created this image of an elite group of "superstar" programmers working above and beyond the abilities of the uneducated masses. Frankly, most posts of this ilk are offensive and elitist. I am not writing compilers in my spare time on the weekend. I'm not contributing to open source. But I'm not some docile idiot doing the bare minimum to stay afloat, as this post and many others imply. Nor are my coworkers, most of whom almost certainly have other priorities than re-installing the latest and greatest linux distro for the umpteenth time. Shame on those who spread this nonsense.
Jason on November 27, 2007 9:19 AM@Dan -
It isn't about defending life choices it's about the elitest (good word used here by others which describes this post precisely) arrogance in this blog post and many of the comments. Especially from people who honestly believe crap like: "people who install open source things usually are much better programmers / computer scientists." as if what software someone installs or uses has has any correlation to their value as a developer. It's the artificial bullshit tests like that and those in Jeff's blog post which are subsequently used to assume a developers worth that people have a problem with. Unfortunately the so called "20%" that are commenting here and defending Jeff's elitism with all the same ridiculous arguments are only propagating this supposed 80/20 divide that Jeff claims to want to bridge.
Mjoyal on November 27, 2007 9:37 AM
Ah Jeff, I think you stayed up too late trying to think of some content.
You're definately right...we all can't be the John Carmack's and Linus Torvalds of the world, writing compilers, coming up with a new protocol called Bit Torrent, but sometimes believe it or not this is by choice. Some of these individuals who have started a new trend or technology have dedicated a significant amount of time creating their work. And as a programmer we all know there just are never enough hours in the day. While, I'm sure I can lock myself into a closet a come up with say a new programming language why would I even do this? The whole damn point is stop re-creating the wheel so we can go home on the weekends to see our families. I'd rather be a diciplined 80% person working on the same banking software as you mentioned, making consitent money but more importantly seeing my family every night then be the 20% locked in a server room creating the next frankenstein, mutant language that will appeal to the masses. I'll leave it to someone else to do the dirty work. I'll leave it to you because life is not just about sitting in front of a computer screen for 80 hours a week.
And by the way...playing with the latest Ajax Toolkit or Linux distro doesn't put you in the 20% category. Are you trying to tell me your some elite innovate ground-breaking programmer god because you know how to burn a bootable .iso file to disk and run the Ubuntu live cd off your laptop that work gave you? I think not...lame...that's just lame.
I submit that your 80/20 observation is not that useful at the level of objectively classifying any one person in any meaningful way, especially for a particular task. I am a ninja at certain things that I doubt you have much awareness of (by virtue of the kinds of specialized projects I have worked on for years) and I am a complete idjit with regards to some of the currently popular stuff (parts of agile, certain design patterns, etc) and rusty on others (ASP.NET UI stuff). So for some tasks (e.g, building custom ETL solutions in certain vertical markets) I am in the top 1%; in others (game programming, assembly language) I am in the bottom 1%. Because I am a tad on the "been there/done that/got the t-shirt/little bothers or impresses me anymore" side, and do not for example learn Haskell on weekends (actually finding certain non-computer pusuits more entertaining, and having a life -- imagine that!) I would probably be a 70 percenter or even less to the casual observer.
So what?
Makes for a good blog post but I don't know how useful it really is. It's like arguing about which language is better. They're all better -- for something.
--Bob
Bob Grommes on November 27, 2007 9:53 AMI'm shocked. I don't think I am either 80 or 20, and I resent the fact that you are trying to stereotype me into one. It's analogous to racism! Disappointing!
mt256 on November 27, 2007 10:31 AMI'm definitely in the 80% and I'll gladly answer your question as to "how to reach us". Keep it simple and remember that some of us are in that 80% because we simply have different minds. I program because I love problem-solving. Give me your awesome tools and give me a problem and let me do what I love. Don't try and make me understand how your tool communicates with the computer. That's your passion, not mine. I'd rather rearrange my sock drawer. Really. Because I enjoy that too.
Stephanie on November 27, 2007 10:51 AMIts a trade you guys, just like a plummer or a electrician or a mechanic.
shawn on November 27, 2007 11:04 AMOk, is it possible to just say the article has a few good points, even though it misses the mark on a few items (such as there being "two" classes, what the split is, what defines the split, and which it is better to be)?
There are different types of programmers, correct. But there are many differences on more than just one big continuum.
There are differences in programming ability that go beyond any particular language or OS. An ability to think logically and find a solution that works for all cases, or to at least make sure all cases are covered; and to be able to cleanly write it up with whatever tools you have to pick from -- whether that's a huge list of personal favorites or a narrow, job-defined one or two.
There's the ambiguous "devotion to the craft" (and there's even the division between people who call it a craft and those who think such labels are pompous!) -- how much of your personal life do you devote to it? Do you read books, articles, take training for things you will never be paid for, because where you work does things differently? Do you spend hours interacting with your computer or with other humans, some of whom barely "get" email, which contributes nothing to your skillset? And, ultimately, which activity makes you feel better about yourself? The thing about this scale is that the further you are from one end or the other, the less you *want* to be on the opposite side. The cult of Torvalds has no desire to interact with the 40hr-per-week developer, and vice versa.
There's technique, which again is vague and could include anything from design models to source/version control designs. Some of which people get passionate about, while others see it as YALOT (Yet Another Layer of Tedium.)
Maybe there's something to be said for keeping up with what's new.
Maybe there's something to be said for concentrating on what you need to do the job you're paid for.
Maybe there's something to be said for donating time to open source or your own freeware/shareware offerings.
Maybe there's something to be said for your family seeing you other than through the home office door.
Maybe there's something to be said for a well defined, structured plan of attack.
Maybe there's something to be said for just being able to see the answer and making it happen.
Maybe there's a time and a place for everything.
I'll agree that the 80/20 distinction is non-existent and meaningless. If it did exist, and you want to be in the 20% band, you should do it for your own satisfaction and not anything else. Years ago I would have put myself there. I worked long hours, paid attention to each new technology, and installed and worked in various flavors of UNIX/Linux. I did a lot of script programming to automatically pull changes from source control, run make, and update the test environment as needed. Plus much more to automate away the tedious job tasks. I still use Linux to do the same. I was asked to solve the most difficult problems. I was the one to ask if a issue could not be solved. Yet, come review time, I'd get 'Excellent' at everything, and then get told I could not have a raise as I was already at the top of the salary band. I could not be promoted because I was irreplaceable. I attempted to train replacements, only to see them promoted to be my boss. So I'm in the 80% now, by choice. As I mentioned, I still play with Linux, and occasionally do my own projects on the weekends, but I find more satisfaction from playing with my kids and spending time with my family.
Tim on November 27, 2007 11:55 AMWhat's really funny about this post is that Atwood probably wrote this assuming he's in the 20% group (when he most likely is not) :-)))
Stan on November 27, 2007 12:10 PMI totally disagree. There was a post a while back on the 37 Signals blog about this. Something like how billions of people do something, every one of them would have a better life if they got better at it, but only the ones who are already very, very good study it to get better. I wish I could remember the specifics, it would make a more interesting comment, but ultimately the specifics don't matter. If you've got ways to make programming easier, or better, or more fun, there's a small audience that are very easy to persuade and a huge audience that is very difficult to persuade. Unless you enjoy persuasion challenges for their own sake, there's no benefit in targeting the 80%.
Giles Bowkett on November 27, 2007 12:54 PMI was about to follow up when I read RealityCheck's comments. They are my exact thoughts.
And with that, I leave the playground.
AaronZ on November 27, 2007 1:00 PMok, i've read this entire thread, and have contributed twice so far. I'll just add 1 more thing, and then i think i'll just watch. here's my last point. I LIKE TO WRITE SOFTWARE!! That's why i do it. I also get paid for it, and that's very nice. the 80/20 notion is quite over-simplistic, and i just don't buy it. i think most folks out there have a similar feeling, so i'm not delving any further there.
i will say this about a side topic that has arisen: building software from scratch for the heck of it is kinda pointless. if you think that doing so shows what a great programmer you are then go ahead. i'll spend my free time elsewhere. all progress comes because we innovate on the shoulders of those who came before us. Einstein needed his predecessors to get where he did. so why bash the tools that can give you more ability? it's like asking the doctor who is going to perform heart surgery on you to not take every advantage. so what if he doesn't know HOW that medical device works on the inside? he has his job, and the device maker had his. you can't learn about every detail of every last thing. you take the tools that are good, and you use them. calling them inferior because you didn't create them is just foolish. i developed unix apps for years, building all the components from scratch. then i started using VS to create web apps. WOW! that sure is nice. i appreciate the hard work of others to provide good tools. i won't poo-poo them because they are pretty.
RealityCheck on November 27, 2007 1:01 PMok, i've read this entire thread, and have contributed twice so far. I'll just add 1 more thing, and then i think i'll just watch. here's my last point. I LIKE TO WRITE SOFTWARE!! That's why i do it. I also get paid for it, and that's very nice. the 80/20 notion is quite over-simplistic, and i just don't buy it. i think most folks out there have a similar feeling, so i'm not delving any further there.
i will say this about a side topic that has arisen: building software from scratch for the heck of it is kinda pointless. if you think that doing so shows what a great programmer you are then go ahead. i'll spend my free time elsewhere. all progress comes because we innovate on the shoulders of those who came before us. Einstein needed his predecessors to get where he did. so why bash the tools that can give you more ability? it's like asking the doctor who is going to perform heart surgery on you to not take every advantage. so what if he doesn't know HOW that medical device works on the inside? he has his job, and the device maker had his. you can't learn about every detail of every last thing. you take the tools that are good, and you use them. calling them inferior because you didn't create them is just foolish. i developed unix apps for years, building all the components from scratch. then i started using VS to create web apps. WOW! that sure is nice. i appreciate the hard work of others to provide good tools. i won't poo-poo them because they are pretty.
RealityCheck on November 27, 2007 1:02 PMThis is just the latest attempt in a long line of attempts to put up a wall between the "in" crowd of developers and the "out" crowd of developers. And, being developers, we need to put things in black and white.
These attempts come in many flavours: which tools you use, which conferences you attend, which blogs you read, how many servers you've built at home on your spare time, even which certifications you have.
It doesn't matter. If you need such a distinction, you can't do it with one or two discriminators. You need a whole bunch of crisp and fuzzy discriminators to find out if someone is a "good" programmer or a "bad" programmer.
Does it matter anyway? Is everyone so insecure that they need a label? I'm a good programmer -- but not because I have a certification (I don't), and not because I build servers in my spare time (I don't). Go to work. Distinguish yourself by the quality of your work, and the amount of change you effect in your organization.
If you need a label, I'm not sure that I want to work with you.
Hmmm...I'm not sure how much I agree with this. I really don't fit into either of those groups. So either that means I don't exist or there are more than 2 groups. But I suppose if I have to pick one of the two it would be more twords the 20 percentile. I'm self taught and like to continue learning as much as possible, while I did help push our company into using subverion, I'm not obsessed.
Not Quite on November 27, 2007 1:28 PMWow
Just look at this backlash! Strange, as surely we all know we're the 80%ers - we have girlfriends, read books, take drugs go to gigs and read this blog (I believe that the 20%ers are way to busy reinventing wheels and ordering fatty foods online to read anything like this).
I don't think that Jeff was intending to offend anyone. I stand by my previous comment - namely that no one should be shocked that most programmers are in the 80% bracket - after all if we were in a minority then we'd be at least less than 50%.
Jeff, this should, though serve as a warning. I have seen, at least twice, you referred to in other blogs as belonging to a group called the internet Nazis.
Get out more, stop navel-gazing, and stop worrying so much about what other people do.
Oh yeah .... and there's 2 types of programmers my friend.... those who come in through the door, and those that come in through the window.
Red on November 27, 2007 2:38 PM(I can't believe I'm being sucked into this...)
"The 20% folks are what many would call "alpha" programmer..."
Well, more accurately, the 20% folks are what *the 20% folks* call "alpha" programmer.
The "rest of us" measure things by accomplishments. Let's see what the alphas consider the accomplishments necessary to join their little club:
1. First ones to install Linux at home in the 90's
2. The people who write lisp compilers and learn Haskell on weekends "just for fun"
3. They actively participate in open source projects
4. They're always aware of the latest, coolest new trends in programming and tools
5. Participate in passionate cryptography arguments on Slashdot
6. Download the latest GIT releases
7. They get all excited about the latest Linux distro or AJAX toolkit or distributed SCM system
8. Spend all weekend on it
9. Blog about it
10. Confounded about why they can’t get their office to start using it.
Of those top ten, only 2 and 3 might actually produce something. 5 and 9 are used to give some of their knowledge back to the community. Five of the other six items are pretty much self-centered activities. The last item actually points out a failure that they never bother addressing.
Would I want to join a club like this? As the late, great, Groucho Marx once said: "I refuse to belong to any club that will accept me as a member." I'd much rather be in the group that does things instead of the group that thinks they are better than the rest because they spend so much time *talking* about doing things.
Nevin :-) on November 27, 2007 3:24 PMOnce upon a time I worked with one of 'your' 20%'ers ... he was a total pain in the ass and everyone hated him. He wasn't actually smarter, or better, but he fit your 20% profile. He lived to code. He was passionate. He evangelised. He knew command line unix. He wasn't any good though. Did I mention he had no friends? We classified him as a HFAA - High Functioning Autistic Adult - something which it seems many of 'our kind' fall into.
I've also worked with damn brilliant guys who've never looked at Linux, don't care about open source, are self taught and progressed up through MS technology ranks and make a ton of money.
So,'your' list of 20%'ers sound more like losers than leaders. I'd rather have the impassioned discussion about crypto in a bar with 80%'ers, get drunk and be raucous, then go home and play some GTA.
'poop elitist crap' as others have so aptly said.
---
Regardless of profession, you either care about what you do and how well you do it, or you don't. I'd like to be a Hero, but I'm not naturally f'ing-brilliant-without-effort, so like most people out there, I have to work on it.
[Request: Please stick to technical articles that relate to coding or pitfalls in coding.]
Mr Sandman on November 27, 2007 4:03 PMI'm one of the 80%. Yay!
James Beswick on November 27, 2007 4:05 PMAs a manager (I code very little any more) - I would appreciate your thoughts on how to avoid being called a "pointy hair boss"...
Rob on November 27, 2007 5:10 PMIt seems like this blog posting started the classic "I am better than you" argument, and since I saw quite a few of these arguments before, here are my two cents.
These lists are usually started by a developer saying: "I am the most talented developer ever. Let me count the ways why I am so talented." Then the developers starts listing all the things he or she (actually, it is usually a "he" type of thing) does as a developer, and comes to the conclusion that this is how you become one of the 20%. I have worked with so many developers just like that (heck, I probably was one when I was younger) that I stopped taking them seriously.
So all you guys who got offended by that list - relax. Nothing is wrong with you. Some of you are more talented than others even if you never worked on an open source project in your life. There are things that are way more important to make you successful in your career.
Things like:
1) Can you take a requirements document and generate a design out of it, preferably one that is based on abstractions that would allow you to extend your code in the future?
2) Can you justify your design, choice of technology, and method of implementation and explain why it is better than the alternative? Can you actually list the alternatives?
3) Do you know what will happen to your code if 10K users would run it at the same time? Will it break? Will it scale? What if these 10K users are all the same hacker trying to break your system? Will he be successful? Did you even consider that option?
4) Can you mentor junior developers on your team or are you mostly focused on mocking them for their lack of knowledge?
5) Do you understand what value your work generates for your company (if at all) and what you need to do to maximize that value in the short-term and the long-term?
Final note - I liked reading the comments regarding the balance between work and life. It is usually a sign of maturity, not lack of skill, to recognize that there are things in life that are more important than writing a LISP compiler over the weekend. But of course, some people don't have life...
Go Sharks
At the risk of drowning myself in a sea of comments, I won't abstain from replying because this issue really drives me crazy.
I'm from that group of developers who refuse to belong to that 20% crowd mainly because I reject the idea of programming as a vocation. While I can spare some respect for the really brilliant type, I'm completely freaked out by all of these wannabe alpha geeks who hold on to their craft like some do to their Bible. As if the rest of us, the impure, were doomed to suffer in Programmer Hell.
Well, to be frank, I do suffer. I'm certainly enlightened enough to know that I'm in no way working for Heaven Inc. In fact, most of my working life has been about trying to live in a better pit, looking up, because it was dark all around. It took me a while to figure out that education and experience are no substitute to sharing a hobby with a group of qualified peers. You rarely get that privilege from work. Not unless you're, well, touched by the Programmer's Gods. And that's unlikely to happen after a lifetime in Hell...
Closer to reality, you don't need much programming genius to code the average Web application. With adequate tools and practises, I expect you can get a lot done by the 80% crowd -- who might incidentally impress everyone on aspects other than pure coding. So, if you don't mind, I will rather consider the 20% barrier as a tale for geeks who'd like to feel as part of an elite despite the fact that plain coders are only instrumental to those who hire them.
Luis Parenthesis on November 27, 2007 6:30 PMSo what is the ultimate point, that the 80% crowd isn't open to new ideas? I'm what I would consider an 80% programmer but does that make me a bad developer, or on that doesn't care about his craft or work? I enjoy learning new technologies, but I don't sit in a room with 3 monitors on all night trying to build the next Google. I read this blog, I read Hanselman's blog, I check out Java as well as MS articles to try and keep up. Is it bad that I choose to have a life beyond my pc? Should I be chastised for being one of the few programmers in the world that is actually in shape? Instead of sitting coding till 3 am I like to get up 2 times a week and play hockey at 6 am. So I wouldn't say I'm not being reached out to or I'm shunning the new technologies the 20% crowd is trying to trumet. I will say that I spend over 10 hours a day at a pc for work, why in the hell would I want to spend another minute more at one when I could be making a difference in the life of my kids by reading a book to them or teaching a hockey clinic to kids just learning to play or helping out at my local church or actually taking care of my house and the environment I live in? To me, this is stuff that actually matters and will actually contribute something to society, not trying to figure out how to build a better "mouse trap" to load data on a web page faster.
Tim on November 27, 2007 6:30 PMFYI, I've written a followup post that apologizes for the original post that Jeff Atwood is so eagerly quoting. :-)
http://blog.red-bean.com/sussman/?p=82
Ben Collins-Sussman on November 27, 2007 8:44 PMI think 20 / 80 is more like.
leaders and followers. This exists in all things.
except the followers in this case are lost.
This is the most elitist shit you've written.
tsb on November 27, 2007 10:16 PMI think I was a 80% until I started reading your blog... :)
UnderpaidLoveMonki on November 27, 2007 11:07 PMAnd what is really funny is ... almost everyone here is firmly in the 20% bracket ...
You are reading a blog, and you are passionate enough about development to reply and give your opinions on it.
Sorry guys, much as you might not want to be labelled, or want to belong to any club that would have you as a member, you are in the 20% ... there are hundreds of thousands of developers out there who have *never* read a blog other than to copy/paste some sample code from a Google search.
Utter garbage, there is a continuum, not a divide, I have feet in both so-called types of programmer, when will people realise that the world is not digital, but far more messy and fractal.
Infernoz on November 28, 2007 12:54 AMThanks God im in part of 80%.
Pikpok on November 28, 2007 1:13 AMIf I was a pie, I'd be an apple pie.
Jeff on November 28, 2007 2:27 AMGreat post.
I was going to post a comment, but there are so many already (many of whom seem to have missed the point somewhat).
I am one of the 30% who think they're in the top 20% of the 80% but are really 90% of the 20% between the bottom 70% and the top 10%. ... At least, that is true 27% of the time - the rest of the time I'm writing compilers for biochips so I really don't care.
- AJ ;)
><>
I'd just also like to say "crock of poop" among all this elite company.
Stephan on November 28, 2007 2:54 AMI'm a Java developer and why I am no inovator , I love my job and I use Linux , Solaris and the Windows platforms. I do keep up with new trends,
but its not reasonable to to take on board every new concept and technology.
I don't write blogs or participate in disscussions all the time (well maybe this one)
So what am I? a 20% or 80%
I think some classifications there are a tad simple and wrong.
mannie on November 28, 2007 3:26 AMI don't mean to add fuel to the fire, but I think something similar happens in application development versus consulting. See http://www.curiouschap.com/?p=26. No flames please! :-)
Hisham Abboud on November 28, 2007 3:26 AMif this 20% would have been 100%.... then there would be only leaders..no followers...
its ironic to say that.... without followers, a leader is insane...
I once told my freind: dude do something extraordinar, leave your marks on the world..
at this he replied: I am satisfied with just a secured job and few good friends around me..
Since then i understood that ...ever single person has got its value....
Umesh on November 28, 2007 4:36 AMyour world is so sad... just black or white, good or bad, ingenious or idtiotic
This is crap.
There are many more types of programmers than that.
Lots of people could give a crap about Linux because they want their efforts to go to something that changes the world -a product- instead of tinkering around with a not-ready-for-prime-time OS , which, as a category of software, is only good for getting something else done.
The type of people you describe as alpha are not alpha in my book at all. They're smart, but as an industry, we've got smart people falling out of trees. Really smart creative people that have a vision for how computers intersect with society in a larger way than an OS and can realize that vision in the actual world - they're real alpha programmers.
Or the Donald Knuths of the world, who exactly DON'T jump on every passing PHP STRUTS GIT JACKASS, er ... I mean AJAX bandwagon but actually advance our knowledge as a society and secure our future as a species. They're the REAL alpha programmers.
Or the people populating our universities, getting paid 55k a year and who are absolutely brilliant and publish their research in journals and in whose class you may have been lucky enough to sit- they're the real alpha programmers.
Not everyone YOU cited as alpha is a porn-downloading, online-gaming, forum-pontificating, semi-autistic, tunnel-visioned, egomaniac. But then, not every bird flies either, so that's not saying much.
yeahright on November 28, 2007 5:00 AMWhy reach out to the other 80? take the retrenchment money when it comes, and let the 80-now-100% take the office down with them. Live cheaply on the money and hack 80 hours a week on what i want to
forget the other 80 on November 28, 2007 5:04 AMFirst, I have to say that your "shocking" statements are only shocking to someone who lives in a cave.
Second, since I adopted OS/2 in the 90's, I guess I'm in some wierd bizarro .1% club that wanted their DOS and wanted to eat it too.
Third, I've always divided programmers into the 5% that knew how to program and the 95% that didn't but still got paid for it.
Perhaps number three is harsh. Certainly, the 95% can get things done, but they usually need help if they run up against something new, and generally get things done much slower than the 5%.
As for Linux vs Microsoft, doesn't matter one twit as far as determining how good someone is at programming. If you are dividing people up based on what tools they use then you aren't dividing them up by how good they are at what they do, you are dividing them up based on who agrees with you and who doesn't.
Dan on November 28, 2007 5:51 AM82% for me..
80% pays for my two 911's and three nice houses. 2% gets me the next contact.
Zipf's law holds. The majority of the benefit (or damage) is generated by the minority of a population. Keep in mind, there is rampant self-delusion among programmers. Weinberg conducted out a survey which found 90% of programmers consider themselves above average. The truth is worse. Knuth observed only about 1-2% of C.S. students "really get it". And if you are offended by elitism, I have to wonder how you might feel about mediocrity (or worse). Celebratory? Finally, as a self-appointed member of the top 20% (after all, I AM a graduate of MIT in CS with a subsequent MS in CS and 30 years professional experience):
Kneel... Kneel before Zod.
- General Zod, in Superman II
This article received a lot of replies, and some people agreed with the author and as much disagreed with him as well. Personally I don't think it's that simple. In most shops, developers are just developers. Any good practice or standards have to come from the top. I wouldn't want to do all the stuffs that the "alpha" developers do (sometimes being on the edge is not always a good thing). I do want to be good at what ever I am doing, and many of the times I do look toward the "alpha" group to see what they're doing but I don't always agree with them.
slash on November 28, 2007 8:06 AMBy the post and most of the comments, here is what I think: 20% are Linux and Open Source devotes, and 80% just aren't.
It's sad to think someone's "better than you" (to use the mafia phrase) just because of the tool they work with, or what they do in their spare time. And by the way, I DO have my own blog, research a lot and happen to think I get a good job done. I think most of us feel that way.
It's not about wether you spend your spare time doing the same thing (with a different purpose) that you do on your everyday work or wether you get home to be with your familiy or play video games. It's about being commited to your work and growth as a professional and a person.
Hugone on November 28, 2007 9:48 AMNot even one reply to all this Jeff?
Adam on November 28, 2007 10:07 AMLet's not get too hung up about 20% and 80%. Those are not hard data. The numbers are merely used as an hyperbole to drive across a point. It is just an observation that's common in most industry and in life. Think of a bell curve. It can be seen everywhere.
jm on November 28, 2007 10:29 AMI'd say it's more like 10%, 10%, 20%, 40%, 10%, 10%.
10% - Top of the heap productive programmers. You can read their code and understand it. They are good programmers because they can take complex ideas and make them understandable. You learn things just by looking at their code.
10% - Smart enough to be top of the heap but they haven't learned how to simplify. They are in love with encapsulating encapsulated encapsulation and write some horrible code in the desire to make a single paradigm that works for every problem know to man. Looking at their code makes your eyes bleed.
20% - Pretty damn smart but just don't have the knowledge or breadth of experience to be a better programmer. They've probably been programming for many years and are still excited about programming.
40% - These are the 80%'ers referred to in the above article. I would also add that this group would include older programmers that might have been in a higher group but just kind of gave up.
10% - These are the new programmers, excited about programming but have no real experience. They talked their way into a job and are trying their best to learn on the job.
10% - And down here on the bottom of the totem pole you have the people that have no business being a programmer. They probably have a college degree in English or Business. They quickly realized they couldn't get a job in those fields so they took some courses on programming. Now they have somehow stumbled into a job, probably because they were hired by someone that in HR who also knows nothing about programming. These are the "programmers" that are constantly asking simple questions about how Windows works and how to compile.
I would agree that this is pretty much crap.
There are two kinds of people in this world. The smart and the stupid.
Dan on November 28, 2007 12:03 PMThe two most important kinds lie at the opposite ends of a bell curve of talent. The most interesting kind are statistical outliers on the right hand side. And an interesting answer would be to the question, how might we shift the great hump in the middle to the right?
Bob on November 28, 2007 1:46 PMthis is an oversimplification
yes there is a huge gap between the best and the most
but the 80/20 line is actually blurry in real life
sometimes i'm in the 20
other times the 80
because not every situation is the same
not every day is the same
i've been an early adopter, a crusader, an 'alpha geek'
and i've been a reto-luddite who doesnt care about the details
all depends on the situation
one thing that is true
the better, more skilled, talented programmers do share a profound distaste for stupid managers
I found the article interesting. I am clearly not of the 20% group described. I am however sympathetic to reaching out to those of us in the 80% group. To put it another way I am increasingly annoyed by Microsofts mega tools that do everything OK but nothing really well.
That all being said, I would also note that the company I work for wants to encourage those programmers/people in the 20% group and I find that counter productive. In any group there is only so much work that can be done on the cutting edge. Look we are loosing a war in Irag by relying on high tech weapons not on foot soldiers. Not every basketball player can be Micheal Jordon. I think the 20% group would be much more succesful at reaching out to the 80% group if they realized that the 80% group also has something to say. They are not just putting in time, they may not be as passionate about coding, they may have other interests, they may even just not be as smart but to develop products that work they are usually necessary. I worked with a person who I would say was part of the 20% group and not to put to nice a point on things he needed someone maintain and fix his code. Probably to boring for those elite 20% but necessary.
Well, there's something I've never heard before: "There are two types of people in the world. Great people, like me, who are rare alphas; and not-so-great people, the majority." I'd like to think I've moved on from the "me leader, you follow!" social skills of a gorilla.
I was running NetBSD/arm26 in 1995 at home, and Linux on spare PCs in high school in the same year; I prefer LISP and rule-based programming to the primitive C-based languages; I've read works like Knuth, the Dragon book, heaps of OS/concurrency literature and the Intel architecture reference manuals in my spare time; and occasionally I throw work I do into the public doamin. As for being aware of the "latest, coolest new trends" - have I just picked up a copy of <i>Information Week</i>? I'll follow real innovations in computer science or software engineering, but leave "cool" and "trendy" to the PHB, thanks.
But I would never, ever, class myself as "alpha", like I was part of some superior race of programmers. The 9-to-5-er shares my species, will be equipped with a brain with a range of abilities that sometimes fall short of and sometimes exceed my own, and I'd be a counterproductive ass to assume I am a better problem-solver. There are times when my range of understanding and knowledge is valuable, times when it is irrelevant, and times when precisely what I need is someone <i>not</i> like me. I've worked with excellent, precise programmers who switch off at 5 to go straight to their family, and geeks who are impossible to collaborate with.
I realise clique mentality is part of primate nature, but you're equipped with a brain that can do more than see things in black and white - use it.
Anonymous Coward on November 28, 2007 3:27 PMI would suggest at least two other types of programmer.
The 20 something Product Manager from Microsoft. You can't go to a Tech-Ed without tripping across hundreds of these guys. All young and smart and totally inexperienced at actually shipping a usable product.
And the Super-Dev. Steve Mcconnell wrote some interesting things about programmers. He stated something to the effect that if the average programmer was given a rating of 1 in terms of productivity and quality of code but by comparison great programmers were 10X better. But the really great programmers were 100X better.
And if your company is ever fortunate to ever hire one of these 100X programmers remember to keep them happy, hehe. 10% raise, corner office, whatever, it’s in your best interest to keep them working for you.
And at the other end of the scale you have the net negative code contributors (-10X programmer). That’s the person that messes up more than they create and actually moves your company backwards.
Davide on November 28, 2007 7:05 PM'Not even one reply to all this Jeff?'
Hahahaha! I think he knew that he would stir up emotions and is at the moment just sitting back and enjoying it all...
My 2c: I agree with the posters calling you elitist Jeff: 'our insular little group of alpha programmers'; puhleeze! You can take a leaf from Scott Mitchell (whom you quoted) who is one of the most humble developers on the planet.
> If I was a pie, I'd be an apple pie.
Pies can't have babies.
http://whiteninjacomics.com/comics/pie.shtml
Jarrod on November 28, 2007 8:19 PMwhoever wrote this is an ass. To try to pigeon hole people into broad groups is just stupid. Obviously this was written by someone who thinks ( we have no confirmation... ) that he is part of some 20% of the programmers out there. Well la-di-frickin-da for you ace. I'd like to compare the average annual salaries of those in his "80%" group with those in his "20%" group. I have a sneaking suspicion his wondrous 20% would get the short end of that stick. Go get a life moron and stop nerding out online at 4 in the morning posting "i rule and am better than most of you" crap. There is enough garbage on the internet without you adding to it.
your momma on November 28, 2007 9:41 PM> 'one of the most humble developers on the planet' - Karin J
Now unless you've actually met every developer on the planet that statement was quite a silly one. :)
Jeff on November 28, 2007 11:25 PMSo, the "20%" are the ones that know what's best for everyone? Wow, what a slap in the face to the "80%" group. Such backward thinking... :-/
XO on November 29, 2007 1:06 AMHmmm... sounds like some kind of relgion for programmers? reaching out to others... passages from blogs? lol.
who are you? on November 29, 2007 1:11 AMHmmm... sounds like some kind of *religion for programmers? reaching out to others... passages from blogs? lol.
Right or wrong, the 80/20 split you describe is about as useful as saying "80% of animal species live in the ocean and 20% are quadrupeds."
The taxonomy of programmers is nowhere near as clear-cut as you're trying to make it. I could just as easily arbitrarily say that there are 37 types of programmer and come up with a list as you can say there are two. (Granted, my list would take longer.)
To my experience, the two types of developers you're describing are both tiny minorities—the long tails out past three standard deviations on the bell curve, the supernovas and dark matter of development. I'd wager that every single developer reading this post and the one writing it all fall somewhere in between the two types you described.
Right or wrong, the 80/20 split you describe is about as useful as saying "80% of animal species live in the ocean and 20% are quadrupeds."
The taxonomy of programmers is nowhere near as clear-cut as you're trying to make it. I could just as easily arbitrarily say that there are 37 types of programmer and come up with a list as you can say there are two. (Granted, my list would take longer.)
To my experience, the two types of developers you're describing are both tiny minorities—the long tails out past three standard deviations on the bell curve, the supernovas and dark matter of development. I'd wager that every single developer reading this post and the one writing it all fall somewhere in between the two types you described.
Really, Jeff, this comes off as being the most elitist thing I've read in ages. And, not only elitist, but wrong. I consider myself in the 20%, but not the 20% you're talking about. You're describing that class of programmers that ranks knowledge about software technology highest in the list of skills a developer must have. Nowhere do you mention general software design skills, the ability to think abstractly, the ability to see the forest for the trees. These are the skills developers need. Developers should be interested in software technology, but only to the degree that some technologies help them get better at the skills I listed. And these are the skills we need to teach! Not "learn yet another obscure technology that has a couple of neat ideas in it but also some bigs flaws and will likely be forgotten in a year".
Michael Junkin on November 29, 2007 7:14 AMYou are missing the point with this. There are those embrace technology and blaze a trail into uncharted technology and there are those who use technology for the tool that it is intended to be.
Case and point: a calculator. In school I used a sharp scientific calculator that has 2 whole (count them) memory locations, while all of my engineering buddies had these behomoth HP's which they could program, and probably would levitate if you asked them to.
I could finish most tests in half the time, by knowing the material. Technology is only a tool when it is wielded correctly.
The bigger issue is textbook versus real world programmers. Textbook guys, have learned about classes and often scatter buzzwords like HLA, XML, OOP, OLE, FIFIFOFUM, etc., and they insist on using them. They laud the virtue of the 68000 architecture and curse those who like intel's design. These same yahoos ignore effieciency, size, and transportabiity in pursuit of the 'new' thing. These guys rarely succeed and actually delivering a product.
Real world guys continue to deliver. They tend to use lowly C (maybe even C++), and forsake newer trends. Their code is generally leaner, faster, and very tranportable. They also tend to be REAL engineers who use the tools to get their jobs done.
Both of these groups transend the 80% and 20% people that you mention.
In addition the love of Linux is not an indicator of anything. My experience is that many die-hard Linux folk would be unable to program a simple 6-line analog filter. In fact, most have never delivered a completed product in their entire life.
Doug Joseph on November 29, 2007 8:35 AMI'm gone to the dark side...I mean the 80%
musachy on November 29, 2007 10:06 AMAs an 80%er who just happens to have the training, intelligence, and job of a 20%er, I experience the 80/20 split painfully every day.
I think we need a back-and-forth excahnge of wisdom. In my experience, the 20% group knows very little about life or business. These people will never deliver anything on their own because they're too busy installing oddball CTPs and betas from Microsoft, or figuring out how to apply Model-View-Controller or the fricking Decorator Pattern to their wedding picture site (true story- and yes, the bride was incredibly desperate).
There is a happy medium. Right now those who have found this middle ground are probably using something like .NET 2.0. They're not excitedly blogging about F# hacks or LINQ 2.0, for example, but they're not using COBOL either.
Maybe the breakdown is 79/20, with the remaining 1% consisting of those rare individuals who, for example, can understand polymorphism without wanting to relentlessly play with it for 72 hours straight to the complete exclusion of any other activity or person.
So I like to think I'm a 1%er.
As a read this article I realized that I have characteristics of both sides. But in reality I am more of the 80%. I write more code for small needs and not many get to take advantage of what I have written because it may not apply to a specific need they have. I am mostly a web programmer that does software programming as a hobby. Though I work for a software company that I am trying to be a developer in.
I work with those that have the 80% mentally and those of the 20%. The problem with reaching the 80% is like you said once they are finsih with work they do not want to see or touch a computer unless to do finances, check email, stocks prices, etc... They learn the tools or technologies require to complete the tasks given to them by their shop. I do not think there is anything wrong with that part of the 80%, they do what they have to in order to pay the bills and keep their job.
There is no doubt that passionate folks can cause change in the workplace. But if you want the 80% to deal with the new technologies and cool items that are generated by the 20% that has to come through the decision makers that employee the 80%. This causing them to incorporate those items into the projects written by those programmers. Otherwise those 80% just do not have enough interest in it because it is like a luxury item to them. I could have it but I do not need it to get by.
Matt G on November 29, 2007 12:44 PM'Now unless you've actually met every developer on the planet that staement was quite a silly one' - Jeff
Of course I haven't. But I have been working in IT for about 20 years, have met quite a lot of arrogant developers (just see the blogpost at the top of this page) and very few (in the 20% category anyway) humble ones. But I read a lot of blogs and technical articles on the Web and Scott Mitchell is right up there in the 20%, helping newbies and not-so-newbies, and stayed humble through it all. You get my point?
KarinJ on November 29, 2007 2:47 PMI strongly disagree with the post. I've been working as a programmer since '83, and learned long ago that most software projects fail...often because you have an "alpha" know-it-all who can't help but drive others on the team nuts by trying to "teach," i.e., "impose" his/her "superior" method of programming on others. Or trying to cram the cool, new software development tool that they discovered over the weekend down the throats of others. "Alpha" programmers usually end up making things more complicated for the rest of the team.
The handful of projects I've been on that have been successful have been staffed by competent people who can learn new things, but they had lives outside of computers. Being able to work as part of a team is more important than being a geek. I'd actually be more inclined to hire the people who say they're in the 80% than people who say they are in the top 20%, because their egos probably wouldn't be out of control. (Although I wouldn't want to hire from the bottom 20%.)
Steve Sinai on November 29, 2007 5:59 PMI love to develop Java, I love to write a quick script in perl, I now Csharp and I don't hate it and you can ask me anything about Linux and work full time (for my job) with XP.
So, or this article is confusing and grabbed out of the air, or I'm a part of that bridge where you talk about.
I really believe that bridge already exists for a long time, look at apache, eclipse or mozilla, but only a small part of lazy people don't like to see it and write articles about it.
KarinJ - I know what you mean!
Well I guess if Scott Mitchell was a pie he'd be a humble pie then.
Jeff on November 30, 2007 1:39 AMYour blog is great. It can be beneficial to the 80% programmer.
On the other hand, using the convenient and productive tool is great like asp.net. Besides, writing code, there is a many other things to do at work. Using the latest function of any convenient software and programming tools helps a lot.
ppp on November 30, 2007 4:05 AM"Not even one reply to all this Jeff?"
Apparently Jeff doesn't like to discourse with us unwashed masses as much as he tries to pretend to. What makes it worse is all the idiots out there that have taken Jeff's post as gospel and started blogging about this and preaching about how "stupid" the supposed 80% are. Yet Jeff stays silent and oblivious to the damage he has done with his blogs popularity.
mjoyal on November 30, 2007 6:01 AMI wonder how old are the 20%ers and 80%ers.
I used to be a 20%ers way back when VAX was king. But then there was nothing out there to do the job so we had to make our own.
Now I grow older and would much rather spend my time with my family. .NET is great, get my job done for me. Maybe this is an age issue?
BTW I am almost 50.
RandyW on November 30, 2007 10:02 AMRandyW,
I just turned 50, and my attitude is pretty much the same as yours. When I was younger, I thought the world revolved around work and computers. Now that I'm older, I like to think that I have a better perspective on things. All that time spent on weekends reading computer books and learning new computer skills never really seemed to get put to use. Now I spend my weekends doing other things, and at work I watch the younger programmers fall for the same software development myths that I used to fall for (like what kind of characteristics make for a good programmer); and make the same mistakes I used to make.
Jeff, another great post.
As a company, you should try your hardest to make sure that your recruitment techniques get you one of the 20%. Because, in this global market, having a superstar product pays serious premiums. And you can only get a superstar product with alpha coders.
Scott Mitchell is great. I won an ASP 3.0 book on his website years ago and am now leading a startup! :)
Jason Kealey on November 30, 2007 1:55 PMThe sad thing is that I find myself switching between the 80% and the 20% depending on what is going on in my life. Do I feel like delving into the guts of some process or algorithm? Do I have the energy? Does the company I work for reward 20% types or punish them for their energy and creativity? I find it easy to slip into "vocational" habits, particularly if a company I work for tell me they want me to solve only the problems they give me to solve and think about what they want me to think about. This is especially grivous when one knows that better can be had. This can last for a while until I reach a breaking point and change jobs or start exploring some new goodies on my own-- and then change jobs (or something else happens with the company).
One of the things that irritates me to no end is a company that is all talk about recruiting the 20%-- seeking to hire the best and brightest, and then driving them away because in all honesty the 80% are less threatening and easier to manage or control.
gdc on November 30, 2007 5:05 PMDo I have to be able to spell to be in the 20%? Sheesh. Sorry.
gdc on November 30, 2007 5:09 PMI think I am in 80%. I am not a shame with this situation. I keep learning a new technology that will help me out on or I can use in the job, but i'm not interested on writing a compiler. Do I have to? I don't think so because I would rather use my time wisely these days. Good luck Jeff.
John Green on December 1, 2007 6:24 AMoh, now I understand it all..... i'm an eightypercenter...
someother on December 1, 2007 9:45 AMI wonder if I qualify as a 20%er, I've been in college for a semester and in that time I've been learning basic C++ in class, and learning FreeBSD out of class. Most people on my class don't even comment their code, because the teachers don't check, at the same time, I'm considering implementing a more descriptive style of commenting.
I don't think the eighty percent are bad, yet the twenty percent can hurt too. The idea I get from this that you can't try to stick yourself into the same hole as everyone else, experiment and try to find the best fit for yourself. Maybe C++ is not for me, I'll try Python, Pascal, etc. I'm not going to try and hop around from one thing to another every week and make other people follow me, but I will try many different things until I find the perfect solutions for me.
ackondro on December 1, 2007 4:52 PMJeff, I have to say that I found your posting (and that of "BenH") to be nasal. I mean that in the most arrogant, smug, and elitist sense of the word. Certainly, your take is not the most repellent nor the most hardline, but it reeks enough as it is.
I am not a programmer. But I am interested in the mindset of programming as it relates to other areas of human interaction. It helps to have various angles of human endeavor to get a better, wider picture of where we're at and where we're going wrong or right in life. This is mainly why I subscribed to your newsletter. 75% of the time, you are sending me compelling reading material, though it is written from a programmer's perspective (or let's say, a programmer's sensibilities and experience.
If I were a real jerk, I could turn that 80 / 20 figure around on you totally; as my main thing is music, and yours obviously isn't, I could lump you in that 80% of passive, unwashed, music listeners who maybe pick up an instrument sometimes but are otherwise happier to just listen to others play.
By the way, I am a big fan of Windows, currently XP. In a couple of months, I will be getting a new laptop with Vista on it-- not OSX, not a *nix or *buntu, but Vista. I feel that some very smart people are working (and have worked) to bring out an operating system that I respect and insist on having on my computer. I suspect that a lot of the people putting their time and talent into Vista, are not fans of or delvers into things Linux or open-source in general. But your tone (and that of this "BenH") pegs them as buffoons because of their association with MS and other so called "closed source' entities out there. Please ditch this kind of thinking.
Thanks for the newsletter.
Gord on December 1, 2007 4:54 PMI am happy to admit that I belong to both two sides of 20% and 80%.
jackhatedance on December 2, 2007 6:43 AMI'm sure I'm in the 20%. But I don't know which one.
guest on December 2, 2007 6:52 AMStrangely enough, it is not true for my blog. Most of its’ readers are not even technicians.
beroal on December 2, 2007 9:11 AMYour hypothesis abou 80%-ers
"They went to school, learned just enough Java/C#/C++, then got a job writing internal apps for banks, governments, travel firms, law firms, etc. The world usually never sees their software. They use whatever tools Microsoft hands down to them -- usally VS.NET if they’re doing C++, or maybe a GUI IDE like Eclipse or IntelliJ for Java development. They've never used Linux, and aren't very interested in it anyway."
80%-ers according to your hypothesis seem to be a lazy bunch of people because they are not programming on weekends, or because they use tool like VS or Eclipse (unlike the super macho vi, and gdb for debugging). How dare the 80%-ers use tools with a good UI, a smart IDE or Microsoft tools. They should be spending endless office hours setting up open source tools which come with poor instructions and customer service. They should spend their weekends like the 20%-ers understanding these open source tools or completing office work which they would have otherwise completed if they would have used the right tools.
The bulk of programmers are using the OS, the development tools (read VS, Eclipse etc) over the others for a reason - they are user friendly.
Also it is incorrect to categorize non open source contributors as lazy. They simply have more enjoyable things to do on weekends
Well, I guess my spelling and things like gramar have been sacrificed over the years. I reread my post and was embarrased. None the less, my point is still the same: getting the job done is far more important than the vehicle I used to do it.
This post is amazingly high-browed sounding for you Jeff. I'm disapointed.
-Doug
Doug Joseph on December 3, 2007 8:22 AMSee my followup to this post:
http://www.codinghorror.com/blog/archives/001004.html
Jeff Atwood on December 3, 2007 11:36 AMI didn't read that huge amount of comment.
I think there are everywhere 2 type of "workers", in every branche.
One type will work to earn money, and the other will do this because they love it.
That ist the difference, and it isnt hard to answer which type will produce the better work ( code ).
I am still developing in COBOL - I'm not quite sure where that puts me!?
Jason Slater on December 4, 2007 5:28 AMThis brings to mind that old adage that says that you never hear anyone complain on their deathbed that they wish they had spent more time at the office. When you're eighty, do you think you'll wish you had spent more time sitting alone staring at a terminal? If so, then I feel kind of sorry for you.
Billy on December 4, 2007 12:23 PMI've got you pegged in the lowest one percent. Sorry. Don't try to interview with me unless you can hide your underlying ideas really, really well.
Oh, by the way. Don't show up in smelly unwashed clothes and flip-flops. I tried that once, but it didn't work out.
David Mills on December 5, 2007 10:56 PMPersonally I think the 20/80 rift does exist... I know this because I used to be a 20 and now I'm an 80. I used to read thru lines of source code for RSTS 9.0 for a PDP11/44, I used to work with this little software program called 'video toaster' long before Pixar became a household word. I played the real 'Space Cadet' pinball machine at the Microsoft release party in Redmond for Windows 98. I used to spend my days writing vector graphic programs just to push little pixels around 'because I could'.
Then I got married and became an 80. Funny how life throws little curves at you. I went from being a 19yr old kid being paid $3.60/hr to manage a pair of DEC VAX 11/780s and writing code for fun to being married and having every commitment in my life regimented and segregrated. Now at 38 I've forgotten more about programming than alot of folks will know but I can no longer commit to being in the 20s group. It was work, it just didnt seem like it at the time because I didn't have anything else to do.
Really, there are three types of programmers: those that can count, and those that can't.
A rebuttal to Gord the musician: your remark about turning the 80/20 thing around by relating it to music makes no sense!
The 80/20 related to programmers is that the 80% MAKE A LIVING doing it. Your comment about music makes the 80% the unwashed listeners who pick up an instrument every now and then. This is NOT the same thing! The average unwashed music listener doesn't make a living by playing mediocre music!
There's nothing wrong with the 9-to-5 coder grunt mentality - there's LOTS of code out there that's rote work to be done once the interesting design is finished. We need the coding grunts to get that bulk of drudge work done!
Great reading all these comments... also been in this industry long enough to have "cycled" between the 20 and 80 mentality a few times, which is what it is, a mentality.
I think that is probably a healthy thing... we have to balance work with personal/family life, and even within work we have to balance the desire to create and innovate with the need to comply, standardize and compromise.
To the extent that the culture of 20 percenters are advancing the craft and challenging us to collectively "raise the bar", I am happy they are there. The challenge for me is filtering out all the noise. Too much information, most of it rehashes of the same old ideas. I think most of the folks who consider themselves 20 percenters are really just tinkerers trying to build better mousetraps... which is fine and sometimes necessary for personal development... but to call that "trailblazing" is an embelleshment I think.
Kirk on December 6, 2007 12:41 PMI laugh.
The 20%'ers are pretentious people who think they are so much better than the rest of the world. They may be great programmers, but they lack the social skills to actually create great profits themselves. They'd probably write an awesome bit of code and then deletes it like some self-flagellation practicing starving artist.
Note to people that are really smart programmers: Please keep writing and I'll keep reaping the rewards of your work. Sure, I'll give you credit if I have to, but otherwise I'll just CTRL C / CTRL V my way to another completed project and another satisfied client.
It may take talent to be a great programmer, but it takes real talent to maintain your balance while standing on the backs of others.
Somehow, I don't wobble.
wat on December 6, 2007 7:44 PMIf you don't get the time to learn new stuff in your job, you just hack everything together. make it work, somehow. after fixing a few dozend bugs, explainig customers they have no idea about my problems and explaining the same thing to bosses how have absolutly no idea about what going on and how much more i get done that they do, well, you just want some time to relax.
there are companies which give you time to try out stuff, because they know the software buisness is always moving. got to find one soon..
some dude on December 8, 2007 12:20 PMI've never thought about this, but for the most part I agree. I work in a government shop and most of my co-workers do no techie computer related stuff outside work.
However, where do I fit in this scheme? As an 80% type I do what must be done at work, but I also go home and spend part of my weekend playing to see if I can come up with better methods, or neat tricks. I then take some of the results back to work. On the other hand I do not think I am a 20% type. I do not have linux, I do not have a desire to play with asp.net (well, I am playing with php if that counts), I do not use version control (maybe a bit at work), I am not a trail blazer, etc, etc.
Richard (who loves MS Access!!!)
Richard on December 10, 2007 7:21 AMHere's my view on classifying programmers -
+HBD: Hearts, Brains, Degrees.
MVPs, "Professional" FLOSS programmers.
These have have all three - H,B,D.
BD / +BD / +BD-H: Brains, Degrees, but no Hearts.
Engineers working without love for their art or without concern for the development of their field of knowledge or industry. They typically use illegal or unethical means to gain control of the industry. Engineers with only monetary incentives in mind.
H / +H / +H-BD: Hearts, not all that brilliant, but lack official Degrees.
These are layman users who donate happily to both FLOSS projects and/or individual programmers who make good freeware on any platform or in any language if they like the program or benefit from using it. Good netizens.
HB / +HB / +HB-D: Have Hearts and Brains, but lack official Degrees.
Self-taught programmers or knowledgeable users who donate both effort and money to FLOSS projects or individual programmers who make good freeware on any platform or in any language. These people help social initiatives the most. People with hard work, dedication and a sense of purpose in life. Not to be considered inferior to +HBD, but do lack certain advanced knowledge or skills not taught freely on the www.
HD / +HD / +HD-B: Hearts and Degrees but not exceptionally brilliant.
The large majority of employed programmers who have degrees, but need to be alerted to the latest socio-entrepreneurial or innovative companies or products known on the www. Once alerted and educated sufficiently about these revolutionary changes, they become +HBD easily.
B / +B / +B-HD: Brains only, no Hearts or Degrees
For programmers working alone or in small or big companies
sometimes (or often) using illegal or unethical means to get an income or run their small business. The absence of Degrees prevents them from becoming +BD-H.
D / +D / +D-HB: Degrees only, no Brains or Hearts
Degree holding programmers who have neither a heart, nor very intelligent. These can go anywhere, depending upon the situations they face in their profesional or personal lives.
None of these definitons are intended to be misused by people to slander or defame others. These are a prod to the mind to see for oneself, where he/she stands in the software development or user ecosystems.
Joergen Suuder on December 13, 2007 3:22 AMhi, nice post, I think i can be one of the 20 % programmers, but i am adicted to 80 % , due to lack of resources, if all the 80 % can think like the 20 % of them, this world will be greatly modified, new technologies, etc...Intersting World...
Ranjeeth on December 13, 2007 4:03 AMPeople who write bad code so they can spend time with their families - You better get that, I hear the support phone ringing.
William Shatner on December 13, 2007 5:12 PMhi, for newbie like me, interesting very interesting, i thing education system is to blame, as most of institute can not teach s/w engg properly.
I did like most of the comments, by the way do we use all the resources properly which is available to us, why are we running after new technology .
radhe on December 19, 2007 4:29 AMIMO, one good way for anyone "in the 80/90" to "convert to the 20/10" is to apply a system based on this thinking:
The human brain, although being totally different in constitution and organization from the muscular/circulatory system, has one thing stongly in common - you can think better when you frequently think properly - just like you stay fit when you exercise your muscles.
So, if one thinks about his own problems only, he only solves a fixed set of problems. The majority of the constraints that one's own life and habits produce, do not vary in quality or field of application. For example, a single-track VB programmer will feel that mastering manipulation of classes and ADO* connections is attaining a high level of expertise. Only when he reads Jeff's blog, and those of many others like him, will he find that people also embed custom scripting engines in their programs for their customers' IT team to program in.
This applies to life in general as well:
If one thinks about his own problems only, he only solves a fixed set of problems and therefore has only a small subset of skills that might be needed somewhere down the road.
Instead, if one thinks about others' problems, one realizes that one is capable of producing either complete, impressive solutions or at least, intermediate but useful workarounds.
Workarounds often save the day. That is a real-world statistical fact.
So, whether in programming or in life, if you think about how to solve others' problems, you learn the very many more parameters required to be considered to solve complex problems, or problems that seem simple initially, but are actually quite complex.
Most relevantly, when you solve many such problems in your mind, (without probably implementing the solution, which may be beyond your powers in the said situation) you are better prepared for a problem in your own life that significantly overlaps others' problems you solved in your mind, thereby equipping you to handle your own share of them better.
How relevant is this to programming? If you're a VB programmer, but you read about object-oriented design in C++ or Java, you can apply good points from there in your code. Going the other way round, if you apply the RAD principles of the VB IDE, you can make your PHP or Java programming easy in several situations. Who does not like the dot-notation popularized by VB? And most all IDEs today copy the layout principles that Visual Studio first popularized.
It's a good idea to never shy away from thinking out the solution to any problem. You don't have to place your dignity or your ego on the line, on your success or failure to solve a problem.
That's as much a cardinal sin as trying to optimize a program while writing it the first time (Turbo C/C++ environment of 90's).
Going 60% towards the solution is 60% as good as 100%. It is.
(Of course, that's good when only 0% is the expected progress)
So, in pseudo-Biblespeak,
Fear thou not to think for thine neighbor's problem, for in that solution too lies a half of thine own.
those 20% people are the GENERATION "Y" aka JAVA BOYS..
JAJAJ REGARDS FROM BUENOS AIRES...
Sarito on January 14, 2008 7:11 AMI'm definitely a hippie programmer.. no doubts there.
The truth is that there are big differences in techie types. The hardware people are radically different from the software people, and on the software side alone, there are at least three subspecies of programmers.
Forget about the first subspecies, the lumpenprogrammers, who typically spend their careers maintaining mainframe computer code at insurance companies. Lumpenprogrammers don't even like to program but have discovered that by the simple technique of leaving out the comments--clues, labels, and directions written in English--they are supposed to sprinkle in among their lines of computer code, their programs are rendered undecipherable by others, guaranteeing them a lifetime of dull employment, like me working at http://www.softorbits.com/ company.
The two programmer subspecies that are worthy of note are the hippies and the nerds. Nearly all great programmers are one type or the other. Hippie programmers have long hair and deliberately, even pridefully, ignore the seasons in their choice of clothing. They wear shorts and sandals in the winter and t-shirts all the time. Nerds are neat little anal-retentive men with penchants for short-sleeved shirts and pocket protectors. Nerds carry calculators; hippies borrow calculators. Nerds use decongestant nasal sprays; hippies snort cocaine. Nerds typically know forty-six different ways to make love but don't know any women. Hippies know women.
I like the idea but I don't know where I fit.
Greg on February 4, 2008 1:02 AMHmmm... I'm certainly not brillant enough to be the kind of guy Google try so hard to hire. I couldn't write a compiler, I sure did spent a couple week-ends on Haskell but certainly not "learned" it (at most got a feel of the language), I more or less actively participate to a couple FOSS projects but on a very minor scale.
OTHO, I'm definitively not in the other part: I'm self taught, I run gentoo/linux, edit my code with emacs, have all my code under svn, and wouldn't touch Java code with a ten foot pole.
There must be some other 'category', definitively...
Bruno on February 9, 2008 4:44 PMAm in the 20%. Well it seems like your saying the 20% don't know what they want in life?
Really?
joseph on February 18, 2008 2:59 AMHmmmm I agree with you folks 20% and 80% or even call it 10% and 90% ... for me I am can fit in 80% in the day the i move to the 20% in the night ...or vice-versa ....
Sometimes u have to do one night C#.NET windows APP and bag $10,000.00 .. You have to be flexible to rich ...
Can't programmers just blend into mainstream engineering? There is just so much talk on arrogant programmers, good programmers, bad programmers, etc etc. I wish that programmers would accept themselves as part of the mainstream engineering discipline.
I have never seen robotics engineers tell people how to live their lives (I'm thinking of 37signals and their post telling people to get a life). Aeronautical engineers happily do their job without bitching about who is better/more arrogant/incompetent etc.
For christ's sake.
deltawing on March 11, 2008 11:58 PMWho is the fool here? The alpha who dedicates his life to a craft, but whose only reward is intrinsic, or the others who have come to realize that their only reward will be intrinsic, and choose to devote at least some of their energies to other pursuits?
Maybe neither -- depends on what you want to get out of it (whatever "it" is).
BillAtHrst on March 14, 2008 2:50 PMGreat post! I'm glad to see I'm moving from 80% to 20%!!!
Greetings from Italy!
This post irks me on so many levels. Let me count the ways. Funny how no one who responds claims to be in the 20% catagory. Looks more like 100% of programmers think they are in the 20%. Generalizations, are bad whether your talking about Software Engineering or minority groups. I've been a software engineer for close to 20 years and I would be happy to test my knowlege of RLE compression algorithms, The Huffman Tree, Fedora Core, Suse, Ajax, Binary Search algorithms, Multi-Threading,etc with anyone. And yes I am a C#/C++ programmer but I don't think about coding 24/7. When I'm on vacation with my kids I think about ice cream and Micky Mouse and going to the pool or the beach. I have many interest outside of coding and not only do i not think this is a bad thing but I happen to believe it improves my code.
Software development is a fulfilling and challenging career, not a religion. And yes it is possible to be a good developer AND have a life. I don't consider myself part of your 20% or 80%. Let's do away with the catagorization and except people individually.
And another thing, lets do away with the concept that you're not a good programmer unless you use open source tools. I've used IIOP.NET and CORBA but I just happen to think .NET Remoting is better. Why does something have to be complicated to be good. Frankly I have enough complication in my life. I welcome ease of use and simplicity.
That's my two cents.
Timothy Delaney on April 7, 2008 4:45 PMyou said wron, they folks , had also been a 80% programmer, they got experience , and entered in 20%. the problem with programming , even a genius can never be in 20% group because this require a long practice set.
Muhammad Faizan Ali on April 8, 2008 1:05 AMGreat Post!
By reading this maybe you can categorize were you at in the world of programmers. But there is no exact basis if you really belong to the 20% or 80% group.Whats important is you do it RIGHT.
Programmer on April 8, 2008 2:04 AMHowever passionately you write people will feel your emphasis and thus be more likely to remain interested in your words long after they've long been away from the computer, and that in itself proves mysterious.
Many blogs are truly worthless even though the information located within that particular domain is gold to the new age programmers/developers/etc... like myself. I've been gradually taking on computers since I was about 11. I've always wanted a deeper knowledge of networking, hardware, firmware, software and perhaps even photography to then blend with my web design skills I've adjusted over the years.
That being said blogs, or websites, in general aren't about admiral content, unfortunately it boils down to how much it's going to cost to keep up lengthy code or the repetitive aggravation of explaining everything so simply you would hope a child could understand.
So to better clarify, I wouldn't agree entirely with your 20/80 Theory of people, but I don't disagree either. Fundamentally I think the division is more primitive than that. I think those people who heartily accept the loss of time or money for the knowledge that enlightens, while others feel they're more comfortable spending time else where. Perhaps a lot could be better understood by looking into the neophiles and neophobes.
Richard
Richard D. Roberts, II on April 13, 2008 6:43 AM
I am sorry, but I have to take out my bs detector on this one. If only that the 20/80 distinction is arbitrarily made to justify differential semantic distinctions to allude to some profuntity of software engineering accumine. Guess what ? This is not all that profound at all. As matter of fact, this just makes we want to projectile vomit. Yes there are extreme programmers, extreme hardware people, extreme networking people, extreme without lives
people, etc.. make up some career name.. Build a bridge to them ? Oh please, the exalted 20's can't speak to 80's and bring them and the entire industry up to snuff ? I've programming back since my first PET CMB-2001 and playing that bong game, so what ? I went and got me a the software engineering degree, so what ? Guess, I much better than some, and some much better than me. Still learning what is valuable to corporations, governments, people, and learning new techs all the time. Software engineering is not magic nor rocket science, sometimes hardly a science at all.. hardly enlightenment in and of itself. Gawd, children are precious, software is not. What a load of horse dung.
Bob
I think You forgot the second 80/20: 80% of programmers think, that they are in 20% group.
Almad on May 13, 2008 1:00 AMfor the same reason black macbooks are more expensive than white ones :)
thanks for setting up the european alternative, ordering soon!
[url=http://www.organizasyonsirketi.name.tr ]nikah şekeri[/url]
[url=http://www.promosyon.name.tr ]nikah şekeri[/url]
[url=http://www.temizlikfirmam.org ]temizlik şirketi[/url]
[url=http://www.temizlikcim.org ]temizlik şirketi[/url]
I would agree with the 80/20 concept, but I think there are some fundamental errors in the logic with this and that is there is another % which cross over between the two. A lot of us are interested in new technologies, but are forced to work with the old stuff that everyone at the office is using.
Chad on June 9, 2008 8:17 AMyou are def part of the 80
Dave on July 7, 2008 1:42 PMGreat post jeff. i wish there was a third category.. because i somehow feel i am a mix of both the 80% and 20%..
saraf uddin talukder on September 25, 2008 2:43 AMI would have to disagree with you on the 80v20 rule. I know it sounds nice and it fits in with the good old 80 20 rule of business, so its catchy, but I really think there is another type of developer you are leaving out. Arguably a subset but I believe should be it own category...
the 'alpha' developer/architect who does all the things the (to your vernacular) 'alpha' does, but does it all in his/her domain and lives a bit outside 'the real world'.
I believe in your blog on two types of programmers - the statement regarding alphas:
"...and then are confounded about why they can’t get their office to start using it"
... says it all.
I have been around too many 'alphas' who just dont 'get it' - they get the work done, but are not in touch with the business, and constantly have opinions on how things should be done all in theory of course because the alphas have only implemented what they preach in the confines of their home network - usually by themselves without team interaction. Most of these people are a nightmare to work with and are the '5' star developers who make all your 3 and 4 star developers turn into 2's.
The so called alphas have to remember, technology is just a tool to assist in the productivity of other work. Technology is a means, never an end and alphas that you describe rarely ever get this. Perhaps the ones who get this is really the rare breed... a lot more rare than your set of alphas.
Its more like standard deviation - the first deviation - a majority - 68.x% are the worker drones (your 80%), the second set encompasses the first deviation, but expands into the second deviation (27.x% - which now totals, 95.x%) - these are the drones who care - research, come up with ideas, own or read books or blogs, but cant always see the forest through the trees. They wonder why their uber cool AoP enterprise app is so slow because it worked so great at home. Or why the database can be such a bottleneck with their great ORM mapping tool.
Finally - you have the 3rd+ standard deviation and remaining 5+ percent who actually think within the context and constraints they are given, and provide real solutions that work. I have been in IT for 12 years, and have only met maybe 3 or 4. I have worked in the NE, the PacNW, and now the SouthEast.
Perhaps you just live in a geographic area where your alphas are saturated, so your data is slightly skewed. You are giving 20% of the people out there, too much credit.
AJ
AJ Weaver on February 16, 2009 8:52 AMIt's interesting to examine the opposite of the bad apple effect, i.e. the good apple effect. Having a good apple on your team will dramatically change your team's dynamic as well. It basically mirror the effect of an bad apple but positively. If you have a team member that's extremely motivated, hardworking, passionate, and/or helpful, you'll find that these positive behaviors / characteristics tend to spread across the team as well.
What's more interesting is when you have both a bad apple and a good apple on your team. In my experience, the bad apple will pretty much ruin the team chemistry. And it will become the lowest common denominator over time. After all, I guess it's much easier to be negative than positive.
David Dai on February 23, 2009 12:35 AMI think 100% of the 20%ers aren't getting laid!
Goatie on April 7, 2009 3:45 PMBang on! I couldn't agree with you more!
Jaskirat on May 5, 2009 2:36 AM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |