Types of Programmers

I have seen two types of programmers. Maybe this is evident in other fields too, but maybe it is impossible in other fields. One type is the one who is well trained in a particular technology or programming language and keeps doing it again and again, with consistent quality and consistent structure. And knows all the definitions and in and out of the particular technology. Ask them anything related to that and they will have an answer; maybe not that deep, but an answer nevertheless. Then there are the other types. They may not in-depth, and they start out with no training. Their work may be horrible at first but exponentially improves over time. They are not consistent, they forget that it is work and think of things like beauty, elegance, perfection etc in their work.

I mentioned that this may not be possible in other fields. For example, you cannot self learn and become better and better as a doctor. Or a pilot etc. But even in these regulated fields, there are those who will treat work as work and those who will treat work as their purpose in life. And the work need not be as fancy as a doctor or pilot or for that matter programming. It can be anything, even a janitor can take pride in cleaning, like doing it better than anyone else in the world.

Now, which of these would a business love hire? I will wager a lot of the former and a few of the latter; as the latter will be very few. These are the sort that can blaze a trail, belt out a new product in weeks if the fancy catches them, what the rest would take months.

Now here is the conundrum. How can you hire someone who sucks currently at the interview, sucks at the technology that you are asking, because he still does not know, or the way he works and learns is different?

Believe me, you don't want a language expert, if you can get someone who can be an expert in anything. As languages and technologies fade fast. And those who need training or hand-holding in adapting to new technology and paradigms becomes a liability soon, than an asset.

If the person is experienced, and the experience can be in commercial work or personal work or even some person projects – in the interview ask about the work. See how deep he has gone in the work. Listen to what he (or she) has to say. Prod him on why he has done one way than the other. A learner will teach you insights that a trained worker can never.

My favourite question was some vague question which does not have a right or wrong answer like – What is the essence of Object-Oriented Programming? A trained worker will babble what he is taught, a learner will talk what he thinks, what he has experienced and thought – what is hyped, what is valued, what is the real spirit; and I will take such a person any day over a trained expert.