"Another day has passed without having to invert a binary tree"

March 30, 2022

Lazy Bones!

How many times have you seen that meme?

It goes round and round. It keeps being posted by those ridiculing interview processes that fail candidates by focusing on silly, unrealistic scenarios.

The first time I came across that phrase, I grinned.
The second time I smiled.
The third time I smirked.
The fourth time I was bored.
The fifth time I rolled my eyes.
The sixth time I got irritated.
(Skipping an another million times I’ve seen it)

Please don’t keep posting and reposting that nonsense. I’ll explain why.

First of all, let’s agree to agree:

  • All technical interviews are imperfect. Agreed.
  • Many technical interviews look at the tip of the iceberg, ignoring the submerged mass. Agreed.
  • Companies should not be hiring a candidate only based on the result of a technical test. Agreed.
  • Job interviews should be evaluating candidates at 360 degrees, taking into account their hard and soft skills, psychological profile, experience, required role, projects/products on which they are going to work. Agreed.
  • Technical interviews should not be so difficult to discourage good candidates. Agreed.
  • Warm face-to-face talks are better than cold take-home tests. Agreed.
  • Interview processes should be optimised to capture as much information as possible from a candidate in the shortest time possible, whilst technical tests erode a lot of time only to reveal very little. Agreed.
  • < …put whatever paraphrase of the previous points here… >. Agreed.

At this point, given that we have very valid reasons to object pointless technical tests, let’s not resort to silly excuses that, ultimately, would only expose our mediocrity.

The most stupid justification for the meme above is: “I don’t need to write sorting algorithms or handle binary trees when working on an enterprise system!”.

Well, let’s see.

The role of a software engineer is to solve complicated problems in an effective and efficient manner. A software engineer is not just an assembler of pre-built blocks provided by others. If they want to be that, they should not be calling themselves software engineers and should not apply for software engineer roles.

In fact, they’d better be clear during their interview: “hey, I don’t want to think, just give me a bunch of Lego bricks.

When developing enterprise software there are tricky problems to solve with efficient implementations. Knowing why O(n2) is bad when you can perform the same operation in O(n) or even O(1) might have a huge impact on the quality of your product. It can even guarantee better customer retention if they don’t need to wait too long for the spinner on your UI to stop spinning.

Technical tests have no intrinsic value other than evaluating one’s ability to think about a problem and devise an efficient, pragmatic solution. Most interviewers are not really interested in the final result. Believing that inverting a binary tree is only useful to evaluate someone who is then going to invert binary trees in their day-to-day work is very shortsighted and obtuse.

Algorithmic challenges are often representative of real business problems. Is asking to find the first duplicate character in a string silly? How about looping through a list of financial transactions to find the first day that contains more than one? Can a developer ensure that all the nested “for” loops in their code could not be refactored to be more efficient? They don’t think they need to manipulate trees or graphs but they keep grouping data into hash maps, huh? What about traversing that data? Are they doing it efficiently? What happens when their data sets grow?

So you don’t want to take a technical test during a job interview? I am with you. It’s time-consuming, it’s energy-consuming. In the short time of an interview process, it says very little about you as a professional and a human. Having technical conversations is much better and can reveal weak/strong points in many areas much more efficiently. I understand that, I agree on that, I support that.

Only, stop posting that stupid meme and don’t use the excuse “I am not required to know advanced techniques in my day to day job”, cause you do, and companies want to hire high-quality professionals, not mediocre lazybones.

Profile picture

Hi! I'm Andrea, a Software Engineer living and working in England.