Fog Creek Software
Discussion Board




what % of population can be good developers?

Was having a discussion with some friends, giving the wide range in quality of software developers, what percentage of the population would make a good developer?
20%? 30%?

anonymous
Wednesday, April 02, 2003

It depends on nutrition health culture and education. So do you mean worldwide or in industrialized nations or what?

Let's assume English speaking areas... so that will include south africa and australia and developed areas of india and the phillipines but perhaps not rural areas of india and the phillipines. So now we have to ask what sort of development? Web app design? 50% ... ASIC design? 0.3%

Dennis Atkins
Wednesday, April 02, 2003

I am talking about a western country, not web apps,
working on say a fairly complex C++ project(3D graphics,socket level work etc....)

anonymous
Wednesday, April 02, 2003

OK, I'd say you're looking at an IQ of 105+ -- a little above average, so that's around 40%. But then only 1/4 will have one of the personality types that will allow them to be motivated enough to be good, so that knocks it down to 10%.

Dennis Atkins
Wednesday, April 02, 2003

You do mean general population right and not just a subset of actual developers?

Dennis Atkins
Wednesday, April 02, 2003

Being a little cynical I'd say the population of actual current developers who I'd trust to build a moderately complex system that is "good" would be around the 5% mark.

punter
Wednesday, April 02, 2003

yeah general population...not a subset

anonymous
Thursday, April 03, 2003

General population, I'd say you'd probably be looking around 1%, maybe less.

Not because it's particularly difficult, just that I'm constantly surprised by most peoples utter incompetence.

punter
Thursday, April 03, 2003

Uh...I don't know about you guys, but I would say less then 20% of actual professional DEVELOPERS are compenent enough to do the job they should be doing. I wouldn't be suprised if most  people on this board are in the top 10%.  I'm not saying that because I'm cocky, I  know I have a LONG way to go until I consider myself a senior developer, but there are just way to many morons in this industry.

Vincent Marquez
Thursday, April 03, 2003

Well how good is good then? Sounds like some think good is great. I am thinking good is acceptable, as in good (C), very good (B), outstanding (A) and exceptional (A+). There's also needs improvement (D) and unacceptable (F).

In volunteering to do little summer programming classes at the local high school, I'd say 5%-20% have the potential and possible inclination to become acceptably competant in C++ development. Only a few of them will I am sure. And most of the bright ones will leave the field to do something more sensible with their lives after experiencing the realities of this industry which I try to give them the heads up on before they get too serious.

Dennis Atkins
Thursday, April 03, 2003

Those high schoolers doing programming classes should not be compared to the general population.  They have a particular interest and aptitude for programming, otherwise they wouldn't be there.

Of the general population, I'd say that less than 1% can be good developers.  Within the developer population, I would consider only about 30-40% to be "good enough", meaning good enough that I would hire them if I had my own software business.


>"And most of the bright ones will leave the field to do something more sensible with their lives after experiencing the realities of this industry which I try to give them the heads up on before they get too serious."

You got that right.  Within the next couple of years I expect to be employed in a real profession where you get actual respect and decent job security ... and get out of software where there are neither respectable qualifications nor an industry association to prevent workers from perpetually being victims of their employers.

T. Norman
Thursday, April 03, 2003

A developer must be able to analyze a large number of stronlgy interrelated facts. A very good developer must be able to find the patterns in which these facts interact.

I "guesstimate" that when we program, on average, we deal with 3 to 5 objects and at least 30 to 120 relationships (power of 3 or more).

Experience would create patterns and that lowers the number of objects and relationships one has to deal with at one time (ie the code is readable and easy to understand).

To get an idea, here are some actual numbers measuring complexity of the J2EE 1.3:
- 91 packages
- 2147 classes
- 886 top level classes
- 20165 methods
- 1.224034 average depth of the inheritance tree
- 3.182311 average number of subclasses per class
- 9.576086 outoging package level dependencies
- 5.336956 incoming package level dependencies

Cheers
Dino

Dino
Thursday, April 03, 2003

I would estimate about the top 2 percent of the population, the same as the proportion eligible for, say, Mensa membership or medical school.

If we're talking specifically about real-time, with a requirement for excellent spatial math, perspective transformations and the rest, we're talking about a more restricted sub-set - maybe the top 0.5 percent.

The big problem is that this group is not the group that's selected for in the general business environment. The general business environment i.e the predominant workplace, selects for pliant, deferential people who either don't notice problems, or will refrain from investigating them. And also work for the the $55,000 or so that management considers is appropriate for "technical" staff.

3
Thursday, April 03, 2003

"I "guesstimate" that when we program, on average, we deal with 3 to 5 objects and at least 30 to 120 relationships (power of 3 or more)."

I'm not surprised at the first. We can apparently think clearly of a maximum of between 5 and 9 "things" at a time, so it would be natural that when programming we would keep within that limit (maybe its when we exceed that that it starts to get hard). Those relationships might be a problem though...


Thursday, April 03, 2003

OK you guys have convinced me. 0.5-2% it is.

Dennis Atkins
Thursday, April 03, 2003

I would wager that the average competent software developer has an IQ around 130. Given that, I believe that limits the probable pool to around 2% of the population, but of course intelligence along isn't sufficient to make a developer: You need incredible self-motivation to continually learn a field that changes constantly (moreso than any other field).

Anonymous Cowboy
Thursday, April 03, 2003

IQ?  That's laughable.  It's all about interest.  If someone is interested in coding, they'll be able to do it.  If they aren't, they won't.

Robert
Thursday, April 03, 2003

I think Anonymous Cowboy has the most accurate stated opinion on this subject in this thread. You can be motivated all you want, but if you're not naturally quick, fuggedaboutit.


If by "developer" you mean someone that  can master development in compiled object oriented languages, then an average or near average IQ just isn't good enough, so I agree that an IQ of 130 or more is requisite. Consistent mental quickness is required to jump through the hoops of understanding how things should be designed and implemented. People with near normal IQs are just too slow in putting the pieces together mentally. The sort of person that can master C++ or Java is so quick that he or she can be socially irritating to most average people. I've observed this quite a bit in business. And the saddest phenomenon is the rare person who *wants* to be a "good" developer who just doesn't possess the natural aptitude and gifts.


And, the IQ isn't enough as he stated. It requires major amounts of personal dedication to learn the generalities and details of class and component libraries and to keep up to date.  Also, the person's brain has to be wired such that they enjoy and embrace working with abstract logical structures. I don't find it inconceivable that there are people around with 130+ IQs that aren't interested in understanding hierarchies, inheritance, pointers, links, keys, associations, memory models, etc.


And another empirical attribute of high IQ is lack of work ethic; someone very smart can skate through public school and many colleges (I did both and I know a lot of people who've done this), which erodes work ethic. So, working steadily and working to learn new material may not be part of the mental tools that an overly bright person has to work with, right out of the chute. IE - the stereotype of the "lazy genius" is probably founded on certain kids that can get B's while hardly paying attention. That hardly prepares the kid for the grind of worklife later on.


Due to all of these factors, I'd say that the pool of candidates for "good" developer roles is vanishingly small.

Bored Bystander
Thursday, April 03, 2003

13.79 %, up 3.2 % from yesterdays high due to good news on the war front. How can one seek to find out a percentage of good developers? Define good. Ok now do a test of every developer and compare them to your "good" standard. See the problem yet?

trollbooth
Thursday, April 03, 2003

Bored -

Verliy, you and I are the only good developers out there. And I'm not so sure about you...

Devil's Advocate
Thursday, April 03, 2003

What a silly thing to ask.  Why would anyone want to know the answer to this question?  I sense the rubbing of hands and the chuckling of "gosh, I'm so ELITE!" in the background ...

Alyosha`
Thursday, April 03, 2003

Devil's Advocate, you said it. And I feel the same way about you. :-)

Bored Bystander
Thursday, April 03, 2003

trollbooth, yes of course we could precisely define what the question is about.

But then we can also deduce reasonably well what the enquirer is asking, and then contribute using fuzzy parameters. It's a discussion so that's the way to go. If it was a contract or a scientific experiment, we would indeed define what we're talking about.

My estimates stand.

3
Thursday, April 03, 2003

Well, at most 10% of the CS classes I took had any hope of ever being good developers.

Then consider I went to a "good" university, so overall maybe 5% of CS students will become good developers.

Now, out of the entire student body, people in CS were about 3%.

Now out of the entire population of university age, at most 30% went to university.

So If we multiply through, we get .3 * .03 * .05 = .00045 or ~0.05%

And I feel I've been conservative on all estimates.

Now, we may consider that some people who have the interest to become good developers might not go through comp sci. Lets be generous and say that of the percentage of the population interested and good enough to be programmers, only half did comp sci, the other half electing to do something else, or not go to uni at all.

OK, we arrive at my final estimate, 0.1%, or 1 in 1000 people. That means there are about 20,000 current, past or will be good programmers in Australia, or 300,000 in the US.

If anything that sounds bloody high to me, based on the average quality of code I've seen.

And the horse you rode in on
Thursday, April 03, 2003

Anyone can do anything well given enough time and training.  But don't let that stop you all from stroking your egos.

.
Friday, April 04, 2003

"Anyone can do anything well given enough time and training."

True, but with the rate of change in this industry, time isn't on your side.  I believe that with an average IQ and even an above-average motivation level, your chances of keeping current (let alone ahead of the curve) are quite slim.

I'm hoping that among all the day-to-day scrambling I can acquire enough "timeless" skills that I can some day safely throttle down the implementation-technology knowledge intake, perhaps by moving to management.

ODN
Friday, April 04, 2003

I dunno. when people say "rate of change" i wonder if i'm in a different industry. Everything new I learn in software seems like the same old shit to me. ;-)

choppy
Friday, April 04, 2003

>> Everything new I learn in software seems like the same old shit to me. ;-)

It takes a *LOT* of intelligence to see past the new tool du jour and grasp that it's a repackaging of older concepts. The feebler intellects think that every new toy is a new world busting paradigm.

I'm not against lower IQ people (lower than "elite" SW developers, I mean). In the right position, they usually outearn us.  Why? Because almost everyone hates a smart guy.

Bored Bystander
Friday, April 04, 2003

"IQ" is another fallacious mechanism by which people stroke their egos.

.
Friday, April 04, 2003

I agree, it's pretty much all the same old stuff in new packaging.

Real new substance comes along only about once a decade.  These include:

- Compiled and interpreted languages
- SQL and the relational database
- The graphical user interface
- Object oriented languages
- Web application programming

Still, the packaging changes quite a lot and it's the packaging that usually determines whether you are hired.

T. Norman
Friday, April 04, 2003

*  Recent Topics

*  Fog Creek Home