Amani profile photo


Thoughts, realizations, accomplishments


Introducing HackerRank

Amani Kilumanga

2 minutes read

Recently, I’ve come to learn about a website called HackerRank. HackerRank provides programming challenges and contests, allowing users to practice programming or roughly gauge their skill level against other users. I’ve been doing a few challenges for a few evenings now, and would like to share my impressions, and eventually, walkthroughs of my growing collection of solutions.

My immediate impression was that it was a great resource for users out there who want to code something, but don’t necessarily have a good idea what, or, someone who wants to give themselves a test before jumping into a coding interview.

Another thing that caught my attention was the massive amount of programming languages available to do the challenges in. Not only were big languages (C, C++, Java, JavaScript, Python, PHP etc.) available and interpreted in the browser, with auto-completion, it even had support for older versions of languages and esoteric languages. So there is quite a lot you can do in the browser, without even setting up, or opening up your local IDE.

Next is something that first caught my eye after I wrote a few quick-and-dirty solutions for the more advanced challenges; you have to optimize a bit. That’s right, your code will be run against test cases with ridiculous, huge inputs, and if your code doesn’t run fast enough (basically if it takes 500 years to complete), you will fail. And while optimization might be overkill in The Real World TM (you could, and always should, specify reasonable constraints for your interfaces), the level of optimization required is generally very reasonable, and seeing as the challenges aren’t real world projects with critical deadlines, this is a great place to learn how.

Whether you are a programmer or not, I definitely want to recommend HackerRank. It provides a very easy environment to get started; picking up new languages, or brushing up on the ones you think you already know. I can see myself doing challenges in languages I want to pick up in the near future, and I expect the perfectionist in me to want to eventually clear all of them.



A creative and meticulous Software Engineer who is passionate about delivering robust and general solutions through an iterative development process.