Many people spend countless hours trying to solve coding questions online and are frustrated of not being able to build a solution from scratch…
This happens because they don’t know what is the right way to solve coding challenges in order to develop their thinking process and become autonomous problem solvers.
The truth is when you start this journey, you won’t be able to solve many problems asked in interviews all by yourself, without watching a tutorial or at least needing some hints.
So it becomes super tempting to adjust your strategy to solving as many questions a day as you can in order to touch on all the topics and techniques needed.
And you end up solving dozens of questions a day on autopilot mode: reading the question, thinking for 1-2 minutes and then watching another tutorial or copying the code that you found somewhere on the internet only to feel good and productive at the end of the day.
Many of our students have been doing this when we first met them and I don’t blame them. I also fell in this trap when I first started in 2004. But you can learn from our mistakes and understand that this strategy won’t make you a better problem solver.
It’s like watching a basketball player throwing hoops and taking notes without ever touching the ball yourself. Is all that theory useful without putting it to practice?
Reading questions and immediately going through the whole explanation is a sure way of wasting your time and energy.
In the worst case, it will make you ultimately give up pursuing your dream job, frustrated that you can never solve a question from scratch.
In the best case, you will end up memorising some solutions and hoping you’ll receive one of those problems on your interview. But even in this case, you won’t pass. Here’s why:
Interviewers choose hard problems on purpose. They care more about your ability to cleverly poke the problem from a few different angles than your ability to stumble into the correct answer.
Seriously. If you don’t get stuck and just breeze through the problem, your interviewer’s evaluation might just say “Didn’t get a good read on the candidate’s problem-solving process—maybe they’d already seen this interview question before?”
Each problem’s solution consists of multiple stages (“aha” moments) which are built on top of each other. It’s like a game where you have to reach several checkpoints until you get to fight the final boss and finish the mission.
Nobody reads a problem and immediately comes up with the optimal solution on the spot. They first have an idea, then start building on top of it until they get another one, and continuing this process until they come up with the full solution. And guess what? This is also what an interviewer wants to see you do when solving a coding question.
Problem solving is all about figuring out what needs to be done to get to the next checkpoint. It’s all about coming up with original ideas that bring you closer to the final solution.
Once I started working on this skill instead of caring how many problems I solved a day, I noticed how my brain started to connect the dots, started to notice patterns and I finally felt the satisfaction of solving problems on my own from scratch.
There are thousands of coding questions out there, but only less than 20 topics and techniques used to solve them. So for each problem that you solve, there are dozens, if not hundreds more problems which involve the same idea.
It’s all a matter of choice:
Do you choose to solve 2-3 essential problems on each topic, in the right way, such that your progress is efficient and you are ready to solve any similar question in an interview?
Or do you want to spend 10x more time memorising every question available on each topic just to fail when you get a similar question in the interview, because it has a small particularity which you weren’t ready for?
Value your time and work smarter, not harder.
Now, a question for you.
How do you approach problem solving?
What’s the process of you solving a coding question?
Leave your stories in the comments!
I can’t wait to read them!