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.
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.