Smartness is in the language.

There was an interesting discussion that I recently had with a friend. The context was around choosing a technology stack for server end of the solution. We were discussing around php, python or Java. Client-end technology does not provide many choices right now. On mobile, Android/ios have specific platforms. If you’re going hybrid, you’d go with javascript based ones. Server end is a little different. There’s a host of choices. 

Ok. Back to the discussion. So we’d need to hire developers to work on the back end. Our thought was this: If we choose a more sophisticated language, would we get better developers. Now, in the choices we had, python was the most sophisticated. Personally, I like the language and the community around it. Now, if we went with PHP or Java, it’d be relatively easy to hire developers in India especially. Also, due to sufficient supply, we could also hire at a nominal rate and not burn our pockets. Though, the quality of such folks is rather questionable. In my experience, we’ve had to interview 10-20 people or more on average to find a decent developer in PHP or Java. Especially one who could appreciate programming in general and understand different design paradigms. Typically, you come across people who’ve known to code a certain way, and base their experience around a couple of tools. They feel completely foreign when introduced to newer concepts, even though experience-wise boasting greater than 5 years or so.

Now python developers aren’t too common here and come at a relative premium. Same with Ruby, Clojure, Node or similar languages/platforms. But since the language is so sophisticated, it instills lot of good practices in developers. Also, the quality of design skill is certainly higher than a regular PHP guy, to say the least.

In the end, you need a smart developer. One who is a good problem solver, has neat design skills and likes to produce quality stuff. Our conversation came to a conclusion that we need to choose a better platform to find the right developers. Python is a choice that we made for the exact reasons.

The emphasis on a good developer because : A good developer is much more valuable than just his coding skills. There are many facets of product development, where a sound feedback or input from developer shapes the product in a great direction. Since they’re the closest to the core/internals of the product, their inputs are very valuable, and a right person at that place is the first step in that direction.

[Note: The idea is not to look down upon PHP and Java developers, or anyone for that matter. I’ve known and worked with extremely smart developers, who used these languages to express themselves. The post is in general a reflection of current status of hiring (especially in startups/smaller teams), and lack of efficient developers.]

Would love to hear your thoughts as well.. Please do share them here. 

Interviews – Two at a time.

One of the factors that you look for in a candidate during interviews is his collaborative skills. How good is a person when it comes to carrying a conversation with a fellow colleague. How about disagreements? Does he respect arguments or gets aggressive..

How do you do that?

Here’s a proposition..

I was once in an interview session, and were short of interviewers. Lot of people showed up and we had limited time. So we decided to have paired-candidate session. This is where two candidates would appear together in an interview session. It was fairly effective and surprisingly pleasant experience. Here’s my observation from the experience..

1. There was a basic comfort during the session.

Since interviews have gone on to become this huge one-sided affairs, its become really difficult to gauge a person’s original nature during the interview. Getting a person into a proper discussion is quite a challenge. There are hardly any constructive arguments or discussions. Just questions and answers which are not a good representation of a person’s capability technically, leave alone his collaborative skills and interpersonal skills.

With another candidate in there, it is more comforting for the candidates and when they discuss, it can be more natural. This also spawns many useful discussions and arguments.

2. Simulate a typical work like setup

At work, you’re faced with similar situations fairly repeatedly. You are always discussing technical solutions with your colleagues. Either looking for support or challenging a solution. However, this situation is not repeated effectively during a interview session.

Two candidates at a time can help simulate a typical work-day, and can help gauge a person’s interpersonal and technical capabilities.

3. Interviewer as a moderator

I’ve always felt that interviewers should be doing more of listening. Just get the candidates talking and listen to them. With one-to-one interviews, mostly the sessions end up becoming a quiz situation. If that is all you want, there are many softwares which might do a better job at it.

With two folks in there, it can be really useful to have a good moderator as an interviewer. One would need to get both of them started in an argument or a discussion and observe how people react to individual points.

Knowing each of the candidates before hand can help a lot in moderation. Look up their details on the web and fit the right candidates together to get opposing views and opinions.

Conclusion:

In all, its a nice session to add to your interview plan. It’ll not only help you gauge the technical abilities but will also assure you of how the person would behave during the actual work. This coupled with initial research about the candidate can be a wonderful combination to add to your plan.

Have you ever conducted a ‘Two at a time interview’.. Please do share your learnings from the experience.