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.
| [advertisement] TransferBigFiles.com allows you to send huge files (up to 1GB) to anyone without worrying about email attachment limits. Send via the Web site or download the DropZone utility for even more functionality. It’s fast, easy, and totally free! Transfer big files now. |
Posted by Jeff Atwood View blog reactions
« Has CAPTCHA Been "Broken"? The Big Ball of Mud and Other Architectural Disasters »
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 02: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 02: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 02:50 AMShocking statement #(n+1): 80% of the 80% believe that they belong to 20%.
IMil on November 26, 2007 03: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 03: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 03:12 AMactually, the proportion is 10/90 ;-)
kenji on November 26, 2007 03: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 03: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 03: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 03: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 03: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 03: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 03: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 03: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 03: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 03: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 03: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 04: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 04: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 04: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 04: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 04: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 04: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 04: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 04: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 05: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 05: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 05: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 05: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 05:29 AMI'm going to install linux right now..
Jonathan on November 26, 2007 05: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 05: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 05: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 05: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 05: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 05: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 05: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 05: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 05: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07:29 AMIf I was ever close to the 20%, having a child certainly changed it.
Rich Wilson on November 26, 2007 07: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 07: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 07: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 07: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 07: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 08: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 08: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 08: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 08: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 08: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 08: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 08: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 08: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 08: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 08: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 08: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 08: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 08: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 09: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 09: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 09: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 09: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 09: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 09: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 09: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 09: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 09: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 09: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 09: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 09: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 09: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 ne