Tech's diversity problem is because of toxic LeetCode interviews!
- By forcing engineers to sharpen their leetcode skills, interviews discourage people interactions and promote sitting in caves
- Engineers who focus on cracking these puzzles tend to not care about people interactions, because that doesn't get them a job
- Having LeetCode interviews makes developers optimize their thinking for "puzzles"
- Real world Software Engineering problems involve interactions with other Engineers, Product Managers and other stake holders
- Write code that other Developers can understand, not the trickiest one liner to boost your ego
- Focus on energy and enthusiasm, skill set can be taught to anyone if they are hungry and curious
It is pretty common to see a lot of companies relying on Leetcode or puzzles to benchmark engineers. If you solve a question in X time with leanest code then you are in or else you are out. It is more for elimination than selection I guess. But this is setting a very bad trend and bad engineering culture. Engineers who do "real engineering" work are required to work with other Engineers not just computers. This involves the tricks of the trade of any traditional work environment. Treating people with respect, the language you use and helping others.
Having the smartest engineers in a company won't move it any faster or further. Having many helping and humble engineers will take the company to higher profits and will create a sustainable work culture.
The ridiculous thing about asking leetcode questions in interviews is everybody knows those questions. Yes, there are millions of them. But any developer who has seen the solution recently can crack it in 45 minutes, if unseen she/he stands no chance. All the big companies tend to focus on this. In fact many recruiters ask you to practice them before interviews. Engineers have their day jobs. They are busy architecting systems, fighting DDOS attacks, scaling servers and most importantly helping their teammates with their work. The interviews are optimized for leetcode questions and not actual projects. Engineers who leetcoded their way in the past two months are rewarded and the critical talent who cared about their work get left behind.
Most big companies fail not just because their technology lost touch with the market but because their senior leaders had ego problems to accept fault or change themselves on time.
Many startups are formed (many times by ex-employees) because there will be a simple tech problem in the large company which is prevented from getting solved by other Engineering Leaders' egos.
How did we get here?
Answer lies in how you hire your candidates. Or if you hired laterally then how did those candidates get hired. If the hiring at grass roots rewards optimizing myopic skill set then it bubbles up to the management some day. You reap what you sow. The candidates hired for parroting skill set rather than having empathy towards others' ends up creating complications out of nothing. I am sure many engineers agree with me who have been through office politics. There will be an easy fix through technology but owners of the legacy systems won't accept fault or create a misleading response to avoid being caught. There are many examples of employees getting out of enterprises and solving that problem. They end up selling those "solutions" back to the same companies for a lot of money.
What can we do about it?
Leaders need to carefully think about how filters are being applied at the bottom. I have seen many interviewers rejecting candidates because they couldn't answer some text book questions. It is almost a blasphemy if you can't remember something. Hiring is always for the long run. It is important that the hired employees make her/his teammates feel good and move forward together as a team. We need to see the energy, enthusiasm and integrity in the person. Stop looking for 1.0+2.0 = 3.0 answers and reject candidates because he said 3 and you know he missed the type casting! Those things won't matter. Ask the candidate about their passion and why they want this job. The energy, integrity and professionalism will be rewarding for the team and the company in the long term.
A Brief History of Inverting Binary Trees?
Legend has it the that "Invert this Binary Tree" type of questions were done by Stanford PhD's while they were hiring for Google. PhD's for whom I have a lot of respect, spend most of their times reading Research Papers and inventing things. Unfortunately, working with them is a pain in the ass. Right from my classes during my Master's Program to at work, I have heard from others and experienced first hand how difficult it is work with "them" :) . I have many colleagues who have had condescending responses like
"Oh you want to help?May be you could, if you were a PhD!".
I sometimes feel it is just a job security strategy. If you keep those interviews complex and unreachable to the "peasants", the PhD's can live in their intellectual golden castle and never fight it out in the job market. So all the candidates had to jump through those hoops of complex leetcode/Data Structure questions to please the lords to get in. And then this culture spread among the other tech companies. Google does it so it must be right!
What matters?
Nobody uses these complex Data Structures or solves these kind of problems on a daily basis. Except in some specialized places like when you are actually building a new kind of database etc. All the time we are plumbing/tinkering things by finding libraries, talking to people or browsing stack overflow. That requires a totally different skill set, now I can keep going on like a broken record! explaining why. When you look for these Non-PhD type of skills, you can move out of the privileged class of students and focus on everyone else. I am not saying a "diverse" candidate will be all kind, humble and honest. Also not all highly talented PhD's are difficult people to work with. I am saying what we are expecting out of candidates is creating an environment that promotes toxic behaviors. We can rectify this by focusing on being human, and sense of belonging. Solving something by keeping aside egos will help the company, it's shareholders and all the employees too. In some cases we might make the world a better place!
Contact for more information
1 年I like and agree with this article’s content but I’m less a fan of its title. A preferable title to me would be more like “Tech’s toxicity problem is fueled by LeetCode interviews”.
Software Engineer at Sainsbury's
2 年I agree to a certain point... communication skills are indeed important. But isn't reversing a binary tree a basic task for a computer science graduate? I assume someone with a university degree spent at least one year studying/solving that kind of problems. If you are hiring a developer, you expect him to know how to code trivial solutions on the go. I think any level 8 or 7kyu problem in codewars should be solved in less than 30min for anyone that claims to be a developer. I find it more concerning the amount of developers who can't.
The problem with LeetCode Interview approach these days is not interview approach, but how interviewers conduct interview. They take task from leetcode which they didn't solve itself and just check correct or not correct. The purpose is try to solve it together with candidate and interviewer and it is better if candidate don't know the task.
Android Developer at Limosys Software
4 年I agree with what you mean! Interviews should be strictly based on the task that an employee will be doing in daily basis. Not bunch of puzzles. However, I am not saying its completely useless! They should include it to check how much basic CS knowledge a candidate has e.g talk about BigO notation, talk about arrayList, LinkedList, Binary tree etc. Not puzzles from LeetCode! It's just not a good process.
Is this the year of the Linux Desktop? ??
5 年Depending on the meaning I'm onboard. For me it's a little bit, that sometimes you get the feeling someone isn't testing for something that will ever come up. That should infuriate you as it does me because you can never get that time back. At other times it's because the interview process seems to make the job seem less desirable. >?Nobody uses these complex Data Structures This however is a lie, and seems to trend towards ignorance. Using a data-structure and writing an implementation are separate things. Regarding unnecessary usage, I know many people that use flowery BS unnecessarily, all the time. They even complain that you won't roll in the mud with them. Meh. Cargo culting is everywhere, and those in the cult rarely recognize that they are in one. They get reassured they are not by the cult leaders and you'll just never save them. Work on coping mechanisms. I've also added a link to a harder problem than inverting binary tree with code visualized?https://www.dhirubhai.net/posts/lewiscowles_visualizing-tree-recursion-for-tree-insert-activity-6618093078005719040-Cf0Z I'd be most excited at interview if someone explored parallel solutions, alternative data structures that redistribute the work trading storage, time, cpu