views:

714

answers:

15

I often hear it mentioned such sentences as, "it is easy to find a blank-language programmer, but as always, it is hard to find a good programmer"

What exactly defines a good programmer? What are the tell-tale signs of a good programmer?

(edit: duplicate? What are the signs of talent in programming)

+12  A: 

A good programmer:

  • Can provide good estimates of how long a programming task will take (giving and justifying margins of error)
  • Can deliver completed code quickly
  • Completed code matches requirements
  • Completed code is tested, and comes complete with unit tests for re-testing
  • Their code is structured and readable, and comes with sufficient documentation such that another person can easily understand it and modify it.
slim
A: 

A good programmer can solve problems in a better way than a ordinary programmer.

Warrior
+1  A: 

Someone who is smart and gets things done ;-).

And of course being able to write great code also helps.

Gamecat
+5  A: 

Depends on the perspective. But from a team-lead's perspective:

  • They estimate accurately.
  • When the estimate is skewed by outside influences (e.g. feature creep) they put the hours in (within reason) to bring it in on time
  • They do their work on time.
  • Their work has minimum bugs (everyone writes bugs)
  • Their work is easy to maintain.
  • When their co-workers read their code they don't feel stressed or psychotic
  • They get on with their colleagues
  • They like working in a team.

But if I'm not talking about a business environment, if it's not someone I have to work with then I do agree with the following far more simple definition: a good programmer is someone who produces a piece of software that many people love.

Joe R
+1  A: 

Someone who cares about the code - or to put it in the terms of The Pragmatic Programmer, someone who doesn't accept broken windows.

Brian Rasmussen
+1  A: 

It depends on who you're asking - you'll get different answers if you ask a programmer than if you ask a manager.

From a manager's/hirer's perspective, a good programmer:

  • is hard-working, honest and reliable
  • is able to work with other people, communicate well, and accept instructions
  • produces clean, working, testable code, preferably quickly
  • is a consistent estimator
  • understands that readable code is more important than small/fast/clever code
gkrogers
+2  A: 

A good programmer always gives very very simple solution for problems.They give less lines of codes which gives better performance.

BlackPanther
A: 

Good rank in TopCoder competitions is a good indicator of great programmers. Contests of various flavors test programmers on a lot many parameters.

VarunGupta
A: 

I think a good article to make us think about who are good developers is this one.

I think, for most of them, is a question of talent.

Rafael Romão
+1  A: 

A good programmer

  • Programs in their spare time
  • Looks at problems and easily sees a software solution
  • Knows a variety of technology (not just languages) and picks the right tool for the job.
  • Understands common data structures and when to use each. I've interviewed senior programmers with 15+ years of experience who couldn't tell me the difference between a linked list, a C++ vector and a tree.
  • Asks the machine to do as much as possible for them - code generators, search and replace tasks, etc.
  • Takes pride in the work they deliver, and takes ownership of their part of the projects.
Adam Hawes
+4  A: 

"Good" is a little hard to pin down - it's a matter of perception, which in turn may depend on education.

I was chatting with a user once, some years back:

User: "Pete's a really good programmer, isn't he?", referring to my boss, a self-taught dilettante programmer.

Me: "Why do you say that?"

User: "Well, whenever something goes wrong with one of his programs, he fixes it really quickly".

Me: "That happens a lot?"

User: "Almost every day."

Me: "So what about the programs I wrote for you?"

User: "Oh, your stuff just works."

Mike Woodhouse
A: 

In my opinion, a good programmer has a mental map of the strategies to achieve the result(s). He will also execute all the strategies mentally and then quickly code the skeleton of the program rather imperfect the first time. And then he will make improvements iteratively after every execution until the code is as perfect as possible.

Ananth
+3  A: 

It takes at least 10 years. Really.
http://norvig.com/21-days.html

BalusC
+1, that is a great article
alex
A: 

12 Things Every Programmer Should Know tells you what a good programmer should has.

Samnang