Does HackerRank work, does it suck? How do you know it’s not YOU who sucks Chad?

Hey! That’s a valid question! Let me try to explain my thoughts!


We should always respect an established system..unless..

You would be hard pressed to find such a negative statement from me about any system that I am struggling with.  I tend to feel like most established systems are there for a reason. In my experience, an established system has been worked on, and vetted by people who are likely smarter than I am. Ideally someone has ideally been tasked with designing the system, they’ve worked through initial bugs, and have accepted, and reacted to valid feedback long before I dip my toe in.

To me it is generally foolish and a little self serving, to discredit things that are vexing me “because they are stupid” given all of that.

This mentality is one of the things that I think really helps me to understand where other people are coming from.

That being said..

I think HackerRank sucks. Now let me clarify this statement a little. HackerRank doesn’t just suck… it sucks BAD.

If you have never used HackerRank let me show you one of their “easy” problems and then ill try to break down why I think they fail atcommunicating in a way that a senior or mid level developer can easily understand.


An example of HackerRank mumbo jumbo.

Here is a one of the questions from the easy section of HackerRanks poblems:

HackerRank Problem

I am splitting this up  into two pieces for clarity.

A left rotation operation on an array shifts each of the array’s elements 1 unit to the left.

For example, if 2 left rotations are performed on array [1,2,3,4,5], then the array would become [3,4,5,1,2].


Given an array a of n integers and a number, d perform d left rotations on the array.

Return the updated array to be printed as a single line of space-separated integers.

My translation

In the real world I would say (if describing this problem to a developer)
OK we have a system that is going to return a series of numbers

There is another process that does <something>. This results in all of the numbers shifting to the left ,each time that this process occurs.

So if <something>  happens 2 times then our collection will now look like this :

You see, each of the elements stay in our collection but are moving left. When one number reaches the first position, on the next rotation it will move to the end of the array.

HackerRank Problem part 2

Given an array a of n integers and a number, d perform d left rotations on the array.

Return the updated array to be printed as a single line of space-separated integers.

The second part of this problem is to me just incomprehensible.. I have to read it over 4 or 5 times because they are using such poorly named variables and I’m sure if I noodled on this a little longer I could root out a couple other details. But that being said. here is how I would say the same thing to another developer if I was asking them to complete this task. 

My Translation

In the real world I would say (if describing this problem to a developer)

So the numbers we have to work on will be stored in an **int array**, and we don’t always know how many **elements ** there will be in our array.

We will need to write some code that can accept an **int **. This value will tell us how many rotations to perform on our array.

Our function will then shift the values in the array one time to the left for each rotation. (Numbers that reach the first position of the array will be moved to the end of the array)



So who’s right?

The way that HackerRank approaches these problems is unlike anything I have encountered in a work environment as a software engineer.
To me my definition is just so much more easy to understand. Is that the point?

Are they giving us a code test or are they testing if we can do mental back flips? (to understand their poor descriptions)
Is my inability to easily understand their descriptions a fault of my own or do they read like a different language to other developers?


These are not normal requirements that you would be given in an engineering job.

Some of the main issues in using their platform, are rooted in that they are asking me to provide a specific solution.  They are even providing the names of variables , defining the functions and returns, and starting with the request at a technical level.

Isn’t this opposite of what happens in a real working environment? In my experience I get high level requirements and then it is up to me to design a solution. Before even starting any coding I typically write a design, then tackle each technical piece by perusing the internet to see what other people are doing. Then I write the code test and refactor. None of the HackerRank steps line up with my experience as a software engineer.

Another big issue that I have with these tests, is that they are time based. I understand that they are doing this to prevent cheating, but this methodology is again at odds with what makes a good software engineer. A good software engineer spends extra time designing and working through how to code something before actually coding. I think I could get good at solving these problems. But wouldn’t that time be better spent learning new concepts rather that doing test prep?

You can turn this around on me and say “well this is the same process you would go through if you wanted to get a certification.. the difference is that with a certification I am awarded a tangible reward (the certification) if I do the work. I am not sure that mastering these tests gives me anything but a (fleeting) better chance to pass a test. To get even more controversial , when an employer puts stock in these tests, what does it say about them?


What are your thoughts on HackerRank? Did I miss the mark?


Follow me on Social Media!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.