I think that this is a not so hard to solve question. The main reason why a developer is a good developer is «his interest on programming». A good developer always has a great interest in programming, so probably he will write a blog on programming, he will have a Github or Sourceforge account with his own projects, or even he will be participating on some open source project or programming forum — like StackOverflow — where you can appreciate his activity. If not, he will have his own side projects and he will be able to show you some demo on his computer using some application like Skype or TeamViewer, and he will be able to show his capacity with that side project. Another option is to send you a sample source code file, where both of you must keep the secret. Finally on the interview, you can challenge him to solve a programming problem, where he must prove his capacity with some simple task, like using an algorithm to solve a very specific problem.
So, despite the resume that has the developer, you have several ways to prove that he is good enough for your company and all those ways mentioned above will bring you clear overview of the developer kind that is him. If the developer meets all the requirements on the previous paragraph, probably he is a great developer. If you have experience hiring developers, you will notice that really good developers are scarce, and they are scarce everywhere. Hiring non-experienced developers that can solve hard problems is just a myth, and if you really have experience hiring and managing developers, you will find that non-experienced developers will use copy-paste rather than writing their own code, without too much understanding on what are they doing.
There is a very recent post on the topic where a hiring company advises about “not hiring just self-described awesome developers”. That’s true, if someone is really doing his job, he should have any of the above mentioned features, that is a very good filter, because you can preview the kind of developer that you will hire. The kind of problems that is he solving and the type of projects that are causing his main interest. The topics that he treats, his perspective on development, and how much effort does he brings on software development. Usually someone that meets all that stuff is a passionate programmer.
If you are really conscious about your environment, you will find that good developers are scarce, so if you meet a great developer, just offer him a really good position, because will be hard to find another good developer as him. In other case, if you think that this kind of developer is overqualified or simply is too much for your job offering, do not waste his time trying to hire him for a market based salary, an average salary is not attractive, because he will be able to find any programming related position quickly, for a better salary than your job offering can bring. And remember that “a little over 49% of developers are below average” before trying to hire a developer that is much over the average.
Also, I can cite to Paul Graham, and mention to you some interesting facts about great programmers.
- “a great programmer might be ten or a hundred times as productive as an ordinary one, but he’ll consider himself lucky to get paid three times as much.”
- “the programmers you’ll be able to hire to work on a Java project won’t be as smart as the ones you could get to work on a project written in Python.”
- “if companies want hackers to be productive, they should look at what they do at home.”
- “along with good tools, hackers want interesting projects.”
- “along with interesting problems, what good hackers like is other good hackers.”
- “hackers are more politically incorrect.”