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.

Have you come across a super programmer? What identifies him or her as such, compared to "normal" experienced/great programmers?

Also. how do you deal with a person in your team who believes he is a super programmer? Both in case he actually is or if he isn't?

Edit: Interesting inputs all round, thanks. A few things can be gleaned:

A few definitions emerged. Disregarding too localised definitions (that identified the authors or their acquaintance as super programmers), I liked a couple definitions:

  1. Thorbjørn's definition: a person who does the equivalent of a good team consistently for a long time.

  2. Free Electron, linked from Henry's answer. A very productive person, of exceptional abilities. The explanation is a good read.

    A Free Electron can do anything when it comes to code. They can write a complete application from scratch, learn a language in a weekend, and, most importantly, they can dive into a tremendous pile of spaghetti code, make sense of it, and actually getting it working. You can build an entire businesses around a Free Electron. They’re that good.

    Contrasting with the last definition, is the point linked to by James about the myth of the genius programmer (video). The same idea is expressed as egoless programming in rwong's comment. They present opposite opinions as whether to optimise for such a unique programmer or for a team.

These definitions are definitely different, so I would appreciate it if you have an input as to which is better. Or add your own if you want of course, though it would help to say why it is different from those.

share|improve this question

closed as not constructive by Mark Trapp Dec 9 '11 at 18:45

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.

3  
Yes, and his name is John Carmack. –  Gary Willoughby Oct 24 '10 at 13:40
1  
I have a list of 4 Free Electrons on a small piece of paper locked in a draw in my desk. –  Henry Oct 25 '10 at 5:05
    
If 'super programmer' == 'genius programmer' click_this google.com/events/io/2009/sessions/MythGeniusProgrammer.html –  James Oct 27 '10 at 5:01
    
See Jeff's response on egoless programming. –  rwong Oct 27 '10 at 5:34
    
I'd just like to add a thought from The Mythical Man-Month book, en.wikipedia.org/wiki/The_Mythical_Man-Month, a research paper was cited that indicates a great programmer multiple times better than an okay one. I don't recall all the details but obviously there's a lot of value in someone who can produce on a team, orders of magnitude more than others. –  Travis Aug 9 '11 at 20:33
show 2 more comments

6 Answers

up vote 17 down vote accepted

I would consider the term "super programmer" only for those who can do work that usually requires a team of good programmers, and do it consistently for a long time.

This goes both for writing high quality code (documentation, tests etc) and solving very difficult problems requiring a lot of knowledge and talent to solve.

But it requires a high performance on all accounts for a long time. For those who write tons of code nobody can understand and maintain, the term is not applicable.

How to deal with? If you truly have such a person then do all you can to provide the scaffolding needed for the person to excel. This means moving irrelevant stuff out of the way, and provide the resources the person needs. Please note that I've found that very high performers tend to be humble.

It is, unfortunately, much more likely that you have a person who thinks he is a super programmer and isn't. The way to deal with those is in my experience to make their performance measurable. "FindBugs may not find any problems", "All code must have tests corresponding to the use cases", "Peer review".

If the code is truly hard to understand, consider weekly meetings where the not-so-super programmer explains any code the code he's written since the last meeting that anybody can request anonymously to have explained, and anybody can reject anonymously to have accepted in the code base for it to be unmaintainable. Then at least you have shared the mindset and allowed for future maintainers to veto a piece of code. This will also strongly indicate to the programmer which kind of code will trigger him having to do extra work.

(EDIT: The reason for the anonymous bit, is to avoid having the not-so-super programmer retaliate upon those who oppose him).

share|improve this answer
2  
Excellent points, except for the anonymous input. If the team is to truly unify, and the "super-programmer" understand whether he actually measures up to the definition, they'll need to learn each others' strengths, weaknesses, to work together for the success of the team and the software, and to build trust. It's a matter of opening themselves to the criticism of others (as is done to a certain degree here) for one to find and correct their short-comings as a super-programmer. –  Huperniketes Oct 23 '10 at 13:31
    
@Huper, the anonymity is to avoid this getting personal in the beginning. If you believe you are superhuman, you might not take too well to criticism (or this question would not have been asked in the first place). –  user1249 Oct 23 '10 at 13:42
2  
@Thor, it's already personal when you're dealing with what someone believes about himself. Anonymity makes trust far more difficult to develop. Team members have to trust that they can be honest, that criticism is welcome, and that important opinions are out in the open. –  Huperniketes Oct 23 '10 at 16:15
    
Would a super programmer find it easier or more difficult to explain code to a junior programmer? If the gap is big explanation may be difficult. Wouldn't it? –  Muhammad Alkarouri Oct 23 '10 at 22:32
1  
@Muhammad, given that my definition is that a super programmer writes clean, maintainable code with good documentation, which even a junior programmer can understand (except for very complex algorithms which is less frequently needed in Java due to the things available in the runtime, so I do not consider them). I would think that it would be as easy, but maybe take longer, to explain to a junior programmer. –  user1249 Oct 23 '10 at 23:32
show 6 more comments

A superprogrammer is any person who can generate code faster than a speeding compiler, more powerful than a recursive function, and able to leap over FIFO stacks in a single bound.

The way you deal with a person in your team who believes he is a superprogrammer is by exposing him to his only weakness - sunlight.

share|improve this answer
4  
@Chetan: What is a FIFO stack? –  rwong Oct 23 '10 at 20:32
2  
@Chetan: this is an unhelpful answer. Perhaps you haven't worked with programmers who are just so incredible, you start to wonder if you're worthy at all. –  JBRWilkinson Oct 24 '10 at 8:00
    
A superprogrammer should live in the cloud and provide a public API for his Mind Query Language. –  rwong Oct 24 '10 at 22:25
    
@rwong first-in first-out stack, also known as a queue. –  alternative Oct 24 '10 at 23:56
1  
@mathepic: if you can call a queue a stack, does it mean that LIFO and FIFO are the same thing? (to paraphrase Lincoln) –  rwong Oct 25 '10 at 0:01
show 4 more comments

Ask the person to write a chapter of himself/herself in the Coders at Work style. Submit it to a publisher. If it gets rejected, then the person is not a super programmer.

share|improve this answer
    
Is the converse of your statement true? (If it is accepted, can you assume that he/she is a super programmer?) I think this could use clarification. –  alternative Oct 23 '10 at 11:02
    
I lost any respect I might have had for the author of that book as soon as I read that he was once the "architect of a Java-based transactional messaging system". Oh, well, at least he had the sense to quit that job. –  Dan Moulding Oct 23 '10 at 12:38
1  
@Dan Moulding: As long as he shuts up and lets the programmers he's interviewing in that book do all the talking, I don't care what he claims. (I just bought that book and am looking forward to reading it. Hope it's as good as I think it is). =) –  gablin Oct 23 '10 at 15:06
    
The idea is good, but publishers tend to accept famous programmers rather than super programmers. Correct? –  Muhammad Alkarouri Oct 23 '10 at 22:29
    
@Alkarouri: if super has the same meaning as in superstar, then yes, being a super-programmer means being famous, too. –  rwong Oct 24 '10 at 15:23
show 1 more comment

There are those who can produce more output than others.

There are those who can produce output with a lower defect rate than others.

Those who can CONSISTENTLY produce more output, with lower than normal defect rates, might be worthy of being called as Super-Programmer.

Being known of or thought of as such is usually only apparent to an enlightened manager with the benefit of hind sight.

Somebody who things they ARE a super-programmer probably has a big ego and thinks they are good. That does not make them good.

Attitude <> Ability.

share|improve this answer
add comment

Have you come across a super programmer? What identifies him or her as such

From the programs/projects that have create, the source code of it, the study that have done.

believes he is a super programmer

As you say he believes it, this is very difficult to make him not to believe it. The worst think is that that person have been stop to be better programmer because he is think that is all ready is super, and he stop the evolution of him. What worse than that in programming. Anyway, you can always ask for proof... and ask him with whom he/she compare him self to make the assumption that he/she is super.

share|improve this answer
add comment

Super programmer: a person of above-average intelligence with a strong dedication to programming. I'm talking about a person who spends a lot of his/her time programming, doesn't quit easily and is determined to solve a particular problem. This person rarely goes to sleep if there is a pending problem/bug. Super programmer writes effective, fast and reliable code. Super programmer has an extensive and in-depth knowledge of at least one programming language (and technology), is skilfull in a few others and can quickly learn anything else that is needed.

share|improve this answer
add comment

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