Wednesday, 17 April 2019

Good Help Is Hard To Find - Interview Tips for Technical Leaders

Good help is hard to find.

This is the first in a series of articles which will summarise my last half decade of hiring/outsourcing/offshoring experience as Head of Technology at the Cogworks.

Introduction

Hiring and interviewing is part of being a leader in technology - I have seen hundreds of CVs over the years.

In the beginning, I wasted a lot of time interviewing people who's CVs looked great, but the candidates could hardly write code. Developers also come in all different skill sets and levels. One company's "senior" can be another company's hack. Yes there were developers applying for senior positions who could only code at a junior level! This prompted me to devise a very simple online test.


Online Testing

I personally hate online tests, so I tried to make this test as painless as possible. The purpose was to identify if the candidate could read a vague description, and then submit some sort of code solution. They were judged on their assumptions, approach and coding style.

The test was to go to a URL and follow the instructions. The initial instructions were to write some code to do a HTTP GET to an API endpoint. That endpoint would tell you the next endpoint to hit. That's it! Candidates could choose any language, tool or library to write their code.

You would be surprised at how many candidates this filtered out. One candidate even replied to say: "I went to the URL but all I saw was some XML. Is this part of the test?".

Yes. It was part of the test. The 2 sentences in the XML gave you the instructions.




The First Interview

I normally have initial interviews conducted by 2-3 core developers. This allows our devs to get experience interviewing people, and gives them a chance to figure out what type of developers would suit the team. There is a set of 10 interview questions which I created to elicit 3 specific responses.

The 3 main points are as follows...


1. I want to know what you want to learn
I personally want to work with people who are hungry to learn new things. If someone wants to learn, then they will have new ideas and knowledge to offer the team. For example, one of our best devs was automating his house. That's fantastic! It meant the team has access to knowledge about hardware, Linux, Raspberry pi's, networking etc.

If a person cannot tell me what they're interested in, then the rest of the interview typically goes very quickly.


2. I want to know if you can think
I want to work with people who have an opinion. They need to recognise good and bad processes, why things go south, and where things can be improved.

I ask about projects which have gone great and not so great. A good candidate can tell the difference and elaborate why.


3. I want to know if you can talk about code
Being able to talk about code is very important. If you have a coding problem, then you need to have the skill to elaborate it to other developers. You also need to be able to give feedback to other devs about their code.

There are 2 quiz questions at the end of our face to face interview which let me know if you can actually understand code. Two of the tasks are: "Talk about this code and tell me what you are thinking". That's it. Just tell me what you think!

You would be surprised how many people cannot talk about HTML, CSS, or javascript when it is placed in front of them. I even added blatant eye-watering errors to the code, and many people either just don't see the errors, or don't understand code well enough.


The Second Interview

This is kind of a sense check with myself and another developer (or 2). This interview is a condensed version of the first, which basically covers the same types of questions... just quicker.

I can normally figure out if I want to hire someone in about 30mins. There are however some anomalies, which is why I bring 1-2 devs to get more feedback. The devs I bring are always different to the ones in the first interview.


Final Thoughts

Hiring is part of being a leader in technology, and you you need to figure out what you want from a candidate. Most importantly, don't be tempted to hire someone just because they are there, or "good enough".

The interview process is a chance for you to answer this question: "Based on their skills, experience and attitude, is this someone I want to work with".

I hope you found this helpful. Feel free to comment about your experiences.


Posts In This Series

  1. Interview Tips for Technical Leaders
  2. Tips To Ensure Quality Delivery When Outsourcing
  3. Tips When Taking On An Intern
  4. Tips When Hiring Senior Developers
  5. Tips When Hiring Junior Developers
  6. Tips When Offshoring Development Teams
  7. Tips When Hiring Digital Producers
  8. Tips When Hiring Remote People
  9. Tips To Improve Developer Retention (coming soon)
  10. Tips When Hiring Lead Developers (coming soon)


No comments:

Post a Comment