"I'm surprised that with all the discussion on how to program that goes on in this Wiki, and with BadProgrammer defined and referenced often, there is no entry here. Is it too much of a minefield?" -- NathanielEliot
Just take everything said in the pages about BadProgrammers, and negate it :-).
Slightly more seriously: being a good programmer is dangerous, and one of the dangers is what the XP maxim DoTheSimplestThingThatCouldPossiblyWork is all about. Because code written by experts is sometimes only readable by experts, and usually that's a pity. (Do you want to spend the rest of your life maintaining that code you wrote six years ago, because no one else can understand the cool algorithms that make it so fast?) So maybe the whole concept of being a GoodProgrammer is itself dangerous, and that's why this page hasn't existed before. Or not, as the case may be.
"I don't think I'd mind maintaining a program I wrote six years ago. However, I am young, fairly inexperienced, and wholly untrained. Which is why I find the lack of a page on what a GoodProgrammer is frustrating, in an amusing way.
Also, wouldn't teaching someone else how to maintain your code qualify as a trait of a GoodProgrammer? Or can the ability to produce knowledge so esoteric that it cannot be transmitted still good?" -- NathanielEliot
Avoid ObfuscatedCode. There is no such thing as code that is so good that nobody else can use it. This code is, inherently, bad. This is not to say, however, that complex or arcane code is bad; rather, if one produces particuarly complex or arcane code, one should ensure it is documented sufficiently that others can make use of it. Programming languages are a tool to help programmers understand software; if it were not so, we would write everything in CPU opcodes. Therefore, if one is a GoodProgrammer, one will by definition produce code (and supplement that code with documentation) that other programmers can understand. Arguably, doing anything less with one's code is neglectful at best and outright rude at worst. Optimally, a GoodProgrammer can produce self-documenting code (and, in cases where self-documentation is insufficient, supplementary documentation) that will not only accomplish some task in a very good way, but also allow those who come after to learn from the goodness of the GoodProgrammer. -- Apoch
Also need HealthyBodyAndMind -- anon
Well, now that the page exists, let's give it some flesh. A GoodProgrammer ...
If you want to be a better programmer, read ThePragmaticProgrammer and do what it says. It's the best book on the nuts and bolts of programming excellence since CodeComplete.
I think LazinessImpatienceHubris sums it up.
See also: AverageProgrammer, ThreeStarProgrammer, RememberTheFuture, ProgrammersNotebook, FiveCannibalProgrammers .. and the other LikePages linked below