- Llambduh's Newsletter
- Posts
- Why do so many new Computer Science graduates fail coding interviews?
Why do so many new Computer Science graduates fail coding interviews?
An internal monologue of a Junior developer answering questions on Quora in 2017
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:
A developer with enough practice or experience to use these concepts in the real world.
Someone who has memorized enough basic algorithms and data structures and practiced writing them on a whiteboard in enough timed sessions to correctly answer their question.
If you get it wrong it shows you either:
You lack a variety of experience to solve the problem their business needs you to solve.
You get nervous coding in front of others.
You lack experience coding on a whiteboard.
You rely on your IDE or the internet to help you find libraries and fix your syntax.
You didn’t have the specific knowledge or maybe a potential weakness in the one or two algorithms or data structures you needed to solve the problem in the time frame you were given.
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:
Initial phone screen with the candidate
First round easy code kata to evaluate basic skills
Harder coding kata (depending on experience and role)
Bring the candidate on site for a code review and conversation
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?
If you have a Software Engineering interview coming up you considering giving our sponsor ByteByteGo a try today! I’ve personally been subscribed to the ByteByteGo YouTube channel and Newsletter for years.
ByteByteGo stands out for its well-organized structure, offering a combination of easy-to-understand explanations, interactive exercises, and in-depth video tutorials. It covers a wide range of topics, from basic data structures to more advanced algorithmic concepts, making it suitable for both beginners and experienced programmers. With its focus on real-world applications, ByteByteGo not only helps users prepare for technical interviews but also enhances their ability to approach complex coding challenges with confidence.
Use our link and Signup for ByteByteGo today!