“Codility, LeetCode and HackerRank are popular platforms for practicing and honing coding skills, particularly for competitive programming and technical interviews. These platforms offer a variety of coding challenges and problems across different difficulty levels and programming languages.” [ChatGPT]
If you are wondering why companies still use such platforms in their tech interview process and what the best alternative is, as well as how to put an end to this ineffective trend in hiring, read along.
Note: If you have hundreds of candidates, then this article is definitely not for you. I have no experience with that.
Algorithmic Learning
I can say that during my university studies, I never needed to program the same algorithms over and over again, not even in deeper stages of my studies. During the first year, we needed to program them for labs, tests and exams. Some algorithms were mandatory to code, while others were mandatory to understand. After passing those tests and exams, we were expected to understand them and refer to them. In later labs and tests, it was okay to use a library which was already optimized as long as we understood what we were doing. If someone wanted to put extra effort into algorithms, they could do so in their free time.
If a student was more interested in the topic, they had the option to attend competitive programming. For such a use case, platforms like Codility, LeetCode and Hackerrank are great places to learn and challenge yourself.
Fundamentals are shifting
While I understand that strong understanding of fundamentals provides stability and support for higher-level learning and expertise, we must recognize that the fundamentals vary for each position.
For example, for a data engineer, fundamental knowledge includes SQL queries and data cleansing techniques; for a backend engineer, it is REST API and ORMs; for a data scientist, it is statistical analysis and linear algebra; and finally, for a frontend developer it is HTML, CSS, frontend frameworks and responsive design.
So why are companies asking candidates for all these positions the same questions before even bothering speaking to them?
When hiring accountants, we trust their education and experience without asking them to compute the volume of a pot. Even if we did, would they be able to solve it? Most likely not. And if they did, what would that tell us about their accounting skills? Nothing.
Are we asking marine biologists to compute the amount of fuel they need when collecting samples or do they have a built-in feature in their boat that shows the remaining fuel?
So why do frontend developers need to know how to compute the area of intersecting circles on the x-axis? Why do backend developers need to know combinatorics for a position that focuses on insurance and building REST APIs?
The answer is that in other fields, there was a natural progression towards asking relevant and appropriate interview questions that align with the profession. In the tech industry, interviews were designed primarily to maximize profit without caring about the candidate.
Drawbacks of Using Online Coding Platforms in the Interview Process
Time Wasted
Software engineers do not work on coding riddles when they are working. They work on actual, real life problems.
Implementing coding riddles into the hiring process creates an unnatural environment in which everyone loses. The candidate loses the most. The candidate must shift their mindset and invest time in preparing to solve these coding riddles, outside of work. Each coding riddle requires time to solve, and time varies based on difficulty level. Then the candidate spends time in the actual interview process.
It is a good thing to repeat the basics and completing an exercise surely feels good when, but it is definitely a waste of time. And I would rather spend that time focusing on actual problems from the real world. Or just staring at the wall.
Uni-dimensional View of Individuals
Companies that can afford to do human evaluation and refuse to do so are like horses wearing winkers. Perhaps they do this because they want to copy large and fancy tech companies like FAANG. I see such companies as horses with covered eyes, focusing only on the path ahead, avoiding distraction. Does wearing blinkers save time and money? For companies like FAANG it certainly does. Everyone else is just waving their tails. However, FAANG also misses out on the candidates whose features they intentionally refuse to see. People will still apply to their open positions, regardless of how they treat candidates or employees. It looks good on their CVs.
You see, people are complex and they have many dimensions that make them valuable employees. The goal is to optimize performance and decision-making by channeling attention and resources toward the most important aspects. Besides coding, developers do requirement analysis, research, testing, code review, writing documentation, bottleneck identification, automation, etc. and most importantly, they collaboration.
Focusing on a single dimension and promoting it to become a potential deal-breaker just feels wrong.
Generated Interview Stress
Have you ever felt anxious and nervous during a job interview? Some of it is normal because nobody likes to be evaluated, and we all want to perform well. However, for some candidates, this anxiety can escalate to physical symptoms. This is often just temporary and happens during interview, because they perceive the situation as high-stakes, triggering their body’s fight-or-flight response. This usually results with a blank mind, they are unable to focus, unable to concentrate. When you put these people in the work environment, they perform well, even under pressure. This is not the same as work stress. Work stress is the result of job insecurity, lack of control over one’s work, unclear expectations and tight deadlines.
Interview stress often occurs during coding interviews, especially when they involve live coding challenges with an observer present. Associating interview stress with work stress is incorrect. Nowadays, we are more educated, but if a false association occurs, it often negatively impacts the outcome of the interview.
Minimal Real-World Relevance
The platforms mentioned above hardly have real-life applications. In most companies you won’t need to compute the area of intersecting circles on the x axis. If you cannot come up with a solution right away, it does not mean that you are a bad developer.
Having been in this industry for 8 years, I’ve been involved in various tasks such as building REST APIs, writing efficient queries, creating ETL pipelines, integrating third-party services into our product, planning marketing campaigns and viral networking features, deploying our backend to AWS, evaluating component switches to save money temporarily, deploying hybrid and native mobile apps to Google Play and the App Store, developing premium features and monetization strategies, integrating with Google Ads and Admob, troubleshooting, evaluating ORMs, working on an NLP project to approve or flag reviews, and dealing with big data, among other tasks.
Throughout these 8 years, I have never needed to find the area of intersecting circles on the x-axis in my daily work. If you were to ask me how to do it, I would start to draw, but I am not sure if I could code it for you. The truth is, I don’t encounter intersecting circles often, and I don’t find it enjoyable or beneficial to solve them. It doesn’t contribute to making money, and it would seem out of place on my CV.
Contributing to a Colder Environment
We are so connected, yet people remain very distant, making today’s world rather cold. Companies are setting boundaries and widening the gap between individuals in the name of saving time and money. Companies benefit from this trend, as they control the entire hiring process. They pay the recruiter if they hire someone and only a small fee to one of the platforms. Meanwhile, candidates often receive nothing in return. Even if they invest days, weeks, or even a month, along with passing up other interesting opportunities, waiting for a potential “yes.” I’m not suggesting that candidates are saints and never back out of a commitment last-minute. What I’m highlighting is the significant level of unfairness towards the majority of candidates who never receive an answer and wonder what they did wrong.
Manipulation
The tech industry is undergoing rapid change. One day, there’s a rush towards tech jobs, followed by sudden layoffs, and then the AI craze. Some are desperate for a new position to transition to a better environment, while others simply want to secure employment. Nearly every second company now requires candidates to solve coding riddles, or they won’t even “waste their precious time” considering them.
Some have gone as far as claiming that successful coding challenges are the benchmark for distinguishing between good and bad candidates. This assertion is manipulative because it coerces candidates into aligning themselves with the “bad candidates”, and no one wants to be labeled as such.
We all aspire to be seen as good candidates, so we’re easily manipulated into using these platforms and accept that this is how the market operates, contributing further to the problem.
To me, this is a trend similar to the thin eyebrows fashion of the 90s: every woman wanted to thin their eyebrows as much as possible and today we all hope that this hideous trend will remain a bad memory.
Limited Lifetime
Such platforms exist to consume your time and your company’s resources.
As long as there is a market for them, they will continue to exist. However, their lifetime might be limited. Many solutions to these riddles are available online, and in case they are not, ChatGPT, Gemini or a new AI tool will spit out an answer in a few seconds.
These platforms might help individuals build and maintain some level of knowledge about algorithms, problem-solving skills and boost confidence, but companies just might need to rethink their approach. Hiring managers should ask themselves if copying answers evaluates anything.
To me, it seems that cheating is too easy on these platforms, causing them to fail in the one dimension they are supposed to evaluate. This makes them a waste of money.
So what is the solution for candidates?
When I see a coding riddle, it is a red flag for me. It suggests that this is a company where someone will be breathing down my neck, blocking my PR because I used spread operator they are afraid to use. It is likely that my suggestions and recommendations won’t mean too much, they have everything figured out already. It is a company whose tech team does not have a single person to meet me on a technical interview. If I don’t care, I proceed with the tech riddle. Otherwise, I will answer the recruiter:
“Thank you for considering me, but I’ve decided to step back from the tech interview due to concerns about the coding challenge’s relevance to real-life scenarios, where I feel unable to showcase my skill set effectively.”
If many of us give a similar feedback, we might just make interview processes more tailored to actual positions.
So what is the solution for (tech) recruiters?
If you cannot allocate your people to do your tech recruitment, partner with another company who will do it for you.
CV Check
Assigning a technical person who is actively working on the team to review CVs can be highly beneficial. After spending considerable time in the industry, I’ve developed an eye for certain indicators in a CV within just a few minutes of review. I believe other engineers can do the same. By involving a technical person in the early stages of the review process, they can provide talent acquisition some valuable insights into what the company is looking for. TA can communicate these criteria more effectively to new candidates. This makes the evaluation process more aligned with the company’s needs and improves the quality of candidate selection.
Peacock Stage
In my opinion, truly understanding a candidate’s skills, identifying inconsistencies, and listening to their descriptions of previous roles and problem-solving approaches provide the best insight into their character. I refer to this as the “peacock stage”, where candidates have the opportunity to display and really shake those feathers to make the best impression.
Technical discussions
You might want to present candidates with a problem that you or your team encountered in the past. I’ve found system design interviews to be highly beneficial as they extract tons of information about the person. This requires extra preparation from your side because the task depends on the position.
Start at a high level, discussing a server-client model, and then drill down into the specific components relevant to your business. For example, if your product is a web shop, tell them, “Let’s build a web shop together.” and let them name components in the system and explain how they work on a high level. Allow them to extend the model as they see fit, encouraging note-taking or drawing while they talk through their ideas.
Present them with a problem, like “We need to ensure fast loading times and visibility of all buttons on the frontend. What would you recommend we do first and why?” Guide their solution as you see fit. If they make a decision, ask them to explain their reasons behind it. Apply more advanced changes to see how they engage with new information, for example, “One component unexpectedly stopped working. What do we do now?”. This approach provides insight into their teamwork, communication skills, flexibility, experience, and reasoning abilities.
Take-home assignment
If you still not convinced that the candidate has some skills, even after seeing their education and experience, give them a take-home assignment that does not require more than 4 hours of work. Allow 7 days to complete it. Candidates may have other commitments such as work, family, or health issues that could affect their ability to complete the assignment.
Luckily, things are slowly changing
The interview process seem to be evolving, often lacking irrelevant coding challenges. As roles in the IT industry become more specialized, the interview process has also started to better align with the specific requirements of each role and technology stack.
In the past, we distinguished between frontend, backend and full-stack developers, today there’s a recognition of the various specialized roles that exist within each domain, such as DevOps engineers, data scientists, cybersecurity specialists, and more.
It only makes sense that new specializations will pop up and new generations will refuse solving irrelevant tests they do not have any benefit from, apart from being hired.