Tips on approaching coding interview assignments
"Coding task is not an exam. It is an assessment of your ability to solve real-world problems with code"
After having created several coding interview tasks and seen hundreds if not thousands of task submissions from the candidates, I am noticing repeated mistakes carried out by the candidates which negatively impact their candidacy for good job opportunities. Here is my attempt to highlight them and give my two cents on approaching coding assignments. These are not universal laws or something of that sort. Just some tips to better approach the coding tasks.
Coding task is not the programming assessments that you are asked to take in the automated online platforms such as HackerRank or Codility. It is the offline coding assignment that you might encounter further down in the hiring pipeline
It is not an exam
Remember that the coding task is not an exam. You are being asked to solve a real-world problem faced by people, most likely the customers of the company that you are applying for or the company itself. So it is better to
- Ask the right questions about the requirements and use case
- Make your own logical assumptions and explicitly state them in your solution
This shows your interest and positive attitude toward the task at hand. At the same time, asking questions that are apparent will just create a negative impact on your application!
Draw relevance between the role and the task
No company that intends to hire top-notch candidates for the published role would give a task that is irrelevant to the role. So, it is your job to do a little bit of research on the company, role, their tech stack and think through this question - "why is this task relevant to the role that I am applying for?" If you conclude that there is no relevance, then there could be only two reasons -
- You did not understand the role or did not understand the requirements described in the task - maybe this is where you should be asking questions to the hiring team
- The company did not put enough effort into designing the task that is relevant to the role - maybe this is not the company that you want to work for after all.
No problem is trivial
I have seen candidates approaching the task very casually and stating that the task was very easy for them. To me, this is a sign that the candidate
- Doesn't think through and appreciate the usefulness of the task at hand
- Doesn't put his/her product thinking in the action and just considered the task as another coding assessment
I have also seen candidates underestimating the company's tech stack based on the task at hand. Well, technology is just a tool to solve problems. If you are not thinking on these grounds, you have much more to lose. So, keep this in mind - no problem is trivial and all technologies have their own merits and demerits.
Show empathy towards the reviewer
When you write a piece of code, it is always good practice to document what it does and how to use it. This is basic empathy that you should be showcasing as a programmer towards fellow teammates, maintainers, and yourself. So, here are a few things to keep in mind -
- Write comments explaining any complex logic that you might have used in solving the problem
- Give a few simple steps for the reviewer to run your code. A couple of good screenshots of the working solution don't hurt.
- More importantly, follow good coding guidelines. Meaningfully name the variables at the very least.
It is your character test as well
Note that a good reviewer of your code will also assess your character fit to the company aside from your technical expertise. This is your opportunity to showcase that
- You can be creative, think broad, and think out of the box
- You care about the user of your code
- You ask the right questions and extend thoughts and ideas and connect the dots
Simply put, let your code speak about your character!
Don't ignore bonus tasks
I have seen many companies include a bonus task as part of the coding assignment. I have also seen candidates just ignoring this part of the assignment just because they are not mandatory (some may be due to lack of time). Well, as I mentioned before, the coding task is not an exam. Attempting the bonus task is a good indication to the hiring team that you can go the extra mile to make things better than what is asked for. I personally admire this kind of attitude not just towards the coding task but day-to-day life in general.
Don't make a late submission
Some people have this habit of attending to tasks last minute. Estimate the time needed to put in your best attempt and ask for an extension if there are things happening in life. This is important as it is a real-world scenario and helps better plan work. Being occupied with the work or release deadline at the current employer is a perfectly valid reason to ask for an extension. So, do that instead of making a late submission and leaving a bad impression of your attitude.
Think practically aside from programmatically
Good companies will never ask very algorithmic questions in the coding assignments, they are for your programming assessments. At the end of the day, you will be building product features that address real-world problems. So, be practical when you approach the task
- Think about what could be practical implications of the task that you are asked to do
- If you are asked to productize your solution, what are the missing pieces that you think are necessary for it to be shipped into production
Of course, no sensible hiring team will expect you to address all these with the code. You can go a long way if you can just document these missing pieces and show the reviewer that you are well aware of these.
Author