Advertisement

What distinguishes the top performers in programming?

Started by March 13, 2010 10:13 PM
16 comments, last by _the_phantom_ 14 years, 8 months ago
A statistic that's often bounced around is the idea that the best programmers manage to be 10 times as productive as the worst ones... in conservative estimates. This is apparently an unusually high disparity between the top and bottom performers in an industry. What do you think creates this difference, presuming these claims are accurate? Is there a specific skillset/attitude the best programmers cultivate, or are the bad ones just REALLY terrible?
Try this.

Also, moved to the Lounge.
Advertisement
Quote: Original post by starstriker1
A statistic that's often bounced around is the idea that the best programmers manage to be 10 times as productive as the worst ones... in conservative estimates. This is apparently an unusually high disparity between the top and bottom performers in an industry.

What do you think creates this difference, presuming these claims are accurate? Is there a specific skillset/attitude the best programmers cultivate, or are the bad ones just REALLY terrible?


Its not really that the bottom ones are bad (Allthough ofcourse some are), but experience plays a very large role when it comes to productivity, the same is true for most crafts, not just programming.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
There has been numerous studies on this and I don't think they've really come to a definite answer other than computer programming, as it is a skill which necessitates a high amount of abstraction capacity in the person therefore there is a significant correlation between the students' performance in the programming courses and their mathematics achievement.
IMO it's just a much higher raw intelligence than the rest of us. The reason I've personally come to this conclusion is that I've seen young programmers no older than 18 program faster and better than others that have been programming for years and you know these younger ones couldn't be that much better due to the Norvig plan unless they were programming since they were like 8?
Also, Norvig himself reinforce this opinion when I watched one of his
#t=03m20s">latest interviews
where he says that programmers at Google are so good i.e. smart that they are as good/productive using C++ as if they used Lisp which is not usually the case.
I can keep citing numerous other examples like Carmack, Bill Joy, etc that are way above their programming peers that it's not pretty!

p.s. I also clearly recall a study carried out in Europe not long ago by some researchers trying to come up with some sort of test to weed out students that couldn't make it as a programmer and one of the biggest stumbling blocks for those that couldn't program was "magical thinking" or something like that?
Basically, there is a group of people supposedly, that can never be taught to program because they think the computer randomly does stuff and they never get a clear idea in their mind of how a computer works? Sounds like "fuzzy" thinking to me. Then again I've seen this pattern with people struggling with math, now that I think about it. Instead of learning the basic rules, axioms and apply them to solve new problems like Euclid did they will invent new rules out of the air or apply them inconsistently to solve a new problem and that's where they fail!

[Edited by - daviangel on March 14, 2010 6:58:11 PM]
[size="2"]Don't talk about writing games, don't write design docs, don't spend your time on web boards. Sit in your house write 20 games when you complete them you will either want to do it the rest of your life or not * Andre Lamothe
Quote: Original post by daviangel
p.s. I also clearly recall a study carried out in Europe not long ago by some researchers trying to come up with some sort of test to weed out students that couldn't make it as a programmer and one of the biggest stumbling blocks for those that couldn't program was "magical thinking" or something like that?
Basically, there is a group of people supposedly, that can never be taught to program because they think the computer randomly does stuff and they never get a clear idea in their mind of how a computer works? Sounds like "fuzzy" thinking to me.


I remember this too. It wasn't about magical or fuzzy thinking, it was about being able to envision an entire system (start small of course) and the possible interactions with it (what happens when I press this button...?) inside one's head. It's not that unusual of a skill, in my opinion, but then again I don't get out much.

I think some early indicators of excelling in this kind of thinking would be lots of playing with legos... (Or the other things I can't remember the names of...)

Here's the link to where I saw it.
A top performer almost always has two things that a bottom performer does not: capacity (ability to learn, understand, and apply) and passion (desire to learn, understand, and apply). More of one can compensate for less of the other to a degree, but the best have much of both.

Those two attributes will take you far in any field. Humility in proportion to your capacity and passion will keep you bearable =-)
"Walk not the trodden path, for it has borne it's burden." -John, Flying Monk
Advertisement
I think that viewing programming as an art form has helped me.

In my experience some of the strongest programmers I've met have been creative in other ways such as art, music, or even just really creative with their solutions, or really competent mathematicians... But they all had passion and creativity of some abstract kind.

A really interesting read on the subject which I just found tonight: http://www.paulgraham.com/knuth.html

I had heard the oft quoted "premature optimization line" but had not read this article. I was actually moved to tears when I was reading the section around:

"I don't condemn a lot of things programmers do...The important thing is that they are creating something they feel is beautiful." -Knuth

The entire article really spoke to me and I've actually thought about what I do in almost exactly this way for a long time now. I really want to read "The Art of Computer Programming" now, I had always heard it was a bit tough to get into which kind of made me shy around it.
_______________________"You're using a screwdriver to nail some glue to a ming vase. " -ToohrVyk
Quote: Original post by daviangel
p.s. I also clearly recall a study carried out in Europe not long ago by some researchers trying to come up with some sort of test to weed out students that couldn't make it as a programmer

My university has a test like that which they give to Freshmen after their 2nd semester. Lets just say it was the only way some people realized they're not meant for programming. My friend who "just didn't get it" failed it and switched to finance (he was the only one that failed it though). (To give you an idea of how easy it was all you had to do was read in a file with x,y,width,height and write a file of all the intersecting pairs and you could use C#! I finished before my professor got done explaining it and some of my friends finished like 20 minutes later).

I often wonder if a test like that is controversial. If I remember correctly you are literally given 2 chances then kicked out of the CS program.
I am definitely not a highly intelligent person but my ability to consume code and visualize a system that I didn't write is far above my peers. My peers are better in maths and abstract thinking but they struggle to debug foreign code. In my current job my productivity is far higher than people with 10 years of professional programming experience. I have 2 years professional experience.

being productive doesn't mean I am a better programmer though. I learn things from my peers everyday.

It depends on the environment. Professors are better in an academic university role, I doubt they could handle the pressures of a high pace client driven code environment.
I think it's related to types of people and not the skill. People who enjoy programming are people that in general enjoy solving problems and creating solutions. This can be applied to any field with positive results.

For example, there's people who have been working at my company for 30+ years and have accomplished less than in the first 30 days I was there. They never asked questions about the big picture, they never got involved outside their area, they never had a desire to solve problems.

Another more specific example from my younger days, I started working for a company and part of my job was to spend about 2 hours a day manually entering in data for credit card processing. There was 7 of us on the team so 14 man-hours a day. I did this for about 3 days before realizing that about 98% of the keystrokes were exactly the same. I would not allow myself to waste 2 hours a day doing the same thing over and over so I created a macro that knocked it down to 3-4 minutes and ended up doing ALL the processing myself. The other people who had been doing this for years were shocked that the work suddenly "went away" and thought I was Jesus reborn. They just did what they were told and never thought to think outside the box.

The average employee (programmer included) may do what you ask, but they will not add value to your process. They will not understand the big picture or seek to answer questions you haven't asked them directly. They won't anticipate problems and solve them before they are created. In that sense, the best employees are worth much more than average employees.

"When the wise man points to the moon, the dummy looks at the finger."

This topic is closed to new replies.

Advertisement