14

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.

7

6 Answers 6

17

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).

11
  • 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. Commented Oct 23, 2010 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
    Commented Oct 23, 2010 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. Commented Oct 23, 2010 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? Commented Oct 23, 2010 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
    Commented Oct 23, 2010 at 23:32
5

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.

9
  • 5
    @Chetan: What is a FIFO stack?
    – rwong
    Commented Oct 23, 2010 at 20:32
  • 3
    @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. Commented Oct 24, 2010 at 8:00
  • A superprogrammer should live in the cloud and provide a public API for his Mind Query Language.
    – rwong
    Commented Oct 24, 2010 at 22:25
  • @rwong first-in first-out stack, also known as a queue. Commented Oct 24, 2010 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
    Commented Oct 25, 2010 at 0:01
3

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.

6
  • 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. Commented Oct 23, 2010 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. Commented Oct 23, 2010 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
    Commented Oct 23, 2010 at 15:06
  • The idea is good, but publishers tend to accept famous programmers rather than super programmers. Correct? Commented Oct 23, 2010 at 22:29
  • @Alkarouri: if super has the same meaning as in superstar, then yes, being a super-programmer means being famous, too.
    – rwong
    Commented Oct 24, 2010 at 15:23
2

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.

1

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.

0

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.

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