Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Like most people, I think of myself as being a bit above average in my field. I get paid well, I've gotten promotions, and I've never had a real problem getting good references or getting a job.

But I've been around enough to notice that many of the worst programmers I've worked with thought they were some of the best. Bad programmers who are surrounded by other bad programmers seem to be the most self-deluded.

I'm certainly not perfect. I do make mistakes. I do miss deadlines. But I think I make about the same number of bonehead moves that "other good programmers" do. The problem is that I define "other good programmers" to mean "people who are like me."

So, I wonder, is there any way a programmer can make some sort of reasonable self-evaluation? How do we know whether we are good or bad at our jobs?

Or, if terms like good and bad are too ill-defined, how can programmers honestly identify their own strengths and weaknesses, so that they can take advantage of the former and work to improve the latter?


locked by Thomas Owens Aug 24 '13 at 16:00

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.

Why do you want to know? No one can define what "good" is. If you get the work done as expected and get paid well, that is good enough. – Mert Jul 11 '12 at 9:13

38 Answers 38

For balance I'll throw in the Three Virtues of a Programmer, namely laziness, impatience, and hubris.

Laziness is all about getting the most out of your effort. It's a reminder to spend your time wisely, where it will do the most good. As a programmer it's very easy to get distracted by things that will have little impact on the success of the project, a good programmer can ruthlessly deal with these distractions.

Impatience is a nice one because it's quite specific to software. Basically when it comes to software the earlier the failure the better. A good programmer is not afraid to try out ideas and re-evalute if things don't seem to be making progress.

Hubris is about having the belief that what you are producing has some real value. If you don't believe this then a good programmer will pick something up off the shelf and move on to the next task. It's a good cure to the not-invented-here syndrome.

Just some things to think about for your next performance review :)


How about you actually create software that people like to use? And yes, the software people like to use: works/does what you said it would do, is maintainable, better yet-does what you were asked to make it do. People also enjoy being able to talk to a developer who isn't an arrogant ass.

A down vote with not comment - cowardly. – JeffO Jul 31 '09 at 17:46

I think this question can't be answered in the way you would like to here. I think you can't compare the difficulty of a programming task, when your are involved.

Perhaps somebody outstanding can do this, if he has alot of experience.

  • At 2:00AM when the "S" hits the fan does your code make sense?
  • Do you and anyone else for that matter understand your code six months after it is written?
  • Do you get more calls from the "inner circle" than you make to the "inner circle"?
  • When is the last time someone had to line-up your code so they could read it?

The list goes on and on and...


To know what is good, I'd see what is bad and then just invert that. For me, the worst programmer is the one who doesn't give a damn. Ignorance is the worst show stopper IMHO. Those people never learn, never listen, never improve. To my observation ignorance walks hand in hand with arrogance, but I could be wrong on that. So, if you inverse this quality you might end up with a good programmer. Well.., not necessarily a genius, but at least someone with a chance to create something great and be useful to others. Someone said, "it doesn't really matter what I am, what matters is the direction in which I am moving along" :)


Good programmers get paid!

Mediocre programmers get paid. Some of the best programmers do their sh*t for free. Personally, I get paid ;) – Dan Rosenstark Jan 30 '11 at 19:29

IMO the ultimate test is whether or not your programs are still useful and maintainable in 5 years, 10 years or more.


If you want to see how you compare to other programmers around the globe, just try out and see how you fare.

Why is this downvoted? It's a valid idea... might not bear a relationship with getting paid, of course. – Dan Rosenstark Jan 30 '11 at 19:30

protected by Josh K Feb 7 '11 at 7:16

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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