Great Developers experiment on their own - they love to “hack”: create new things, enhance existing things, and make the elements of nature do things God did not intend them to do. No, most great developers don’t intrude into other people’s computers. And most of the so-called “script kiddies” (at least those who are computer intruders) while usually being perfectly nice people, are not great developers - at least not yet. Great developers instead spend hours on end improving the quality of existing code by simple, mechanical actions. They love learning new languages. They chat endlessly with people from all over the world. They read a lot of things online and offline.
Most importantly, great developers in this day and age work on open-source projects. While open-source became popular with software, it later expanded to many other fields: there’s now open-content/free-content texts, pictures and photographs, music, videos, and anything else. There are open patents, open science, open access, etc. But let’s focus on open-source code.
If you want to hire a great developer you can bet your life, that he’ll contribute for an open-source project. Why? Can you imagine him starting his own shareware project? Shareware is practically dead on Linux and other UNIXes, which are the development environment of choice for most people. And shareware doesn’t pay: you work on a shareware program a lot, then you release it for a pay, receive pay from at most 10 people (if you’re lucky), and no-one can or is willing to contribute back. On the other hand, if your program is open-source, and you publicise it on freshmeat.net or a similar site, some people will gladly take a look, some of them will try it (instead of immediately ignoring it for being non-open-source), some of them will send you a good input, and some will even become contributors.
Naturally, most starting open-source projects amount to nothing. But most shareware programs have died along the way too. If you have a good discipline and want your program to succeed, nowadays open-source is what all the cool kids are doing, and practically no one will respect you if you’re just a non-open-source shareware (or even just non-open-source “freeware”) developer.
So if you want to hire good developers, your best bet is to find people who are free software enthusiastic. Other people are just either not good developers, or have the wrong character, which means they will not improve, but become worse in time. Technology is progressing and workers who are not open (literally), cannot keep up with it.
It is known that great programmers almost consistently have very good lingual skills. All of the great programmers I know have a very good level of English. The famous computer scientist Edsger Dijkstra once commented that he preferred to hire English majors over Computer Science majors because the former made better programmers. If you see someone with an obviously broken English - don’t hire him! (I’m not talking about a few problems - these are common and people with an audible cognition are more susceptible to them. )
So language is one element. Another element is philosophy. I’m not talking about the standard ivory-tower philosophy, which is mostly either useless or completely harmful, but rather of the process of “loving-the-wisdom” and seeking wisdom. Nowadays, most of the greatest philosophers don’t write books. Instead they write essays and articles online, emails, weblog entries or comments, or even cartoon strips or other art forms. The great philosophers of today are bloggers.
Some great programmers I know purposely maintain a low profile and don’t comment on everything. I can respect that. Others (including the writer of these lines) are completely sincere and always express their mind.
If you want to tell if someone is a great developer - ask him about his opinion on a few things. Possibly political. Possibly related to software management. Possibly something less serious, like popular culture. If they’re a great developer, they’ll eventually have something innovative and opinionated to say about something. Not necessarily an opinion you’ll agree with, but a good, well-thought opinion.
When asked why he changed his opinion from the day before, Mahatma Gandhi replied: “Yesterday I was more stupid.”. And indeed, you’ll see that the really good programmers may eventually change their opinions.