Fog Creek Software
Discussion Board




Are all programmers above average?

Hello, all...

I saw a survery recently and something like 85% of Americans considered themselves above average drivers.  And that spured the thought:  Isn't this also true with programmers?

I've met a couple HTML/VB-Script people who realized they have a lot left to learn, but again, there's that 85% number again for C++, Java, etc. programmers.

Has this been others experience as well?  Perhaps it's human nature in any qualitative endevour.  Or maybe the personality type of a programmer coincides nicely with the need to prop up ego.  Or maybe it's because we're paid well.

When all is said and done, it's not the most endearing trait of our profession.  Perhaps it's necessary to some extent, though.  Just like the professional athlete that has supreme confidence, the coder that feels he has a chance to solve the tough problem may be more likely to do so.

Anyway, what does everyone here think?

Bill Carlson
Above-average programmer  :)

Bill Carlson
Friday, March 29, 2002

50% of programmers are above average. The rest are below average. That is pretty shocking, that such a huge number of programmers are below average!

Banana Fred
Friday, March 29, 2002

No, I think it's not 50%. You confuse median and average.
It's possible that 85% of programmers (drivers, whatever) are above average. It all depends on skill distribution function.

However, the question is not about the "objective" measurement of programmers quality. It's mostly psychological effect. In some the professions, hubris is one of the key values. Programming is one of them (according to Larry Wall, anyway). So, it's quite understandable that most of us think we're above average.

Igor Krivokon
Friday, March 29, 2002

How would you determine if someone is an above average programmer or not? 

What if you were excellent at VB or Python, but had no idea what in the world STL meant?  Are you still a "good" programmer?

How do you define if someone "knows" computers?  Maybe they can put a computer together from scratch, but can they write their own device drivers, or describe how a UART works?  I for one am tired of people who have A+ certification claiming they are "experts" in computers.

Just wondering what you all think! =)

Bill Harkless
Friday, March 29, 2002

> Maybe they can put a computer together from scratch, but can they write their own device drivers, or describe how a UART works?

Or what if they've done that, but have never touched VB?

I'm guessing that it's easy to compare yourself with the people around you, and that what's less common is to have experience across multiple companies ... i.e. that the (local) average is higher or lower depending on where you're working.

Christopher Wells
Friday, March 29, 2002

The question isn't really about competancy, but perception of competancy, or worse, perception of greatness.

In an unchecked economic "ecosystem", such as our industry, there is no objective measure of skill.  It's difficult even in a relative sense, since no two programmers do exactly the same job (you'd hope, anyway).

The two viewpoints I'm trying to generate a compare/contrast discussion about are:

1.  Software development is no different than other unregulated professions, where the absence of quantitative measures (salary excepted) means most everyone can think they are "the shit" and not be held in check.

2.  Programmers are a unique species and by nature or by psychological makeup, are prone to the "85% syndrome".

Bill Carlson
Friday, March 29, 2002

> In an unchecked economic "ecosystem", such as our industry, there is no objective measure of skill.

Any number of measures: bugs per KLOC or whatever.

> It's difficult even in a relative sense, since no two programmers do exactly the same job (you'd hope, anyway).

See above.

> Software development is no different than other unregulated professions, where the absence of quantitative measures (salary excepted) means most everyone can think they are "the shit" and not be held in check.

Software is written, works, is accepted, or it isn't.

> Programmers are a unique species and by nature or by psychological makeup, are prone to the "85% syndrome".

A unique species eh? Is this a troll?

Christopher Wells
Friday, March 29, 2002

To respond to Mr. Wells, how does one quantify bugs per KLOC?  I'm writing a form with 50 edit fields and my colleauge is writing a preemptive thread pool to manage session state.  Both take the same time, same LOC and both have 10 bugs.  In this case, I'm the loser and he's the hero.  But the statistics don't say that.

The only objective measurement is company profit relative to total cost expended over the life of the product.  No spreadsheet will give you that broken down by programmer; to think that it will is naive.  The programmer that does their job in 5 LOC is better than the one that takes 100 LOC.  Even better is the one that produces no code and recommends a third party add-on that can be resold at a huge markup.  See the point?  It's a business equation, not bugs/KLOC.

Bill Carlson
Friday, March 29, 2002

> It's a business equation, not bugs/KLOC.

Like I said, there are any number of objective measures. I'd even hazard that programmers can be 'objective'... and that most everybody with e.g. an IQ above 100 is likely to be relatively good at something, especially if you don't define the something.

Christopher Wells
Friday, March 29, 2002

Christopher makes a good point.  There are any number of objective measures that can be used, but they're rarely used in industry, and even then, not effectively.

My original question is not about objective measurement, but about ego in the absence of objective measurement.

Paraphrased question:  Do programmers have a big ego because there are no quantitative rules or is it "in their blood"?  And if it is, why?

Bill Carlson
Friday, March 29, 2002

There are a number of studies cited in "Rapid Development", going back decades, that claim that programmers with similiar skillsets & years of experience can differ in terms of productivity by as much as 10 to 1. 

Put more plainly ... assume there are two programmers in the same group, each with 5 years of experience using Visual WidgetWare to make business apps.  Each is handed the same project.  One takes 10 months, the other 1 month.  This is of course a simplification, particularly since it's unlikely such differences would exist on a one person project.  To make all things equal, you'd have to assume that both programmers produced equal maintainable code, even if it took one much longer.

What's above average?  People that can do it in less than 5 months.  All other things being equal, raw productivity is the measure.  It's always about when you can get done what you say you're gonna do.

As for the methods of these studies, I'll refer you to them.  I haven't checked their methods, but I do remember there were several, and my own experience backs up the 10 to 1 thing, so I believe it.

Timothy Falconer
Friday, March 29, 2002

I think that most programmers would think along the following lines when asked 'are you an above average programmer'...

...The code I write is well made; readable; and maintainable.  Other peoples code that I read is less well made; less readable; and would require a rewrite to be maintainable.  So, yes I'm above average.

Which is the same logic used by the drivers in the survey.  Maybe all the drivers asked were also programmers.

Most programmers are also better at system admin than their system admins.  See previous thread.

Scott Beard
Sunday, March 31, 2002

I think a fairly simple dynamic is at work here.  Because there are no uniformly-applied standards, each programmer develops their own conception of what makes a good programmer.  Each programmer then sets about trying to become a better programmer *by those individual standards*.  It's no surprise, then, that a programmer whose definition of good programming is to crank out hundreds of lines of code per day without any unit tests would get good at doing just that, then look around and consider that they're above average.  In order for someone to consider themselves at or below average, they'd have to be worse than a lot of other people *by their own standards*; that just doesn't happen all that often, and when it does it tends to be rather temporary.

Jeff Darcy
Monday, April 01, 2002

> "A unique species eh? Is this a troll?"

"Historically, geeks have been feared and ostracized because they are containers of exotic, arcane knowledge unavailable to ordinary humans."

-Mikki Halpin

http://www.salon.com/tech/feature/2000/06/02/geek_handbook/

John Dawson
Monday, April 01, 2002

It's quite possible that more than 50% of programmers are above average. Below average programmers porbably aren't programming.

pb
Monday, April 01, 2002

This sounds like a well known finding in psychology.  It appears that we all have a 'self-serving' bias that leads us to believe that on average our lives will be better, longer and more worthy than that of others.

This is what stops us killing ourselves on Monday mornings.

Sherlock

sherlock_yoda
Tuesday, April 02, 2002

>I've met a couple HTML/VB-Script people who realized they have a lot left to learn

Well, I guess, they are the ones who are way above average already :-)

No one can know it all in our business and the ability and willingness to learn constantly is maybe the most important trait that lifts programmers above "average" whatever that means.

jm2c,

Jutta Jordans
Tuesday, April 02, 2002

Personally, I think learning is the most important thing. An interest - a fire that drives you.

My sister is an accountant. We all thought it was an odd choice of career. She's never been particularly academic - she's not daft, she was just never interested in academia. By contrast, my parents seemed rather shocked when I got a job - they were expecting me to stay in academia after graduating.

She has a fire in her about it though. She thinks accountancy is easy. She's really good at it. She finds the hard part is the number of people who are unable or unwilling to do it *PROPERLY*. Her complaints about the accountacy business are eerily similar to mine about IT.

She says things like "How hard IS IT to just NOT LOSE bits of paper?" She turns up to audit people and finds that they just didn't write down a month's worth of stuff because they didn't feel like it...

She keeps coming across accountants whose hearts just aren't in it. She had some trainee a few months back, who was basically feckless. He didn't really want to do things, so he didn't do them very well. He didn't want to learn stuff. She asked him about this, and he replied that he just didn't think accountacy would be "like this". "Like what?" she asked. "Sitting around looking at paper all day. Adding things up. It's dull."

He was not a good accountant because he didn't care.


I keep meeting software people like that. They keep meaning to learn Perl so they know something other than C++. But they haven't read a book on C++ since they left uni. They don't read books on anything else. They don't go talk to people, the don't learn about the industry they're in.

When I worked with microbiologists, I took it as an opportunity to learn microbiology. I learned a lot about finance stuff by reading the books lying about the office while I was working in the city.. I meet people who haven't learned anything in years. Most of the ones that have, know EXACTLY what was on the syllabus of their last training course.

The really good developers I know don't need to be sent on training courses - their employers could get by with buying them a non-fiction book a week from Amazon, and tolerating the 50% that aren't about IT.

The learning is the outward manifestation of a drive to be better. The minute you say "I'm good enough", you stop caring about things. On the other hand, if you're "good enough", you probably would count yourself in the top rank.

Another thing - the good people worry about questions like this, and turn up and talk about them. The average ones would call this a "stupid question."


The accountant trainee, by the way, used to be a developer... He left that because that was dull as well. It was just sitting looking at a screen all day long typing things...

Katie Lucas
Tuesday, April 02, 2002

I don't have a degree, but have studied a variety of languages, been dropped into projects where I had to learn others, and generally tried a great deal more as they sparked my interest. This seemingly random knowledge and experience in a range of languages is extremely useful.  I pride myself on the fact that I can generally fight my way through a new language and atleast fill a seat on most projects.  Does this make me above average? Nah, just arrogant.

I've just recently read several of Joels articles... it's amazing what's interesting when you're in the midst of checking email, playing freecell, lunch, checking email...  but I digress.

After reading the "The Guerrilla Guide to Interviewing", I would have to say that the terms "Smart" & "Gets Things Done" would be valid in judging a programmers worth.  Do they make deadlines? Do they give valuable input in project discussions? Is there freecell win % in the 90s?

I generally get my projects out on time, I sadly fall into the catergory of "Specs are great, but" (I think writing them requires a muscle I haven't developed... yet) and sadly, I still know next to nothing when it comes to my chosen profession.

Gets things done... that sounds like something I would like to be able to put in my resume.

Jack of all(?), master of none
Thursday, April 11, 2002

*  Recent Topics

*  Fog Creek Home