Why are most people who just got their BS in Computer Science unable to pass coding interviews?
The simple answer is because they have never done it before.
I have never met a developer who writes syntactically correct code on a whiteboard in marker, at work, to solve an actual problem. I have seen pseudo code where a Senior was describing a concept to a Junior Dev or an Intern but, never something like traversing a binary tree or anything of that nature.
A whiteboard interview tells the interviewer you have practiced and/or solved enough problems of that type to recall how to do them off the top of your head. This can mean a few things.
———————————————————————————————————
If you get it correct it shows you either:
If you get it wrong it shows you either:
———————————————————————————————————
The problems are varied with whiteboard interviewing but, you can already see from what you gain from the interview is a small window of information about a very specific part of just one of the many skill sets a developer needs.
Let’s HYPOTHETICALLY say that a Developer’s skills are mixed 50/50 between technical and professional. Soft skills are things like your professionalism, communication skills, knowledge of the Software Development Life Cycle, your knowledge of SCRUM, ability to learn, teach, lead, and learn, your time and stress management skills to list a few.
领英推荐
Now your technical skills are also fairly varied depending on the role and your seniority level. So let’s go with a Full Stack Web Developer for this example. There is quite a list from front to back end and everything in between but bare minimum your gonna need a firm grasp of HTML, CSS, JavaScript, probably a server-side language like PHP, C#, Python, Java, etc, familiarity with Databases and SQL, knowledge of how servers like Apache, Nginx, TomCat, etc work, knowledge of different hosting options like AWS, Azure, etc. familiarity with whatever JS framework(s) your company is using, Version Control through Git or another VC, a familiarity with at least basic networking and system concepts, a firm understanding of object-oriented design patterns, experience in debugging concepts, experience in code refactoring, knowledgeable about different testing methodologies and experience in implementing them AND KNOWING ALGORITHMS AND DATA STRUCTURES.
Although my list isn’t comprehensive and you can argue about what belongs on there or not if you count off concepts I listed there are 10 soft skills and 14 technical ones. Knowledge of Algorithms and Data Structures are one of those subjects, so it makes up about 4% of what you need to know to be a Full Stack Developer.
Now, this IS NOT a statement saying how important or unimportant that subject is, I’m just trying to make the point that there are a lot of subjects and the whiteboard coding interview only test for one, and it does so IN AN INCOMPLETE WAY! You can not get an accurate read on a developers knowledge of Algorithms and Data Structures by asking two or three questions. You have tested a dev’s knowledge to work without access to a search engine or an IDE, tools he/she would have access to in a real-world situation.
So many people wanna blame the schools, or blame the students when maybe the process is broken? Sure, memorization skills and a strong knowledge of Algorithms and Data Structures are great things to have but, do they always signal a good developer? Is the reason about 50% of Google SE’s fail their first attempt at getting into Google because they aren’t smart enough or the fact they didn’t specifically prep for the event of having to write code on a whiteboard?
Why are more people in the industry not using coding katas ? I know there is some BS about not having people work for free but, what is a coding interview if not that? Here’s my suggested interview flow:
———————————————————————————————————
———————————————————————————————————
This will tell you so much more about your candidate. Were they able to set up the proper environment to code in? How to do they comment, how do they test, how do they design a solution, how did they deploy the solution, how optimized is the solution, was their code cohesive, could it be abstracted more, etc? You can dig deep and talk to your potential new developer/coworker about what they were thinking, why did they make the choices they did, what they wish they could’ve done with more time, what they would refactor, you can see how they respond to critical feedback, etc.
Now doesn’t that sound like a more comprehensive evaluation than you asking a candidate how to invert a binary tree off the top of their head on a white board and waiting for them to do it on the clock?
Director Technical Program Manager | 350M P&L High-Performing Teams | AI | | Strategy, Technology & Operations | BI | Digital Transformation ?? | Top leader under 40 ??♀? | ERG Founder | I Lead w/ #Authenticity ??
1 个月John Sprunger - I really really like this take :)
Unstoppable Learner, Manager, Resilient, Calm Under Pressure, Solution Goalie, ,U S Veteran,
2 个月Giggle on some parts. You also lay out points in truth and expectations. There us much that I do not know, however I accept that as being multi-directional. and willing to learn. Thank you for your article.
Associate Test Engineer at ZeniMax Online Studios
3 个月I soo appreciate the pic from the “D2F” seen in Silicon Valley ??. Love that show.
Frontend Staff Engineer at Experian
3 个月I'm a developer now who has nearly 20 years of experience. When I first graduated, it took me 3 years to find a job tangentally related to my field (automation tester). I worked that for another 3 years and was finally able to land a job that I wanted: Entry Level software engineer. I can answer the question of why they are unable to pass coding interviews: Because the interviewers don't actually test for the job. Most developers are not working in greenfield projects, they are working with existing software, and their job involves adding new features or fixing bugs. Describing the new features USUALLY start with: "like this other feature but..." And the bugs can involve spending hours analyzing and testing code and then making a 1 line change. My job isn't being able to do advanced rare things on the fly; it's knowing the codebase I work with. In either case, you aren't doing advanced trig, or (looks at comments) Balancing an inverted binary tree. Once I was interviewed for a job to maintain a POS system (point of sale, not the other thing), and the technical lead asked a bunch of Scientific Computing questions using Big O notation. I ended the interview, and told him he was hiring the wrong candidates.
.NET || Web and Mobile Developer
3 个月Great article John Sprunger , I like the part about doing code katas, I do a lot of those as they're smaller problems I can usually solve on a break. Ps. It was hard to take anything seriously because I know the show that image is taken from and I know exactly what he's describing in that scene. Lol