12 September 2012

How to hire a software developer

 

Paid advertising: A well-designed database application can make a big difference to your business. By helping you to record, manage and share your business information quickly and easily. Contact Access Guru for more information.

My involvement with hiring developers

I’ve worked at Novatec New Technologies for five years. During those five years I’ve held many roles in the company. My principal role was that of a technical lead, which was may main occupation for most of the time. Sometimes, especially during hiring frenzies I’ve also participated in the requirement process of new hires as a technical interviewer. I think that I’ve had around fifty to seventy technical interviews during that time.

The hiring process was broken into several steps:

  1. An HR person will collect all applicants CVs sort them, discard the most obviously wrong ones and then distribute the rest to various groups in the company for further processing.
  2. The CVs would then be processed by a group of senior developers and the director of software engineering to filter out the most interesting candidates.
  3. Those candidates who passed the second cull were contacted over the phone, asked some rudimentary questions and then we organized a technical interview with them.
  4. A one on one, or sometimes two on one technical interview was held with the goal of assessing the technical level of a person and most importantly their capability to be a good fit in Novatecs technical culture.
  5. Those which passed the technical interview were sent to the director of software engineering for a business interview.
  6. The final hire and no hire decision rested in the hands of the director of software engineering.

In my opinion group interviews are a poor way to filter candidates. Different developers had different outlooks towards what is a good candidate and also had different grades for what a good technical fit is.

I’ve developed my own system of processing candidates. The most important thing for me is to find out if a person is going to be a good technical fit for out culture and if that person has natural eagerness to work in a software engineering environment.

How I look at CV-s

It always starts with a CV. I will not go into what is a good CV. I’ve seen long ones, short ones. I’ve seen people who have written on their CV that they do not want to work as a software developer by have applied for such a position and people with zero experience and education in the field claiming that they are able to do it all.

One good resource for finding out how to write a good CV is the Manager Tools blog. I’ve been listening to them for five years now and they have a ton of information about any subject in the business world, including how to write a good CV.

Here are a couple of links:

On an any given CV I look for the following things:

  • Concrete achievements
  • Projects worked on
  • Career path
  • Interest in software engineering and self growth

What I’m actually looking for is the length of time someone worked on concrete projects, the technologies the worked with during that time and what were their accomplishments during those projects.

On many developer CVs it is possible to see many technologies in the technical skills sections : HTML 5, CSS3, NEO4J, MongoDb and etc.

The problem is during the actual interview the candidate doesn’t really know many of those technologies. For some he just completed a tutorial, or for other he has just been reading about them.  A lot of people put the web duology HTML5 and CSS3 but when asked concrete questions about some HTML5 JavaScript API-s like web sockets or local storage the candidate sometimes doesn’t didn’t hear about them.

So a good was to gather out what technologies are a strength for a candidate is to look at projects the candidate has done. For example if someone has listed that he has worked on a project for one year using Zend framework, PHP and MongoDB I’m going to assume that that person can handle those technologies and I’m going to focus my interview around them.

The career path is an interesting one. To find out what a person is and how he worked so far you can find out where he worked. Some companies I have heard of and know off and for others I can find what they are doing. So a persons work list will tell me from what kind of environment he or she came from and how hard is going to break their bad habits to make them a fit for our development culture.

Switching work is a lot like entering a new relationship after breaking the old one. Habits from the old relationship will break into the new one. They are hard to kick off.

For me the principal characteristics a candidate must have is a great will to continually improve them selves and an understanding of how software engineering is done.

How I prepare for an interview

After I’ve analyzed the candidate CV I list all the areas of her work that piqued my interest. I will focus on projects and technologies listed. The focus order will be from most recent to oldest.

There is a list of introductionary questions I always write down and always ask on an interview:

  • What is your primary development platform and how long have you developed in it?
  • Have you used and know how to work with Version Control System?
  • Do you know how to write and read an UML diagram?
  • Do you know how write Unit tests?
  • What is the latest technical book you have read?

These questions help me understand what the person is really about. For each interview I have my notebook with me. In it I write as notes all the areas I want to question the candidate either things that I think are cool or things I think are obfuscated and I want to know what the real deal is.

Googling a candidate is an important step before interviewing someone. Finding many Stackoverflow questions or a technical blog written by someone is a definitive plus. Also with Facebook, Linked in there is a good chance I will see how somebody looks like if they haven’t added their picture on their CV.

People convicted of serious crimes can be often found on the pages of various judicial web sites. Google will find them and it is a pain free way do filter people out.

What do I look in an interview

In the most cases I held only one technical interview with a candidate. So I try to get as much information about the person as possible.

On Manager Tools they say the main goal of a job interview is to keep people out. That is better to kick false negative then to let in a false positive. And I agree with them. With that in mind there are two check marks I need to tick off for a candidate:

  • Are they technically knowledgeable and are able to grow independently
  • Are they going to be a good fit for our technical culture

How do I conduct an interview

I’ve conducted technical interview in the office with a big white board to write one, I’ve conducted interviews in hallways and office kitchens. I’ve talked to people over the phone and over Skype (generally the same thing, but the latter is far cheaper). But the best place to conduct a technical interview for me is the local pub.

Since I live in Pula the best place for me is the coffee house “Bass”. With big wooden desks, good music and nice people in it.

For me a technical interview is a comfortable conversation between two nice people, who are relaxed and talk freely. A pub is a great place for it. People relax easily and talk freely in a place they usually go to talk.

A relaxed conversation is very important for me. There are several reasons for it:

  • Relaxed people will reveal more information and will freely talk about anything
  • If that person is hired I want to have a head start in building a good an positive relationship with them

I always start interviews by asking the candidate what he knows about the company I work for and the I fill in the blanks, describe the hiring process ask for questions and then kick in for the general questions.

I will always focus on the projects the person has done, the technical  problem she solved and their knowledge of the architecture and domain they were working in.

During that phase I often as for the candidate to draw me the architecture of the latest project they were working on. I want to know if they can visualize and model the software they were working.

On the end of the interview I’m really content if we shake hands and each leave with a smile. I always ask the candidate for questions and answer them as truthfully as possible and I always pay for the drinks.

How do I decide if its a technical fit

When I’m alone at the desk and had time to think about a candidate I write their strengths and weaknesses and if they are going to be a good fit for us. Based on my report I give my hire or no hire decision and let then let the business handle it.

Paid advertising: A well-designed database application can make a big difference to your business. By helping you to record, manage and share your business information quickly and easily. Contact Access Guru for more information

4 comments:

  1. Software developer CV should contain the keywords which are related to developing the software. Strong technical skills are important.


     CV Examples 

    ReplyDelete
  2. fantastic and useful we blog thanks for publishing useful and information great to read it.
    Software development in Rajkot,Gujarat,India

    ReplyDelete
  3. It clearly explains what are the steps followed in the companies to recruit the developer, we can correct our mistakes where we are lagging and get in to the job market easily!


    Sample cv: "http://www.samplecvs.org/"

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete