Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

You know who they are. They are the rock stars of programming:

  • They code 10X faster.

  • Their code just works.

  • They not only know their primary language inside and out, but they also know how it works under the hood.

  • They know the answer to most any question before you ask it.

  • A few of them invented the programming principles we all use.

  • And they tend to be uncharacteristically humble, as well.

What is it about these folks? Is there something about their thought process that is fundamentally different from the above-average programmer? Or are they simply very talented people that work hard?

To put it another way: How can I be like them? I know what I think I need to learn to be that good, but it seems like it will take me the next ten years to learn it, and then my knowledge will be obsolete.

share
49  
The exceptional programmers don't have a try-catch block around their code. zing –  fennec Sep 17 '10 at 3:15
11  
@John: I totally disagree, I've seen the 10x thing in play again and again and it seems to hold true, sadly enough. I think a lot of the problem is that most professional programmers can't really program, and some can't even program simple things. It's not that a godlike coder is 10x above a good coder, but rather a godlike coder is 10x above the worst other coder in his organization or team. –  Pax Noctis Sep 17 '10 at 16:56
10  
@fennec: Do, or do not. There is no try. –  mmyers Sep 17 '10 at 19:14
29  
18 years' experience for a language invented 15 years ago is pretty darn impressive! –  Ricky Clarkson Sep 19 '10 at 5:50
15  
@Tjaart - No, it is a solid number and studies since the 1960s have shown this. The original study was conducted in the late 1960s by Sackman, Erikson, and Grant. They studied professional programmers with an average of 7 years’ experience and found that the ratio of initial coding time between the best and worst programmers was about 20 to 1; the ratio of debugging times over 25 to 1; of program size 5 to 1; and of program execution speed about 10 to 1. They found no relationship between a programmer’s amount of experience and code quality or productivity. (Thanks to Steve McConnell). –  Jon Hopkins Nov 17 '10 at 12:32
show 17 more comments

locked by Thomas Owens Aug 26 '13 at 14:45

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

closed as not constructive by Mark Trapp Jan 27 '12 at 1:37

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

19 Answers

up vote 89 down vote accepted
  • Humble: An exceptional programmer will never claim their code is the best, in fact they will always be looking for a better way (Every chance they get.).

  • Patient: An exceptional programmer will have boundless patience (This does not mean they will waste days on a problem. See: Troubleshooter).

  • Troubleshooter: An exceptional programmer will be able to solve a problem in minutes that may take days for your average programmer.

  • Curious: An exceptional programmer will be unable to resist trying to figure out why something occurs.

  • Engineer: An exceptional programmer will engineer systems rather than hobble together a mishmash of frameworks (This does not mean they won't use frameworks.).

share
5  
I like your "engineer" point ! –  Cedric H. Sep 17 '10 at 11:05
1  
@Chaos - The fastest programmer I know built his own web framework. Things like that I think are what make somebody better and faster. Thanks for your answer. It makes me feel less helpless in always wanting to re-engineer things. –  orokusaki Sep 19 '10 at 3:12
11  
"Engineer" is a crucial point. Every line of code will create a solid foundation, rather than adding to a rickety Jenga-like creation. –  Alex Feinman Sep 20 '10 at 14:07
5  
I won't -1 but as a counter-point, I qualify for all of these; and I still suck. (Unless the average programmers to my exceptional that I compare against are actually terrible) –  Steve Evers Sep 27 '10 at 22:14
1  
@Chaos, "Curious" but only to a point. –  user1249 Nov 14 '10 at 21:15
show 6 more comments

You hit on a lot of it in your very last bullet point:

"And they tend to be uncharacteristically humble, as well."

I think it's a combination of humility -- not just outward but also inside their minds. They accept being wrong, making a mistake, and have a very quick turn around from frustration. A lot of programmers will try something, fail, and then get very emotionally wrought pretty quickly, a state that is anathema to writing good code. You have to accept that you're not perfect, and that you're going to screw up (often!), and that the best thing you can do is learn how to quickly recover when you do screw up. It's a humble confidence, like "I know I'm going to mess up, but I also know if I keep trying, I'll get there eventually."

There's a saying in NLP, "There is no failure, only feedback." To be a rock star programmer, I think you have to embrace that. There is nothing you can't code. You might be slow at it, at first, but if you just keep trying and refuse to stop when you fail or screw something up, you'll deliver. And in that process you'll learn all the mental tricks you need to become one of the best.

Advice is, of course, only as good as its source, so... all just my opinion.

share
1  
The only way to be able to learn fast, is to accept that you can improve and want to. –  user1249 Nov 14 '10 at 21:16
show 1 more comment

They care deeply about their code.

share
2  
Undoubtedly true. –  Robert Harvey Sep 17 '10 at 6:38
3  
Can't a poor programmer care deeply about their code? Eventhough it may not be as good? –  Walter Sep 17 '10 at 11:31
2  
@Walter they could but I just haven't ever seen that. The closest I've seen is newbie programmers who deeply cared about their code but still made newbie mistakes (nobody is immune). When those mistakes were pointed out though they were fixed speedily and rarely repeated. –  JaredPar Sep 17 '10 at 17:17
add comment

When I first started, I was working with this guy who I thought was absolutely brilliant at everything he did in terms of programming. He quite possibly still is, but he's moved up to be the director of a company in SE Asia now.

Anyways, he kept things simple, and the simple stuff works. Never wanting to write more lines of code than necessary, everything he did just worked. I was playing catch up for a year just to get near his level. The other thing though, is time. He had been doing things for a lot longer than I had at the time, and he'd had the chance to ask these exact questions over and over, until he knew (seemingly) all the answers.

He wasn't afraid to ask questions either. I think that's the biggest thing.

share
2  
@acidzombie24 - Or... you've just begun. –  orokusaki Sep 19 '10 at 3:16
show 3 more comments

Self-promotion, and I mean that in the best way possible. Having a job like programming, especially in a team, means it's not immediately obvious where your personal contribution fits in to the large picture, or who was responsible for which bit. The people we hear about and learn about as "great programmers" are IMO those who have mastered the art of making their contributions known without sounding egotistic or self-centered about it. In many cases, this is by creating the tools, libraries and software the rest of us rely on to earn our daily bread.

share
3  
Perhaps, but I believe John Resig is well-known for his remarkable accomplishments with Javascript and jQuery. His stuff is widely used because it is great, not because John has great marketing skills. –  Robert Harvey Sep 17 '10 at 6:38
1  
-1 While this may be true in the eyes of managers when it comes to self promotion, I've never seen it work amongst other developers. Amongst developers, it doesn't take long at all to figure who is good, who is average and who sucks. Self promotion is not even part of the equation. –  Dunk Apr 5 '11 at 17:11
1  
@Gauruv - I think the "rockstar" programmers are the ones that are able to take hard problems and make them really simple. Thus, I would not think a piece of code is awesome if I looked at it and said "Woah - who wrote this"? While I thought otherwise out of school, real world experience has taught me that cleverness in code is not a virtue. I'm more impressed with the people that I don't need to worry about whether their stuff works or not because I already know that it works without ever having to look at it. Those people are few and far between and are the real rock star programmers. –  Dunk Apr 15 '11 at 19:32
show 4 more comments

Personally, the best programmers I know/knew understood the basics and were NOT the expert in any given language. They simply had sufficient experience on just about everything. The canonical "Jack of All Trades."

It is more than foundational science, there is significant value in experience in actual operations. Examples, those that understand the Unix Philosophy and thus could solve unknown problems with various tools given (IOW they knew where to look) far out-value the Java expert who coded a threaded and parallel solution.

The outstanding programmers also respect those who came before them. They don't hate relational data models or cringe when they see SQL as a formal API, nor balk at FORTRAN in maths. They know that OO is not the end-all, and above all else understand that programming is an ART, not a science.

share
2  
For text-files grep, awk, sort, and uniq can answer a LOT of questions. If you have perl too, even more! –  user1249 Nov 14 '10 at 21:18
2  
I think it's a handcraft, not science nor art. –  Alexander Gessler Apr 5 '11 at 17:04
add comment

most of them look reserved and nothing special.. some of them look super-smart.. they prefer to check/debug things twice from all possible points of view, their software is the bugless in world :p IMO some programmers may be slower, but the quality is better, even ordinary people can understand how their software works!

i have a friend who wrote his first ASM program at the age of 10, now he is 24, didn't finish university, but that didn't stop him from creating his own company, making millions :) but from what i see he is dexterous in everything :)

exceptional programmers would most likely say this code can be coded in another- better way rather than saying its totally wrong an lower other programmers reputation :)

"What is it about these folks? Is there something about their thought process that is fundamentally different from the above-average programmer? Or are they simply very talented people that work hard?"

i think they are born that way, its inside their DNA :p i don't know about their thought process, but the best programmer i ever knew had epilepsy

share
add comment

Programmer Competency Matrix

Many topics to help identify what's your level on programming topics.

share
show 2 more comments

Exceptional programmers:

  • Care about their code
  • Care about the users who use their code
  • Care about the people who will maintain their code
  • Care about productivity
  • Care about the process, not just the product

Two things about the "10x" factor:

  1. It has to be applied end-to-end. It is no good writing code 10x faster if it takes 10x longer to test, rework and maintain.
  2. I believe the "10x" factor is a reflection of how poor a high number of programmers are rather as opposed to how good a small number of programmers are.
share
add comment

I learned the answer to this question in a book about Texas Hold'em poker, but it applies to all frustrating endeavors. The best coders never go on tilt. Going on Tilt is the time when something doesn't work as you expected, and you respond in a way that creates exponential mistakes in the overall application. In tournament poker it causes you to place bad bets and get knocked out.

In programming, tilt causes you to pull out your hair and write ridiculous patches of code that only work in certain instances of your application. Tilt causes programmers to ignore the needs of the project as a whole, grasping for instant gratification to solve the immediate problem now. Often times the problem gets solved today, but the application suffers tomorrow.

The best coders take the tilt concept and manage it in a way that allows them to look at problems from an outside perspective, always. If that fails drink some caffeine.

share
show 2 more comments

Exceptional coders have influence on a project beyond the scope of their own code and spot problems before they happen because of their experience. They make everyone on the team better and save their projects from bad design and management.

They've actually created something that is exceptional.

share
add comment

1st - They know what cut off when face the dead line.

share
add comment

Very good related article: The Free Electron (from randsinrepose.com)

I apologize for not summarizing the article here, but the points are not easily separated from the prose.

share
show 2 more comments

Few things differentiate an exceptional with a typical.

Exceptional:

  1. Highly passionate about his work and strive to deliver a master-piece.

  2. Performance and quality is the big picture in their mind even before coding starts.

  3. They think of continuous improvement after each release.

  4. They keep strict vigil on the alternatives and are early adopters.

  5. Their theme in professional life is: "Write less convey more".

  6. They keep thinking about logical perspectives even when not coding.

Typical

  1. Sometimes somewhat passionate but strive to deliver because it is a job after all. If it is not a masterpiece, its OK. At least delivered on time.

  2. Will think of the performance later, anyway PCs are fast enough these days.

  3. Improve only when there is no option left to save a job.

  4. No time to dig into other technologies. Stick to what your job demands now. Will learn other things when the need arises.

  5. Their theme is: "Do what is asked and reach home in time".

share
add comment

They program purely on intuition. No need to think it just flows.

share
3  
-1 That is SO WRONG in every possible way. I wish I could -100. I would say exactly the opposite. THEY DO THINK THROUGH and solve the problem before they begin. –  Dunk Apr 5 '11 at 17:14
show 6 more comments

Exceptional programmers apply Spartan Principles.

Attention-grabbing image:

enter image description here

This article: http://willcode4beer.com/design.jsp?set=codeReduction

And this quote:

Any fool can make things bigger, more complex, and more violent. It takes a touch of genius - and a lot of courage - to move in the opposite direction. - Albert Einstein

share
5  
image is illustration of Big-O notation. –  user1249 Aug 24 '11 at 13:33
add comment

but it seems like it will take me the next ten years to learn it, and then my knowledge will be obsolete.

It will. You've already established that these guys are 10x faster, which is why they learn it in 1 year and it takes you 10. For the serious part of the answer I think it's that they're already super smart (could be very successful at anything), they love coding, and they for some reason have (or find) an abundance of free time to practice coding or work on personal projects.

If you're asking this question here you probably don't have what it takes (don't worry I'm answering here so I probably don't either). Don't fret though you can still get to be crazy good if you love coding.

share
add comment

There are lots of well intentioned posts here about Humility, Engineering, Passion, Patient, Troubleshooter. IMO these are all required. However, they describe the top 30% of programmers.

I think you're asking about the truly exceptional programmers, the top 1%.

One of the things that I envy about the occasional very rare talent I work with is their ability to keep a very large amount of detail about a complex system in their head at one time, and to be able to recall it quickly. I think that I can do this on occasion, maybe once a month, when I'm truly in the zone. This feeling is wonderful. The developer I'm thinking of seems to be able to be in that zone most of the time.

It is this one trait, IMO, in addition to the Humility, Curiosity, Engineering, Passion, Patience and Troubleshooting ability that make them truly exceptional.

share
add comment

Having the quality of self motivation and self determination as well having the willingness to go into an abyss of the unknown and being comfortable with being absolutely confused as part of the process is huge. Its not so much about initial smarts as you would think because the brain becomes much better at things its always doing and thinking about. I came from nothing in college and then became very well off just by sheer persistence, never giving up, being that guy that kept at a problem when all others got tired of trying to figure it out. After that type of persistence, problems became easier and easier and coming from being the noob in college to putting most of them to shame at this point. Sheer talent is not enough and can sometimes lead to resting on your laurels.

Also, to Robert Harvey, you keep doinking my posts when I mention anything to do with my CMS that I wrote from scratch. You see several others listing links that they may or may have not written. You are pushing people down that are self motivated which is ironic that you posted this. You are "the man" in this small universe and not reading things on their merit, rather just doinking and deleting at your whim. You also love Star Wars way too much and probably wave your hand at the automatic opening doors at the grocery store kind of believing you have the force.

share
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.