A notice a lot of developers complain about the interview process in the tech industry, especially about having to take algorithms and data structure tasks for positions that apparently wouldn't require that in real life. For a long time I was in the same category but now I think I see the point.
After my recent move to USA I had to quit my last job and, of course, the first thing I did after settling was to start looking for a new job. Actually I just lied a bit. First I had to wait 6 months for my employment authorization because apparently it takes this long when it comes to documents from the Immigration Service but eventually I start applying.
First step was to get in touch with staffing agencies and also with companies directly. Even if I had to deal with a whole range of recruiters from spammers and impolite people to very nice and helpful people who I'm glad I met. So that went OK. Next was the interviews.
Since most of my experience is in Front-End Development I went for positions requiring React, Typescript and web technologies and since I do this for a long time I was expecting the process to be smooth and to get an offer in a matter of weeks. Not so fast, though. Even from the first interviews I was surprised to see that they put an emphasis on algorithms and data structure knowledge and of course I failed gracefully many times since web development doesn't involve much of that usually.
My first reaction was of course frustration. Why in hell do I need to come up with whatever complex algorithm that I never never needed in my life to prove that I'm a good web developer.
First of all, most likely I would use a library, that's already well tested, to solve that specific problem and probably in a more efficient manner than writing everything my self. Secondly, in situations like this, you normally have days or even weeks to think about a particular solutions and not 15 or 30 minutes. Not to mention that some companies just throw a HackerRank link at you, and then it's just you, the timer and a task description that apparently makes sense but is actually very difficult.
All of these are valid arguments up to some point but let's put our self in the boots of the hiring company and see things from their perspective for a second.
I'm going to start by saying that white board interviews are not always a good idea. If you are hiring, for example, a junior developer or even mid-developer and you know that 99% of his work it will be working on fairly simple websites or maintain stuff then you will surely loose good candidates if you eliminate them on the criteria of knowing the x algorithm.
And now, let me tell why I came to the conclusion that this approach makes sense after all. If you are a large company developing complex products in a competitive market, then you want to hire the best developers that not only get the job done but also take things to the next level and innovate, that are versatile and confident. And this is obvious, higher salary and benefits translate to higher expectations and responsibility.
So let's get back to the previous argument, why does a Front-End Developer need to have a good understanding of data structures, runtime complexity and most popular algorithms? Short answer, or at least my conclusion is that without this knowledge in your bag, you probably write bad code. Bad code can mean a lot of things like hard to maintain, not optimal for the task, slow runtime or even complete failure and for many companies this is not acceptable.
But then the real question is, do white board interviews really reveal the knowledge and experience of the person in front of the recruiter? And the answers is of course, yes, given that the interview is done properly with appropriate requirements, time and resources. What the interviewer is actually looking for is not if you know a certain algorithm by heart but if your mind is trained enough to ask the right questions, find different approaches and make the right decisions given the information you have. Commonly, the interviewer will give you hints to help you and he will guide you in a way to explore your algorithmic thinking. In the end, the purpose is find a reasonable solution that would solve the problem in the given time. If you do that, you might pass without even writing a line of code (or pseudocode). That's why interviews like this are done on a white board or Google Docs. The code syntax doesn't even matter here.
I think companies are right to have this kind of interviews but it's their responsibility to do it properly and to make it clear to the developer what are the requirements and what are the expectations. It's a way to understand how a programmer thinks beyond the daily challenges that are more like a routine. So, even if you are applying for a new job or not, if you want to grow and be better at programming, make a habit of learning new data structures and algorithms and practice them. You will be surprised to see that with time, your mind will be sharper and will come up with better and faster solutions for tasks you are working on.