Technical interviews - Are we all out of our minds?

Technical interviews - Are we all out of our minds?

Ah… the summertime! Lots of feet in the sand pictures, people showing off in Facebook, extreme unbearable heat and most importantly… holidays time for many people!

And of course, everybody thinks about quitting their shitty jobs during holidays so many chances are you will do some interviews between the 15th of August and the 15th of September as it is the perfect time for companies to hire and it is possibly the time of the year when people are more likely to consider a job change.

I had this blog post in draft mode for some months. This all happened by the end of 2015 but I think it is all still relevant.

Remember, employers, everybody is hiring, every company needs better engineers and good candidates last sometimes only hours in the market. If you are struggling to hire people, please reconsider your recruitment process. It is not that there is no talent, but it means either your process is broken or you pay very little money. Or possibly both!

This is about some experiences from me and my wife doing technical interviews for a number of tech companies, both in London and Barcelona. I will not give any names or many details about the companies themselves, although some of them can possibly be guessed.

For those of you landing in this blog post without knowing us, and in order to put some context, a bit about myself can be read at http://www.ricardclau.com/about-me/ and http://www.ricardclau.com/curriculum-vitae-en/ and my wife is a former Physical Education Teacher who used to be a government employee in Spain and now she has recently been working as a Junior QA Engineer in London, learning Testing methodologies and the basics of web / mobile technologies and automation.

Everything we expose here happened to us in just about 2-3 months of relatively selective and not so intensive interviewing. Say about 8-10 companies for each of us. This makes me wonder if things are even worse generally speaking.

If you start laughing or feel embarrassed by what I say here, or if at least this blog post makes you reconsider some of your recruitment process, we will all have won something today. And in case you were wondering, yes this is a rant blog post!

Feel free to share your experiences in the comments!

Utterly complex and long technical tests

I have never ever in 15 years of career had to implement a crazy sorting algorithm, traverse a kd-tree, compare BFS / DFS or use the Ford-Fulkerson algorithm. A very small number of people deal with these issues on their daily basis and only after months or even years they get to master them. And they specialise in one of them, not all!

I can understand that companies like Facebook or Google ask you these types of questions. To an extent. At the end of the day, if you join them you will rarely join the search team or become the head of the Opengraph project straight away.

Well, of course, if you are one of this selected candidates or you finished Uni last year you surely know these things perfectly, much better than the people interviewing you and you will ace the tests. But quite often the sad reality is that if you join them, on your first year you will most likely be working in internal tools or doing very small tasks.

Anyway, they are the places everybody wants to be, someone decided this totally needs to be part of their interviewing process and so be it.

Don´t get me wrong, algorithms knowledge is valid in some cases. If your company has >200M users, surely you need engineers who understand that RAM and CPU are not infinite and testing if they can optimise some code base or they can build a binary tree can be very valid.

However, most companies don´t have these issues. And they never will. And if they ever get to some scale (anything less than 1M users a day is not scale), they will be able to hire people who excel at their particular problems.

Why the hell do people think these stupid puzzles are valuable at all? Is it pretending to be clever? Would your interviewers be able to solve an equally complex, slightly different problem in 15 minutes? I bet you they would all miserably fail.

PLEASE, STOP USING STUPID ALGORITHM PUZZLES IN RECRUITMENT. They are USELESS. This is not the problem you have in your architecture and code base.

By the way, you can get the excellent “Cracking the coding interview” book and prepare for these interviews. I did and studied. I was better at some interview puzzles and equally stupid at some others. Apparently, it is all about how many puzzles you can remember as you will surely not develop a new algorithm in 20 minutes and everybody uses slightly different versions of the exercises in the book and the Easy and Medium problems in HackerRank.com.

Am I a better engineer by remembering how to traverse a stupid binary tree? No, I am not. And unless you have millions of items to process constantly, O(N^2) will possibly be ok as your N is presumably less than 100.

And if it is not fine, all major algorithms are available in almost every known language either in the standard library or somewhere in the Internet.

Full Stack developers

One of my favorite ones. One of the biggest stupidities of the times we are living. Or perhaps, a way to have a contract saying no matter how much experience you have, you will be happy editing HTML in newsletters while the preferred unexperienced ones are having fun trying to write a small micro service with the latest technology.

I understand startups have limited resources and we are all supposed to help everywhere we can. At the end of the day it is all about helping delivering a useful product to our customers or perhaps help other teams building internal tools. And I am happy to do it. Full-stack. But you would not reject a decent CFO by them not having much experience at Office Management, right? Or perhaps you would and I am a bit deluded.

During my interviews process, I was told by a couple of companies that they were looking for full-stack developers and they were noticing my front-end skills were a bit out of date so it was a no to them.

I have significant experience in front-end optimisation, backend development, decent scalability problems, a variety of storage solutions (both SQL and NoSQL, or call them Big Data even if they fit in a couple of mid-size servers or even in RAM these days), DevOps automation and Systems administration. And as many of us, I have done a lot of website development in the past so I understand how front end in browsers works. I admit I don´t know anything about mobile development but I am sure that was not the problem.

Back to front end, in fact, I was doing AJAX requests and JavaScript DOM manipulation in the old early days of the Web 2.0 with Internet Explorer 5 and the initial versions of Firefox. Chrome did not even exist, and neither did excellent frameworks like Bootstrap and jQuery.

Yes, I am not the best at front end development, and quite honestly I am not interested in it at all. In fact, I haven´t read much about the latest CSS and JavaScript patterns, I haven´t modified much code written in Angular, Ember or React and I don´t know much about Grunt, Gulp, Bower, NPM or whatever is fancy this month and will be deprecated next summer.

But I can still jump in and debug some JavaScript undefined error, fix a couple of poorly aligned divs or even worse, aligning tables in marketing emails. Of course, if this is going to be my daily common tasks, thanks for rejecting my applications!

Companies not knowing what they look for

I have had this one in “DevOps” roles. Some companies don´t know what this is about. They hear everybody is talking about DevOps and they want it. They want to buy it. They want to be disruptive and quicker. But you cannot buy DevOps as this is all about culture and empowerment. And if you don´t change the mentality of your Devs and Ops you will never get DevOps.

I have been rejected by not knowing some obscure Puppet parameter. I never said I am a Puppet expert. What´s the point? What are you trying to achieve with these questions?

But for my wife this has been far worse. People just don´t understand what they need in QA. Specially when it is a small new department trying to mitigate the billions of bugs their full-stack hackers create.

They all want people who are expert in automation but frankly, people who know to do it are developers. And when some QA person learns some coding skills in some of the TDD / BDD / Browser Automation frameworks they often move to a development position as it is FAR more interesting.

Even if she clearly states she is not a coder and she only knows the basics of how automated QA works (say, she is able to modify a basic CSS / XPath query in some Selenium code) she is not an expert on that. But the people interviewing her are often not either. And you end up with some stupid Q & A that some developer filled and it is a waste of time for everyone.

And it is really hillarious when you know that company has no QA automation at all (remember, everybody knows each other in the industry) and they reject my poor wife because she could not develop a complex Selenium script from scratch.

Guys, automated QA needs to be bootstrapped by your devs who can hopefully make it easy for your QA people to run / extend and ideally end up automating part of their work. And manual QA will ALWAYS be needed. Thinking you can achieve the same with some Selenium scripts is aspirational at best and a bit ludicrous

And, if some QA Engineer is not mentioning their automation skills, it means they don´t have them. You asking the question can only make them lie or repeat some bullshit they read on the internet 20 minutes before entering the room. Why did you even contact them if you need automation engineers? Stop wasting everybody´s time and energy!

Technical leadership roles in startups

I was told by a couple of startups that I could not expect a technical leadership role because nobody joins them as such. Well, good luck to you!

In some startups, meritocracy is understood as “time you have been there”. And sometimes, people with >10 years of experience need to report to completely unexperienced people. This is just plain wrong. Even worse, sometimes these unexperienced people are in charge of designing infrastructure and architecture. And guess who are in charge of fixing their 10x mess…

Don´t get me wrong, I am all about having a flat structure where everybody has a voice, decisions are taken with some consensus, etc… but seniority and experience should mean something and some startups forget about this

Arrogance and the very basics of education

Believe it or not, the next story happened to my wife. She went on an interview at a well funded, relatively well known startup in London, being referred by a friend. The person who interviewed her was not totally drunk but quite tipsy, was not ashamed of saying “sorry, I had a couple of beers at lunch time” and even if after 5 minutes of chatting they both knew my wife was not what they were looking for, they kept the interview going just because, again literally, “there is a boring meeting I don´t want to attend”. Yeah, really! Please report these cases to your recruiters and HR departments and PLEASE sack HR people like this.

Also, I hate when people are late to a phone / Skype call. Of course, things can always happen, last minute meetings / fires occur as that´s ok. But some interviewers don´t care. They never call you or they phone / show up 30 minutes late.

I still remember once a long time ago in Barcelona I went for an interview in a Friday afternoon even if I had to change some plans because according to them, it was really important as the Team Lead was going on holidays for a month. I accepted as it all looked interesting on paper.
So, I get there, and I wait… and wait… and after 30 minutes I tell the people in reception that this is just unacceptable and I leave the company. 20 minutes later (a total of 50) I get a phone call from that Team Lead asking me why I left when we had an interview. I will not reproduce my insults to that idiot but I guess you see my point.

On the other hand, I once interviewed via Skype with an important music company based in Sweden and one of the guys was running late. The interview was delayed but 60 minutes BEFORE the interview I already had a text from him reporting some public transport problem over there which would surely make him be late to the office. They also apologised many times although none of it was their fault. And I also had to cancel last minute an interview with one of the biggest e-commerce in Europe. These things happen.

Even myself, I forgot I had a phone interview a couple of months ago and I felt like shit about it. I don´t know how many times I apologised to the candidate. It is not great, but that´s the minimum you should always do.

On the other hand, sometimes, dubious startups are significantly late pretending to be very busy but the reality is that they don´t respect you as a candidate.

Think about it, if they treat you like this before joining, how can you expect them to respect you once you join them and you have a mortgage or kids to feed and your family depends on that salary?

The Facebook / Google delusion

Generally speaking, most startups tend to exaggerate their numbers, aspirations and expectations. I understand some founders are so used to constantly pitch their idea that they just pitch to you. And that´s fine.

Please be honest and realistic about expectations. And don´t be arrogant. You are possibly not going to be the next Uber or Facebook or disrupt anything. You will probably not have millions of users in your first 3 days and we are the ones taking risks joining you. Please, be honest and realistic.

Non-technical people involved in technical recruitment

Why do some companies insist on you meeting some completely random people you will not interact with on your daily basis?

Of course, I understand if you are hiring a CTO, he needs to meet the other C levels and other important people of the company. And if you are applying for a Head of Engineering position, you need to meet positions like Head of Product, Head of Portfolio, some Scrum Masters and so on.

But the average engineer positions only needs to meet their lead and the rest of the team. Ideally, more than one member at the same time so that you can also see interactions and how they treat each other. Potentially, other people you will interact with like the scrum master of the team. But that´s it.

And of course, the HR departments. They can really put good engineers off with all their stupid cheap psychology questions. Or their poor negotiation skills. Every time I have been in charge of recruiting a team I have told the same thing to HR: “I don´t want you to be involved at all apart from the paperwork and explaining them the perks”.

Anyway, that´s not too bad, the more feedback, the better. But please, make it always relevant. Extending a recruitment process adding random people to the loop pretending you take it seriously will only make your good candidates accept offers from quicker companies.

Stupid perks

This is a funny one. When I was younger I felt attracted by some of this. But now I only care about being able to work from home from time to time, private healthcare, not crushing hours because some marketing idiot promised some crazy deadline to some other manager and generally speaking things that are relevant to my present and future. Or even handy things like transport tickets, cycle to work scheme even if I don´t use it, restaurant tickets, etc… things that I can actually use and save me money.

Also remember, if they sell the company as very friendly and agile and the office is still full of people at 6PM when you attend the interview… warning!

Some companies sell the dream, showing some nice terrace people chill, or the pictures from the last crazy summer party or even better, week trip with your work colleagues with sex and rock and roll. That´s cool if you are in your 20s but it should never justify a lower salary and we mid-30´s people just don´t care.

And don´t get me started on the stock options topic. I already wrote a blog post about it some months ago. They are a lottery ticket for a raffle that will rarely happen. It is great if you are willing to take the risk but don´t expect everyone to join your startup because you give them stocks of technically nothing.

Absurd / stupid questions

Have you ever been asked… any of these?

If you were an animal which one would you be? FFS.
Where do you see yourself in 5 years from now? Clearly not here.
How would you test a time machine? You mean a Tardis or the one in the movie from the 50’s? FFS.
Having only 6 months of internship, do you feel ready to lead a full QA department? Mmmm, not really, but your 20k offering will not get you anyone with this skills set.
What is your worst quality? I am brutally honest. That´s not a bad quality. It will when I tell you all the stupid things you do.
Why did you leave X company? Although there is nothing fundamentally wrong at asking this, specially if for instance you left a big company for a small startup, people leave for these reasons: bad management (mostly), shitty culture / environment (often), being massively underpaid (sometimes), getting bored / not progressing (sometimes). And yes, if you manage poorly, you have a bad culture, you underpay me or I get bored I will leave. Like everyone else who is any good and has some self-respect!

The list is endless. A complete waste of time. If these are the only questions that come into your mind interviewing someone… well… reconsider.

Never ending quick chats and quick calls

I think this is a bit worse in London than in Barcelona. For some reason, people in London seem to love phoning you for “quick chats” and ask again the same questions the previous person in the process asked you. Is this a technique trying to detect some eventual lies?

And after speaking to 3 members, you need to speak to yet another one. Come on, guys, you are not a massive corporation. After 5 minutes you know if there is a match or not. Be honest and say “we think you are not what we look for”. Or even better, “we are not willing to pay the salary you ask for”. Stop wasting your time and our time.

Recruiters

A necessary evil. Some of them do a good job. Some of them actually care about understanding your needs and invest their time in going to meetups, engage with engineers and get to know us in person. Well done, those of you who do this.

However, many of them are just idiotic spammers who might be selling properties or fish next month. Does it ever work? Has anyone not knowing how to spell Symfony or Python ever managed to hire anyone any good for their clients????

Relocations and “Things are done better elsewhere”

If you are considering moving abroad just because you reckon things are better in other countries, please reconsider.

Of course, more companies and higher salaries mean more people get attracted. And in absolute numbers you will get more interesting people in London than say Lisbon or even Barcelona. But the good Lisbon startups surely do things right. And most Berlin and London startups are a bit of a mess. Like everywhere else. Yes, even in the US as I have been told by people who have worked there.

Some final thoughts

Recruitment is broken, and none of the new platforms being developed can completely fix it. Yeah, machine learning can get better matches but nothing works better than actually asking someone who actually works with the candidate. Or even better, if you have already worked with them!

Interviewing people is very difficult and the root of the problem is that everybody lies. And there is no way to know if what people are saying is true!

Even worse, some people think they are much better than they actually are. And equally bad, some people are fundamentally good, have lots of potential but were very unlucky with their mentors and think they are worse than they actually are!. And all these things are impossible to detect in less than 3 months.

Why do we spend so much time with stupid useless interviews? I don´t know. Some people forget about the probation period… which exists for a reason! Both ways! 3 months is a reasonable period of time to get to know each other. Most of the times 1 month is enough. Why don´t we use it? Why is it so badly perceived to either fire someone or leave a company within the probation period? I don´t get it.

I often also think of an anonymous reverse Linkedin where you can say “no, I would never work with this idiot again for all these reasons” or even “hey, look at the utter crap this person wrote, was proud of and I had to fix after arguing with them many times”.

But then of course, people would start posting some of my past commits and I may end up being embarrassed myself!