I know our education system is broken. Learning is non-existent in a system where we’re just looking for the best grades. Is my goal to understand and absorb material or just get the highest grades? They are not necessarily dependent on each other. Focus on the slides, understand the exam, and game the system is one way at winning in our modern education system.
But is it really merit if you know how to win?
The way we approach technical interviews for big tech companies (I’m looking at you Google, Facebook and Amazon) aren’t much different than the flaws deeply rooted with our education system.
If you can Crack the Coding Interview, are we really rewarding learning. Are we truly meausuring the capacity to absorb information?
With that, here’s an open letter about the things I don’t like about programming interviews.
We aren’t solving real problems
- I rarely ever find myself building a linked-list outside of my data structures class or HackerRank. Do I know how to do it? Yes. Will I use this skill? No.
I wish we could rather talk about the real problems your company faces when firing off multiple requests or maintaing concurreny? Oh wait, we can’t, because I can’t get past these 200 test cases
Code Reuse is encouraged at work, but not on interviews or exams. I don’t get it. Why aren’t these exams open-note? I wish these problems were scoped large enough so that they could follow how we approach problems and go about *finidng solutions** instead of the solutions themselves. That’s the hard part - piecing together disparate sources of information.
Implementation is stressful. I can tell you all about the different types of sorts and runtimes - but when it comes to implement them, it becomes much harder. I didn’t come up with insertion sort. I just know that it works and when to use it over the other types of sorts. I hope in your work environment - we don’t code in black boxes.
Your tech stack is important to you. In fact, it is a core part of the business you want to solve. However, I’m never tested on my expertise of a tech stack as a programmer? I get it, I’m entry level - so I shouldn’t be specialized in anything. But, the longer I spend learning your new tech stack, the longer it takes me to make an impact - but that’s more cost to you, not me. I guess if you’re not a startup, cost doesn’t mean much.
I usually spend a good amount of time understanding the problem space and wrapping my head around something. In fact, I’m not one to quickly jump at answers without thinking through what we have to. But the whole, take 20 minutes and explain to me what you’re thinking can be overwheleming. Cooding interview does not offer an equal opportunity for everyone to succeed.
Code design should be valued higher. It’s ok to write messy code, but core architecural designs can have technical debt accumulations going forward. Interviews should recognize that and measure how we choose to architect our code. They should ask us to group a set of functions and design an abstract class for different problem sest.
I must be a Terrible Coder
After numerous attempts at this process it’s clear that I’m not very good at this. So does that mean I’m a bad hire? That’s for you to decide.
Every job offer I have recieved so far hasn’t revolved around code. In fact, they were more about the genuine conversations I have had with my interviewers and learning about their unique problem spaces. Those were my favorite kinds of interviews.
Sometimes I don’t understand why I build all these side projects - it’s like they have no meaningful value if you can’t get a job out of it. But … I think the real reason, we don’t quit, is because it comes down to solving problems we care about. We use code as a means to solving these unique real world problems.
I’m still going to pracice on LeetCode and solve dumb online problems - but I don’t enjoy it. I definelty judge a company by the types of questions they ask. Also, I’m not sure that’s a good thing if an interview can be “cracked”.