There is no question about it – HackerRank is the de-facto place where you go if you want to practice algorithmic skills, preparing to whiteboard interview (or of course, online coding interview) or you are the person who is interviewing candidates.
In this article, I have no intent to create a detailed review of all of the features, but to write down my feelings about HackerRank as a practicing and interviewing platform.
HackerRank – Introduction
Several years ago, if I wanted to practice algorithms, the market was boring. There were a couple of books like Introduction to Algorithms for introduction and Programming Challenges to get into the deep and online competitive platforms like TopCoder and SPOJ.
There were several other, not so popular possibilities but as I remember, they were the major ones.
They were all about competitive programming. They were – ant they all great resources if you want to compete with others. But on the other hand, if you are just preparing for a coding interview, they can be too much.
And there were when some new challengers came into the picture. I loved to read the book ‘Cracking the Coding Interview‘ by Gayle Laakman McDower but this post is not about it. But it is still worth to read it.
And also, there are several online platforms to help people who want to sharpen their coding skills and HackerRank is the most popular from all of them.
Let’s look into some details about it.
Categorization, problem description, editor
First of all, it is easy to choose the topic that we want to learn. Tasks are categorized by easy to understand topics and you can also filter like difficulty.
The structure of the problem description is well-known from competitive programming: a brief introduction, some trivial examples, and constraints of the input and the output.
You can choose your language. There is no question, the most popular languages are available.
And there is a code editor with syntax highlighting different possible layouts and sometimes with IntelliSense (I will go back to this topic later, in The bad section).
In theory, you can also test your algorithms by test inputs created by you.
Get help: Discussions
If you feel yourself get stuck, you can walk 30 minutes or you can check the Discussions panel. Warning: if you don’t want to know the exact solution, never click on the Discussion tab. Moderators are continuously deleting these posts but almost always you get the exact solution there.
As an interviewer, you can see ever keystrokes and you will get information when the candidate left the focus of the window (e.g. checked Google to get some help).
If you want to hire new talent, HackerRank can be a proper platform to filter out the candidates and do not waste too much of your time with personal interviews.
There is no light without dark and there are no pros without cons. Let’s see some of the annoying features.
IntelliSense is optional. It depends on the settings set by the author of the question. So there is no constant behavior about this. And also, sometimes buggy. I have experienced it several times when I turned IntelliSense on and still didn’t get anything.
I have been a professional developer for about 10 years now. At most of my coding time, I deal with C# code and I still don’t remember how I can get the length of the array in C#.
- is it a property or a method?
- size or length?
Sorry, after 10 years, I cannot answer this and the reason is simple: I am, as a man, a lazy bastard who get used to using IntelliSense and rather thinking about the algorithm of the solution, not technical details like what is the name of the property that gives me the size of an array.
Some problems expect console output some problems want to get back just an array or a single number. Personally, I would prefer to have consistency in that. And also I think it is easier to unit test a problem when the method returns with the result, not writing it into the output.
At the first experience, I just created a project on my computer, preparing the unit tests and solved them on my machine. When I have finished, copy-pasted my solution and moved to the next exercise.
Unfortunately, if I am the candidate, I cannot do that because the platform tracks my keystrokes. And I think most of the users are using this platform to get hired so they must practice the exact same flow that they will face during their interview. So yes, you can work on your computer but it doesn’t worth because you will practice different thing than you will do at your coding interview.
As I wrote earlier, the IntelliSense experience can be bad. You don’t know if you will have IntelliSense or not. So, expecting the worst case, you should train yourself without it.
How you will explain to the hiring manager that you haven’t cheated but really had no idea about the size of the array?
Your algorithm is almost perfect. But there are several failing test cases. And you have to pay a price if you want to analyze the failing case.
Hackos are the points you get for the complete solution. You cannot get the maximum points if you want to know what is the input that you haven’t prepared for.
For me, it is a grey zone. It can be good because forces me to think about edge cases. But also, it can be bad. In real life, usually, you get the info about the error and later figure out the solution by analyzing the logs not guessing about the possible wrong data.
I am not sure if a start-up can afford it. If you want to hire somebody and it takes 3 months to get the proper person, it is a chance that you will have about 20 interviews and you pay about 1000 dollars.
It is worth if you found the perfect team member, but I would consider paying that price to check coding skills.
HackerRank – Overall experience
The overall experience is good. Good – but not too hard – questions, great training for your brain.
You will face challenging issues if you want to get hired. But you will get a great experience if you want to hire new talent.