Coding interview questions are bit of an odd case. A lot of basic coding skills that are tested in the coding challenge part of the interview – things like binary search trees, reversing strings, adding two array or finding palindromes etc – don’t end up being used day to day for the most part. But that doesn’t mean that these skills have no value, at the very least they help you get the job, but honestly they have a great deal of impact on your career growth. Let me explain.
Why coding interview questions have little use in the real world
Why does merging two sorted lists has little value in the real world? There are three main reasons:
- First, a lot of library code already exists for this kind of basic stuff. There is no point in trying to reinvent them in your own code and add the burden of testing and maintaining that code.
- Second, in the real world a lot of complex systems are built in a way that software engineers end up spending more time with understanding those systems and libraries to properly use them in the environment as compared to implementing binary search trees or sorting algorithms.
- Third, a lot of those problems are fictitious and are primarily designed to judge your analytical or problem solving skills.
Is it worth trying to improve basic programming skills
The answer is an unequivocal YES. Remember that no matter how much experience you have as a software engineer, no one is simply going to take your word for it and hand you a job because you have 10 years of experience. You are more or less required to prove your programming and analytical strength on a whiteboard or online shared coding program until another better system or alternative method of judgement is developed.
I have conducted a ton of interviews myself and let me assure you there was not a single instance where the candidate performed poorly on the coding challenge and was later hired.
My advice is to get used to this and maximize your chances by being good at solving these problems quickly and effeciently.
Improving your raw coding skills actually helps you become better at your job and life
Based on my experience, trying to improve on basic programming skills actually does contribute to your skill and talent as a software engineer, mainly because you grapple with a lot of core concepts, that give you the behind the scenes look at how things work, giving you the ability to make the right choice every time, as well as quickly figuring out why things could be breaking. Having just the superficial knowledge of the library or framework you are using can bite you hard when things are not working as expected or when you need to change things under the hood.
Improving your raw coding skills also help with building the brain muscle for improving your analytical as well problem solving skills that have huge payoffs in your career and life.
How to Improve your raw coding skills
So assuming you are onboard with working to improve your raw coding skills, how does one go about doing just that. Here are some tips:
Treat it like a game
Think of the these interview questions as puzzles or games you can solve. There are actually levels and minions and bosses, with the interviewer being the final boss (joking). Start with easy challenges and don’t feel bad about failing a question or not getting the job. The goal is to keep practicing and trust me you will get better. If you know the basic programming, algorithms and data structures then its mostly just practice and has little to do with someone’s IQ level.
Build habits around solving these coding interview questions everyday
Building habits on solving these programming challenges every single day is a great way to get good. Sign up for Leet Code or Daily Coding Challenge and make sure to solve and commit a solution every day. Take 30 minutes in the morning or after dinner and solve one problem every day. No stopping.
In his best seller book “The Power of Habit“, award winning author Charles Duhigg explains how building habits is far more useful that trying to build the willpower to do so. It’s just like going to gym, reading books, eating healthy or any other positive change that you would like introduce in your life – habits almost always triumph over sheer will power.
Commit yourself to making a single commit everyday
Create a GitHub account and make a habit of making a daily commit. Your GitHub profile needs to look something like this after a while:
Practice on a whiteboard or paper
Practice writing code on a whiteboard. It’s not how most of us actually write code day to day and it will take some time before you get good at it. Another challenge is to debug and improve the code without our usual tools and frameworks. It’s not impossible, it just takes some time and practice.
Once you’ve fully embraced this you don’t even need to think about it. You routine will take over and you’ll be able to ace any programing interview or real work challenge without much effort.
Some folks suggest practicing with a friend but it’s hard to get your friend to practice with you consistently, plus they are not going to be there in the interview anyway. Make the whiteboard your friend and it wont fail you.
I also recommend picking up some of the popular programming challenge books like Cracking the Coding Interview or Programming Interview Exposed if you like learning more like that. Alternatively sites like LeetCode, Hacker Rank or Career Cup have plenty of coding challenges for you to practice.
You should also consider improving your communication skills. Read my post on communication skills to get started. If you have any other tips or comments you can leave them for others in Effective Programmer Facebook Page.