Nowadays a lot of guys are curious how to find “Great Developer” but, do not specify what do they mean by this words. How can we find something if we do not know what we are looking for? Let us at first find out is this instance exists. Probably, you are looking for a guy, who is:
- Knows everything on technologies she/he supposed to work with during her/his job at your company;
- Can create perfect easy-to-understand, scalable, maintainable architecture/code;
- Team player;
- Has nice leadership skills.
If you do, I can surely tell you that you are on the wrong way. Let me explain why.
- Usually, a regular human can not know every detail of every technology. Good professionals know key points and some details, not all. It means that it could make no sense to ask person for a particular details of that particular technology. Professionals usually know how to find this detail quickly, not all the details.
- I pointed my attention that roughly speaking all people could be divided into 3 categories:
- people with good memory but bad analytical skills and
- people who have good analytical skills and not very good memory
- people who have perfect analytical skills, perfect memory but do not care of your business, since whey could be perfect chess players and think about chess all the day instead of working on you
- On 2 I would say that usually code either easy to understand or scalable/maintainable, not both. So there are people, who writes first or second types of code.
- Next bad news is that usually person either hacker or team player. I knew 1 hacker on 1 project was so negative that it would be better that this guy just never participated at the project at all;
- And at the end leader persons are rarely good developers themselves;
- And now imagine of 2 hackers on the team hating each other!
We usually do not think about it when building our perfect team, yeah?
And there is even a theory called socionics that explains all types of characters and intertype relations.
Roughly speaking it tells us the next:
- Person is either thinker of feeler, meaning either good abstract thinker or good team player;
- Person is either sensing or intuitive type, meaning either stable worker and leader or gifted hacker, who can learn in seconds and do job better an faster than others;
- Person either perceiving or judging meaning either strategist or tactician.
More of that, even hacker performs better if works with “bad worker” of appropriate type. And the whole team performs better if all members has non conflicting intertype relations. It is what Tom DeMarco and Timothy Lister were talking about in their peopleware than they told us about “unproductive” people on successful teams and on successful teams participating in selection of their colleagues. Does your team do it?
Even more, the Joel’s method of finding “Great Developers” on conferences could fail for Introverts, which would prefer writing code and learning new technology to participating on some conference.
But everything is not so bad. Some people advance their skills in areas they are not best in. So there is a chance you can find appropriate person or Guru. Don’t forget to ask person what area she or he is the best, what is easy and what she/he is working on.
Good luck in building your team!